005
Nexus
A local-first personal AI operating system — a fleet of specialized agents that share one SQLite brain, so each one acts on what the others already know.
01 — Why I built this
Most AI assistants are a handful of disconnected chatbots: a job tool here, a notes app there, none of them sharing what they know. I wanted the opposite — one private system where specialized agents read and write the same memory, so work flows between them. In Nexus a single SQLite file holds my notes, goals, journal, jobs, inbox, and projects, and every agent acts on that shared context. An interview email doesn't just get flagged; it moves the matching job to "interviewing." My journal's themes quietly steer what the morning brief brings me. The shared context is the product. It runs entirely on my machine — filesystem and inbox access are exactly why it should stay local.
02 — How it works
Gmail, job boards, journal, goals, and git repos feed one shared SQLite brain that every agent reads and writes — then writes back out to job status, calendar, the knowledge graph, and the council
The first screen each day: an alert strip of only time-sensitive items, today's agenda with one-click goal check-ins, the morning-brief digest, a filterable agent feed, and an agent-health row — all from one /api/home call that aggregates across every agent.
03 — What was hard
- Shared context as the contractEvery agent reads and writes one SQLite file, so the schema is the real API. Getting the tables right — jobs, notes, goals, agent_runs — mattered more than any single agent, because that shape is what lets work flow between them.
- Cross-agent actions without chaosThe email agent writes into the job board — flipping a status to interviewing, creating an application from a confirmation email — which means agents act on each other's data. Matching companies and guarding against bad writes took careful rules.
- Local-only and read-only by designGmail stays gmail.readonly (never sends or deletes), filesystem reach is sandboxed to a configured project list, and nothing binds to a public interface. Privacy is the architecture, not a setting.
- Observability for unattended agentsAgents run on cron, so I instrument every run and Claude call into agent_runs / agent_usage — run history, errors, next run, and estimated spend — best-effort, so telemetry can never break an agent.
- Graceful degradationEach agent no-ops with a clear status when its key is missing, so the app never crashes on a half-configured setup and I can enable agents one at a time.
04 — By the numbers
05 — Links
Nexus is local-first by design — it runs on localhost against your own API keys and is never exposed publicly, so there is no live demo to link.