LifeDB
Your life, one SQLite file — and any AI agent can read it.
“一切你无法喂给AI的数据,都是白做的。” —— 孙哥
中文 · English · Product Vision
A 32-second movie generated by one command from 295,135 GPS points, 1,668 photos and 125 workouts. Full video →
The problem
You generate more personal data every day than any generation before you — location history, photos, workouts, sleep, heart rate, notes. And it's all stranded: locked in separate apps, on someone else's server, unreachable by the one thing that could actually make sense of it.
Your AI agent can't see any of it. So all of it is wasted.
Google just deleted the Timeline web viewer for billions of users. Your location history shouldn't live on a server that can turn it off tomorrow.
Two promises
🤖 Bring Your Own Agent
LifeDB is not an app. It's a local MCP server — a database your AI agent can actually use.
{ "mcpServers": { "lifedb": { "command": "lifedb-mcp" } } }
That's the entire integration. Claude, or any MCP-capable agent, instantly gains seven tools over your life: what happened that day, where was I that week, build me a map of 2024, how far did I commute. Seven indexed queries — no arbitrary SQL, no full-table scans.
The demos below aren't a product roadmap. They're examples — proof of what agents can build on this contract. The demo layer is yours to extend: connect the MCP, write your app, done.
🔒 Bring Your Own Data
- Nothing leaves your machine. No cloud, no account, no telemetry, no upload. One SQLite file you own, back up, and delete.
- Import adapters are plugins — a manifest + a script. The kernel defines one contract; the community builds the connectors. (Want your app supported? See the wanted list below — PRs welcome.)
- Open format. It's just SQLite. Query it with
sqlite3today, forever. No lock-in, by design.
What people build with it
|
📍 Day Replay One day, replayed in real time: the camera follows your GPS across the city and photos pop up where you took them. Pairs with a cross-modal hero-day card →. Watch full → |
🧭 Trip Replay Multi-day trips stitched into one journey: pass a second date and the tracks concatenate — cross-city stops, photo clusters, a single continuous timeline. Watch full → |
|
📊 Annual Wrapped Spotify-Wrapped-style share cards, 9:16, fully self-hosted. Nights witnessed by GPS, kilograms lifted, cities photographed. |
🗓️ Weekly Review Every Monday, a card lands in your chat: commute times, step rhythm, training volume, resting HR trend. Generated by a cron job through the same MCP tools an external agent would use. |
Every one of these is a demo, not a walled garden. All data flows through the same seven MCP tools listed below.
Quick start
pip install git+https://github.com/SPA3K/lifedb.git # PyPI package coming soon
# or: pipx install git+https://github.com/SPA3K/lifedb.git
life-db init # create your timeline.db
life-db ingest events.jsonl # unified JSONL contract, idempotent
life-db query 2026-10 # one month, every modality
life-db around 2026-10-13T09:00 --window 2h # what happened around then
life-db stats # coverage & counts
Connect your agent (Claude Desktop / Claude Code / any MCP client):
{
"mcpServers": {
"lifedb": {
"command": "lifedb-mcp",
"env": { "LIFEDB_DB": "/path/to/timeline.db" }
}
}
}
MCP tool surface (v0.1)
| Tool | What it gives your agent |
|---|---|
lifedb_stats |
Schema version, modality counts, time coverage |
lifedb_query_month |
Full timeline for a month |
lifedb_around |
Cross-modal events around any moment |
lifedb_geo_track |
Raw GPS track for any window (map rendering) |
lifedb_export_atlas |
One-stop pack: track + events + photos |
lifedb_ingest_jsonl |
The only write path — idempotent, dry-run by default |
lifedb_adapters |
Discover installed data-source plugins |
Tools only grow, never change or disappear — that's the contract.
Data sources
Adapters are plugins: one JSON manifest + one script, discovered automatically. Currently supported:
| Source | Data | Mode |
|---|---|---|
| Phone GPS tracks | 11 years of second-level points | periodic |
| 训记 (xunji) | Strength workouts: sets, volume, movements | periodic |
| Apple Health export | Sleep, workout routes, ECG, metrics | manual |
| Google Timeline | Stays & segments | manual |
| Photo libraries | EXIF GPS → photo layer | manual |
| iCloud sync | Automated download pipeline | periodic |
Wanted — PRs welcome: Hevy / Strong / Strava CSV · GPX / FIT · Google Takeout (new Records.json) · Obsidian vault · Keep / Mi Fitness / Huawei Health · Garmin export. See docs/PRODUCT.md §3.3 for the interface contract — a manifest and a script is all it takes.
Architecture
Your agent Claude / Cursor / anything that speaks MCP
⬇ stdio (localhost only)
MCP server lifedb-mcp — the contract (7 tools, no arbitrary SQL)
⬇
Kernel SQLite timeline.db + unified JSONL import layer + CLI
⬇
Your data phone GPS · workouts · health · photos · timeline
Docs
- Product vision & roadmap — architecture, wanted adapters, phases
- Kernel design · Ingestion guide
- PRD (feature specs)
⭐ Star it
If your AI agent can finally see your life — star the repo. It's the only distribution a local-first, zero-marketing project gets.
Want an adapter that's missing? Open an issue or grab one from the wanted list above — a manifest and a script is all it takes.
License
MIT — see LICENSE.
Metadata
Release files for lifedb 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lifedb-0.1.0.tar.gz | 17.6 kB | Without provenance | Details for lifedb-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lifedb-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for lifedb-0.1.0-py3-none-any.whl |
Total release size: 33.2 kB
Release files / lifedb-0.1.0.tar.gz
| Download URL | lifedb-0.1.0.tar.gz |
|---|---|
| Size | 17.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
88b204f90a54c0b4d32fdd53f296a0f47caaa964215bd86c18270e5771812582
|
|
BLAKE2b-256 checksum How to use checksums |
efd98509620791856e12a218a7b727d1e2f2c9a1b58fa793963e6485d981c5f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Release files / lifedb-0.1.0-py3-none-any.whl
| Download URL | lifedb-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6714481cd5953be4cf6b7675273e1622b2587f6a58dd78fa568cab89997305d0
|
|
BLAKE2b-256 checksum How to use checksums |
3860f6448e65697311adb1f3d04cf52235619a4eeec84abb2452107de18ed675
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Security for lifedb 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.