product-fantasy.com/lifovself-hosted · in production daily

Life Ooverview.

Lif(e) Ov(erview) — your whole life, compressed into one overview. Like everything else here.

The easiest way to retrieve your own data — so AI agents can know you, and co-work with you.

One self-hosted Postgres holds your tasks, events, mood, notes, health and finances. Three interfaces sit on top: a web dashboard for you, a token-efficient CLI for your agents, and a plain HTTP API for everything else.

中文導讀 — Lifov 是我自架的人生作業系統:待辦、事件、心情、筆記、健康、財務,全部進同一顆自己擁有的 Postgres。做它的理由很簡單:AI agent 時代,個人資料不該散在十個 app 裡——一個入口、最省 token 的取用方式,agent 才真的認識你。它怎麼被做出來的在頁尾:一個人+一隊 agent,25 天上線,數字都出自 repo。
01

Your data is everywhere. Your agent needs one door.

資料散在十個地方,agent 要的是一個入口

Look at where your life actually lives right now:

Apple Health Garmin Connect work calendar personal calendar a ledger app a journaling app a todo app kanban.md in some repo screenshots of receipts
↓  one connector per app · one API per vendor · one auth flow each · half of them have no API at all
Lifovone Postgres you own · one interface for everything

Wire an AI assistant to that pile and you’re maintaining a connector zoo — and the next agent starts from zero again. Lifov collapses the wiring: everything lands in one database you own, behind one interface any agent can use. Integrate once, every agent benefits.

02

Retrieval that respects the context window

用最少的 token 把資料取出來:CLI

An agent’s context is a budget. Lifov’s CLI spends it carefully: one line per record by default, full JSON only when asked — and every JSON response is wrapped in a versioned envelope that marks your content as data, not instructions.

$ lifov today todo #212 doing draft weekly newsletter event 09:30 product sync (1h) mood focused 6 sleep 7.5h (82 GOOD) · steps 8,432 · body battery 78 $ lifov event log --title "gym" --dur 45m $ lifov todo done 212 # sample data — real records stay private

No browser automation, no scraping, no per-app connector. If your agent can run a shell command, it already speaks Lifov.

03

One board, two kinds of workers

看板:人看得輕鬆,agent 改得動

Tasks live on a kanban board with real flow semantics — commitment points, WIP limits, discard reasons. You drag cards in the browser; agents move the same cards from the CLI, and every write records who did it, so AI actions stay visible and auditable.

The visualization stays light on purpose — status is one glance for you, one command for the agent. Delegation stops being a copy-paste ritual: put a card on the board, and your agent picks it up.

04

A small core. Everything else is an optional plugin.

核心很小,其他都是可開可關的外掛

core = board · timeline · daily notes · CLI / API — that's the whole spine.

Every domain module docks on only if your life uses it. Enable what you need, ignore the rest — the core never grows heavier:

Finance
Beancount + Fava
plain-text double-entry ledger; dashboards join spending to gear and goals
Health
GarminDB
sleep, steps, stress, body battery — synced nightly, queryable in one line
iOS health
Health Auto Export
Apple Health lands via a phone-side exporter, no vendor cloud in the loop
Mood
40 emotions · CR10 scale
a real taxonomy instead of five emoji — trends join sleep and workload
Works & gear
media log · equipment
books, films, games with append-only notes; gear joined to the ledger
Divination notes
tarot · I-Ching · lots
structured readings with follow-up chains — a life OS should hold all of life
Calendar sync
Google Calendar
external calendars merge into the same timeline
Publish trail
RSS ingestion
everything I publish anywhere, tracked in one 84-day window
Data pipelines
n8n
recurring todos, feeds and schedulers write into the same Postgres
Pomodoro
focus log
off today — and the core doesn’t care. That’s the point.
05

Glue, don't reinvent

不重造輪子:接扛過 production 的服務

Every hard problem inside Lifov is delegated to something the crowd already battle-tested: Postgres for truth, Beancount + Fava for double-entry accounting, GarminDB for wearable sync, n8n for scheduling, Cloudflare for the edge. Each has years of production mileage and a community fixing edge cases I’d hit alone.

Wiring them together is admittedly more tedious than clicking “sign up” on a SaaS. That’s the trade: a bit of plumbing up front, collective intelligence forever — and every part stays replaceable. Lifov’s own code spends its budget on the one thing nobody ships for you: the schema of your life, and the agent interface on top of it.

06

All-in-one, without handing it all to one cloud

資料集中,但不是集中在別人手上

Centralizing your whole life into one database is only a good idea if you are the one holding it. An all-in-one SaaS with this much of you inside is a honeypot with a subscription fee. So Lifov is self-hosted by design:

  • Your box, your Postgres. The single source of truth runs on hardware you control; export is a pg_dump away.
  • Nothing listens on the public internet. Access goes through an encrypted tunnel with edge authentication — two layers — before the API even sees a request.
  • Role-aware responses. The API redacts sensitive fields (health, finance) for lower-trust callers like scheduled automations.
  • Backups leave the box encrypted. Nightly, off-site, restore-drilled.

How it was built這頁本身也是產出物之一

Lifov is also its own proof of method: one person as the requirements provider, a fleet of AI agents as the dev team. Specs live as cards on Lifov’s own board; dev agents implement them test-first in isolated worktrees; a separate reviewer agent adversarially grades every card; design calls are logged as architecture decision records I can veto. Guardrail hooks block the destructive stuff at the tool layer.

25
days to production
963
commits
~98k
lines of TypeScript
3,400+
tests green
24
DB migrations
19
ADRs
49
design docs
source: the repo, measured at v0.3.59 · 2026-07-25 · no marketing rounding
// the card that produced this page — replayed from the real board