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
- aiosqlite
- anthropic
- click
- codex-cli
- gmail
- google-api-python-client
- imessage
- obsidian
- openai
- pydantic
- python
- rapidfuzz
- rich
- sqlalchemy
- sqlite
Log in or sign up for Devpost to join the conversation.