Public

Fish

Fish is the branded desktop descendant of Littlebird, built from the reconstructed Electron app while replacing its hosted assumptions with local backend behavior and 1Context-facing memory expectations. Inside 1Context, Fish is not the center of the memory system; it is a client…

Fish

Fish is the branded desktop descendant of Littlebird, built from the reconstructed Electron app while replacing its hosted assumptions with local backend behavior and 1Context-facing memory expectations. Inside 1Context, Fish is not the center of the memory system; it is a client and inheritance path that preserves useful Littlebird behavior, UI knowledge, and reverse-engineering evidence. As of April 21, 2026, it exists as an installable macOS app at /Applications/Fish.app, with branded metadata, bundled dependencies, local mock-profile machinery, and a prerelease tag fish-v0.77.1-dev1.

Origin

Fish emerged from the Littlebird reconstruction work after the recovered desktop app stopped being only an artifact and started becoming something that could run, authenticate, remember, and answer locally. On April 3, the source-shell milestone hardened into a local app identity: visible branding changed to Fish/blue, the launcher targeted the assembled Electron app, .env.production moved away from dead api.littlebird.ai assumptions toward app.lilbird.co, and ContextKit gained an EPIPE guard. Commit e2c45851 recorded that milestone hardening.

The pressure behind Fish was practical. Littlebird’s recovered client contained useful behavior, but relying on the original hosted backend would have made the reconstruction brittle and dependent on an external service shape. Fish was the answer: keep the client knowledge, replace the unavailable service assumptions with local backend contracts, and make the result inspectable enough for agents to modify.

Role in 1Context

Fish is a consumer and proving ground for 1Context, not 1Context’s governing architecture. The April 15 correction matters: Fish preserves client behavior and reverse-engineering knowledge, but it does not define the protected memory layer. That distinction prevents a recovered Electron app from forcing 1Context to inherit Littlebird’s backend model.

Its role is closest to a reconstructed client laboratory. It tests how local memory, mock accounts, Guardian-style relay chat, packaged desktop identity, and UI cataloging behave when grafted into a complex inherited app. It also supplies evidence about which Littlebird patterns are worth carrying forward and which are merely historical baggage.

Fish’s memory model was described early in docs/memory-system.md: ContextKit captures, searchable user context, EchoNotes, world-model notes, and chat context. Paul explicitly held off vector database work at that stage. Lexical local memory came first because the goal was to make Fish answer from local evidence before adding heavier retrieval machinery.

History

On April 3, Fish gained a local backend under reconstructed/scripts/local-backend.mjs. That backend learned /debug/requests, /update_user_data, /new_chat, chat_v4 SSE, recorder proxy modes, bootstrap, subscription, client-tool registration, and input ingestion. Authentication followed the same local-first discipline: silent auto-seeding gave way to mock account login/logout, then logout sequencing was fixed. Commits b798126c, 51f071e8, and b5a1a601 added local auth, MCP verification, logout repair, and a local-agent parity harness whose verification returned "ok": true.

By April 9 and 10, Fish was being pulled toward Guardian chat. A Guardian integration worktree added relay types, backend calls, sendConversationMessage, and bridges into existing SDK stores. The result exposed the cost of the inheritance: Guardian’s React Native app was already shaped around Guardian Lab Relay, while Fish had to graft the relay contract into a preexisting Electron SDK and MobX chat system. For demo purposes, the branch-local Electron runtime launched with --disable-web-security and persistent app data.

In parallel, Storybook became Fish’s inspection layer. The recovered app gained hundreds of stories, flow IDs, source extractions for 0.77.1, 0.77.5, and 0.77.7, and a searchable catalog. On April 11, Paul rejected fake route coverage, leading to a real-route harness, SDK mocks, shared chat and meeting route stories, auth callback seams, public invalid-link states, and a 397/397 story verification run. The audit still admitted gaps: many routed product areas were not yet represented by direct real-code stories.

April 13 clarified the split between trees. The newer normalized littlebird-reverse tree on branch installers/all-platforms launched plain Fish from fish/desktop, while /Users/paulhan/dev/littlebird-reverse-guardian-chat/reconstructed on codex/guardian-chat-parity still held the packaged Guardian Fish relay bridge and mock-profile backend. The backend was restarted from reconstructed/scripts/local-backend.mjs, mock auth endpoints returned 200, and the installed Guardian Fish app relaunched against local profile machinery.

On April 20, Fish work focused on repo discipline: artwork extraction, professionalization docs, structure-normalization, workspace-boundary audits, and a hardened reverse-engineering archive at 04fd31a2 that excluded 19 oversized Windows installers. Local demo packaging proved seeded profiles through assembled runtimes.

Current State

As of April 21, Fish has its own visible identity. Paul interrupted packaging work to make the requirement explicit: use the fish logo and call the app Fish. The desktop package changed names, icons, bundle metadata, and release assembly, then installed as /Applications/Fish.app with CFBundleIdentifier=com.hapticasensorics.fish.

The first installed app crashed because the package omitted dependencies such as node-machine-id. The packager was changed from a single-package stub to a dependency bundle, after which the app stayed open. A prerelease followed as fish-v0.77.1-dev1, with a remote MacBook Air release-bench document so future installs could be tested in a visible GUI session.

Relationships and Open Questions

Fish is most closely related to Littlebird, Guardian, Guardian Lab Relay, Storybook, and 1Context. It inherits from Littlebird, borrows chat ambitions from Guardian, uses the relay contract as an integration target, relies on Storybook to make recovered UI inspectable, and consumes 1Context rather than defining it.

The main open question is how much of Fish remains a transitional reconstruction and how much becomes a durable 1Context client. Its packaging, branding, local backend, and UI catalog are real enough to preserve. Its long-term product boundary is less settled.