An open-source Digital Office of the CEO — communications, scheduling, research, and knowledge work with governance-first architecture.
Website · Documentation · Contributing · Security
CEOs of knowledge-work companies are buried in digital operations — email, scheduling, research, information processing. The traditional answer is an executive assistant, but the cycle is brutal: hire, invest six months training, watch the institutional knowledge walk out the door when they leave.
Curia is a coordinator and team of specialist agents that handle your communications, scheduling, research, and knowledge work — running continuously on your own server, with institutional memory that compounds over time and never walks out the door. Define agents in YAML, extend with custom skills, connect any channel.
Every action is logged. Every decision is traceable. Every agent stays in its lane.
| Typical Agent Framework | Curia | |
|---|---|---|
| Security model | "Trust the agent" | Hard-enforced layer separation — channel adapters physically cannot invoke tools |
| Self-modification | Agents can edit their own prompts, tools, and code at runtime | Agents cannot modify themselves — new skills, agents, and prompts always require human approval |
| Audit trail | Console.log | Append-only Postgres with causal tracing across every event |
| Institutional memory | Conversation history + flat files (lost or stale across restarts) | Knowledge graph + entity memory + temporal decay (survives restarts, ages gracefully) |
| Error handling | Retry and hope | Error budgets, state continuity, pattern detection — agents resume, not restart |
| Agent coordination | Agents work in isolation | The Bullpen — structured, auditable, threaded inter-agent discussions |
| Multi-channel | Many channels, often without consistent security boundaries | Email, Signal, CLI, HTTP API — every channel shares the same security model and audit trail |
| Autonomy | All or nothing | Five configurable bands — from advisory-only to fully independent, with intent drift detection |
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. Every event is audited.
Agents are defined in YAML. No code required for simple agents:
name: expense-tracker
description: Tracks and categorizes expenses from receipts and emails
system_prompt: |
You are an expense tracking assistant for a CEO.
Extract amounts, vendors, categories, and dates from receipts.
pinned_skills:
- email-parser
- spreadsheet-writer
memory:
scopes: [expenses, vendors, budgets]
schedule:
- cron: "0 9 * * 1"
task: "Generate weekly expense summary"
error_budget:
max_turns: 20
max_cost_usd: 1.00Need custom logic? Add a TypeScript handler — same config, plus hooks for onTask, onSkillResult, and beforeRespond.
Skills come in two flavours (local handlers and MCP servers) behind a single interface. Agents discover new skills automatically; sensitive skills require your approval on first use.
Agents → · Skills → · Channels → · Security →
Prerequisites: Docker, Node >= 24, pnpm, and an Anthropic API key.
git clone https://github.com/josephfung/curia.git
cd curia
pnpm run setupCuria will be running at http://localhost:3000. The setup script prints your bootstrap secret — save it to a password manager and use it on the login page to create your account.
→ Full installation guide
(channels, production deploy, configuration reference)
Curia is in early development and welcomes contributions — including AI-assisted ones.
- Read the Contributing Guide for dev setup, code standards, and how to add channels, skills, and agents
- Read CLAUDE.md for repo-level conventions (if you're using Claude Code, these load automatically)
- Check open issues — look for
good first issuelabels - Report security vulnerabilities via SECURITY.md — not public issues
We evaluate code quality, not authorship. AI-generated contributions are held to the same review standards as human-written code. See the AI contributions policy for details.
