Inspiration

Andrej Karpathy's Anti-Second-Brain essay nailed it: humans shouldn't curate knowledge bases — LLMs should. I had years of context with people scattered across iMessage, Gmail, and Calendar, and zero way to query any of it. Meeple is the LLM-compiled second brain I wanted.

## What it does

Ingests your iMessage, Gmail, and Calendar into a local SQLite DB, auto-merges contacts across platforms into unified Persons, compiles everything into an Obsidian-compatible markdown wiki (one file per real human, plus indexes), and lets you chat with it via codex CLI, Claude, or GPT — all local, no servers.

## How we built it

Python + async SQLAlchemy on SQLite. Pluggable BaseIngester contract — each platform is ~200 lines. Reverse-engineered Apple's attributedBody blob format to actually recover modern iMessage text. Union-find identity resolution with fuzzy-name fallback. One brain dispatcher routes to whichever LLM backend you've configured.

## Challenges we ran into

Apple's attributedBody is undocumented — had to reverse-engineer the marker bytes and variable-length encoding from hex dumps. Identity resolution only works correctly as union-find, not pairwise. And turning a private hack into a public OSS repo meant ripping out Postgres + Docker for SQLite, plus grep-auditing every line for personal data leaks.

## Accomplishments that we're proud of

pip install and you're running — no server, no Docker, no API key required if you have ChatGPT. Three brain backends behind one runtime. Idempotent everything: re-running any stage is safe. 9/9 tests, smoke-tested end-to-end against real data.

## What we learned

Karpathy is right — a markdown wiki an LLM compiles is fundamentally better than one a human curates. Local-first is a feature, not a constraint: once every byte stays on disk, the design simplifies dramatically. And the ingester contract is the load-bearing abstraction — get it right and everything downstream is free.

## What's next for Meeple

Discord and Slack ingesters (official APIs, no self-bots). Semantic search via sqlite-vec. Apple Photos with face-cluster linking. A Discord-bot mode so Meeple can answer in your server, not just your terminal. And a tool-use loop so the brain can search mid-turn instead of one-shot retrieval.

What's next for Meeple

Built With

Share this project:

Updates