About this project

Curia is an open-source multi-agent coordination system designed to serve as a digital office for executives and knowledge workers. Rather than relying on a single assistant, it deploys a coordinator plus a team of specialist agents that handle communications, scheduling, research, and knowledge work continuously on your own infrastructure. The project's defining philosophy is governance-first architecture. Unlike typical agent frameworks that trust agents to behave, Curia enforces hard layer separation: channel adapters physically cannot invoke tools, agents cannot modify their own prompts or code at runtime, and every action is logged to an append-only Postgres database with causal tracing. New skills, agents, and prompts always require human approval. Agents are defined in YAML with no code required for simple cases. Each agent can declare a system prompt, pinned skills, memory scopes, cron schedules, and error budgets (max turns, max cost). For custom logic, TypeScript handlers can be added with hooks for onTask, onToolResult, and beforeRespond. Skills come in two flavors — local handlers and MCP servers — behind a single interface, and agents discover new skills automatically while sensitive skills require approval on first use. The architecture consists of five layers connected by a message bus: four domain layers with hard security boundaries plus a System layer for trusted cross-cutting infrastructure. No layer can call another directly, and every event is audited. Institutional memory is implemented via a knowledge graph with entity memory and temporal decay, surviving restarts and aging gracefully rather than relying on flat conversation history. Multi-channel support includes Email, Signal, CLI, and HTTP API, all sharing the same security model and audit trail. The Bullpen provides structured, auditable, threaded inter-agent discussions. Autonomy is configurable across five bands — from advisory-only to fully independent — with intent drift detection. Deployment is Docker-based. An operator install pulls a published image, generates secrets, runs migrations, and prints a bootstrap secret; the app runs at localhost:3000. A developer install from source requires Node >= 24, pnpm, and Docker for the Postgres container. Releases are signed with cosign (keyless via GitHub OIDC), and the SBOM, source tarball, and install bundle each ship with verifiable .sigstore bundles. The project is licensed under MIT and is in early development (version 0.43.0), welcoming contributions including AI-assisted ones.