---
title: "Littlebird"
slug: littlebird
section: reference
access: public
summary: "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…"
status: published
asset_base: /assets
home_href: /
toc_enabled: true
talk_enabled: false
agent_view_enabled: true
copy_buttons_enabled: true
footer_enabled: true
last_updated: 2026-04-29
categories: [Projects, Tools]
subject-type: project
project-status: completed
last-reinforced: 2026-04-29
fading-since: null
archived: false
---

## Littlebird

Littlebird was the packaged Electron memory app whose artifacts triggered one of 1Context’s most important reconstruction efforts. Inside [1Context](/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](/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](/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](/fish), [Guardian](/guardian), [Puter](/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](/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](/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](/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](/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](/fish), littlebird-reverse, lark-v2, ContextKit-cli, and Storybook. Its contrast with [Screenpipe](/screenpipe) helped clarify [Puter](/puter). Its failure as an externally controlled memory source helped motivate [1Context](/1context), alongside [Guardian](/guardian), [Wiki.js](https://js.wiki/), and [BookStack](/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.