← All projects
Active

Nexus

Unified agent platform

Status
Active
Primary Stack
TypeScript · Express · PostgreSQL
Depends On
Forge
Live Link

Every project I built kept reinventing the same backend pieces — jobs, tools, knowledge, messaging. Nexus is the shared substrate so the next ten projects don't have to.

Nexus schematic — a central hub with seven radiating spokes

Every project I built kept reinventing the same four things — a job queue, a tool registry, a knowledge store, and an inbox. I’d written three different job queues by the time I started Nexus. So I stopped, took the best ideas from each, and built one substrate that ARIA and every future agent would share. Seven agents run on it today — ARIA for personal assistance, Infra for the home lab, Inference for model routing, Coder for code maintenance, Insight for pattern surfacing, Circle for social, and Chronicler for interviews and biographical memory. Chronicler is the only one that runs on the cloud — it uses Claude Opus for the interview work because the rapport is worth the latency.

Monorepo with four workspace packages — @nexus/core, @nexus/api, @nexus/mcp, and @nexus/worker. Config-driven agents run short cycles on schedules or triggers, execute tools, and talk to each other through inbox-only messaging — no shared memory, no direct function calls between agents, just messages. The worker pool autoscales elastically across Furnace and Crucible, picking up jobs from a 254-table Postgres that’s ingested 163K photos, 358K knowledge facts, and 59K emails so far. @nexus/mcp exposes the whole thing to Claude and other MCP clients so I can query the platform from my editor — 361 tools in total, 307 of them from ten MCP servers, the rest internal handlers.

The real pride here isn’t the agents — it’s the operational discipline baked into them. Every recurring handler has a self-chain pile-up guard so a slow cycle can’t compound into a thousand queued jobs. Every service has a health watchdog that restarts on crash and escalates if it can’t recover. Every knob that might ever change lives in the database, not in code — feature flags, thresholds, schedules, model selections, notification preferences. In April I retired an eighth agent called Pipeline after its cycle loop started re-seeding hallucinations into peer agents’ memory; the fix was a migration that scrubbed sixty-four poisoned memories across the affected agents. Configuration is data, behavior is data, and the code is the same for everyone. Twenty years of IT lessons, baked in from day one.

TypeScriptExpressPostgreSQLNext.jsMCPForge
Showcase ↗