Public

Littlebird

Littlebird was the packaged Electron memory app whose artifacts triggered one of 1Context’s most important reconstruction efforts. Inside 1Context, it matters less as a product to revive than as evidence: a working example of a capture-and-memory client whose useful behavior was…

Littlebird

Littlebird was the packaged Electron memory app whose artifacts triggered one of 1Context’s most important reconstruction efforts. Inside 1Context, it matters less as a product to revive than as evidence: a working example of a capture-and-memory client whose useful behavior was locked behind another company’s backend. Its current state is archival and derivative. The original app is not being resurrected; Fish inherits selected client behavior and lessons from the Littlebird reconstruction.

Origin

Littlebird entered the project on March 31, 2026, when Paul brought in Littlebird-Mac-arm64-0.77.1-Installer.dmg and asked whether the packaged Electron app could be taken apart honestly enough to rebuild. The DMG was readable, app.asar could be inspected, and ContextKit_LBJSParser.bundle resources were copied into /Users/paulhan/dev/littlebird-reverse.

The first boundary was important: extraction did not recover the original monorepo. It recovered a packaged payload, source maps, native helper clues, and app assets. That made littlebird-reverse a forensic reconstruction project, not a simple restore.

Role in 1Context

Littlebird became a cautionary ancestor for 1Context. Its app showed that valuable memory behavior can exist in a client while the durable truth remains controlled by a hosted service. By April 15, analysis of desktop and mobile builds supported that reading: desktop used IndexedDB, mobile used Drizzle/SQLite, but the server remained the source of truth. Raw captures and recent summaries moved through inputs-db, world-model, ContextKit-cli, and backend APIs rather than living as ordinary renderer chat state.

That finding helped define 1Context’s center. Fish, Guardian, Puter, and other clients could consume a shared memory primitive, but none of them should define it. Littlebird provided the negative proof: if the memory layer belongs to someone else’s backend, later understanding depends on archaeology.

Reconstruction History

On March 31 and April 1, the reconstruction became strict about evidence. Codex created a synthetic monorepo under reconstructed/, recovered hundreds of renderer source files from source maps, and built a validation harness based on byte-for-byte comparison against the distributed app. Identifying tsdown v0.9.9 in .turbo logs allowed the event-bus package to rebuild exactly. The remaining mismatches were narrowed to declaration maps in auth-client and sdk, a Vitest-bundled logger testing file, and the window-event native binary.

The workspace became the private repo lark-v2 with initial commit 7a1f711. Build provenance stayed central. The native window-event addon was tied to macOS SDK 15.5, linker 1167.5, Rust commit 4a4ef493e3a1488c6e321570238084b38948f6db, and rustc 1.94.0. Installing Xcode 16.4 got the local environment closer to the original, though the native binary still did not reach byte parity.

Runtime work then exposed Littlebird’s architecture. Electron spoke to ContextKit-cli over framed stdio JSON, with base64-wrapped ContextKit events in the other direction. Notes identified LiveAppObserver, SystemEventsObserver, SQLite/GRDB, EventKit, Accessibility, Deepgram, and Gemini clues. Comparisons with Screenpipe were practical: both systems pursued capture and local context, but Littlebird split responsibilities through its own helper and native window machinery.

Authentication became the main parity test. The reconstructed shell gained installed-app smoke tests, browser auth replay, direct callback token feeding from https://auth.lilbird.co/oauth/token, and backend-isolated verification. Commits a2055025 and 5f21ae1e recorded the early auth parity work. The key negative result was precise: auth handoff and source-shell behavior could work while live backend bootstrap still hung on “Setting up your Littlebird.”

Expansion Into Fish

By April 3 through April 10, the Littlebird reconstruction began turning into Fish. The goal shifted from merely rebuilding a recovered renderer to making a local-first descendant that could authenticate, remember, and answer without depending on Littlebird’s hosted backend for every operation. Local backend work added bootstrap, subscription, chat SSE, recorder proxy modes, input ingestion, mock account login, logout, MCP verification, and local-agent parity checks.

The UI also became inspectable. Storybook was configured under the reconstructed desktop tree, then expanded into hundreds of stories, flow IDs, route-backed stories, SDK mocks, and verification runs. On April 11, after Paul rejected fake coverage, the catalog reached 397/397 passing stories while still admitting gaps: many routed product areas were feature-only, flow-only, or absent.

Current State

As of the latest relevant entries, Littlebird is an archive, a reconstruction target, and the source ancestor of Fish. The archive expanded from one Mac installer into a cross-platform release corpus: Mac arm64 DMGs from 0.70.0 through 0.77.17, Windows installers, iOS 0.77.8 build 191, and Android 0.77.8 build 140 from an S24. Mac x64 was de-emphasized after renderer assets and source maps matched arm64 byte-for-byte at the 0.77.5 boundary.

Littlebird itself is not the center of 1Context. Its first goal, “recover the original repo,” was corrected to “reconstruct enough to rebuild and understand the artifacts that matter.” Fish carries forward the useful client and UI work. 1Context carries forward the architectural lesson: memory needs owned provenance, authority, and storage, not dependence on a lost backend.

Related Subjects

Littlebird is closest to Fish, littlebird-reverse, lark-v2, ContextKit-cli, and Storybook. Its contrast with Screenpipe helped clarify Puter. Its failure as an externally controlled memory source helped motivate 1Context, alongside Guardian, Wiki.js, and BookStack.

Open Questions

The main unresolved question is how much of Littlebird’s behavior should remain in Fish as inherited product grammar rather than reconstruction residue. The second is archival: the corpus is broad, but the original monorepo, full build provenance, and some native binary parity remain unrecovered.