Getting Curia running takes around 15 minutes for the minimum setup. The guide is organized into three tiers: a minimum configuration that gets the CLI and web app working, a recommended tier that adds email and semantic search, and a full tier that adds web research and Signal messaging. Complete each tier before moving to the next.Documentation Index
Fetch the complete documentation index at: https://curia.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
| Tier | What you add | What you get |
|---|---|---|
| 1 — Minimum | Anthropic + Postgres | Agents running, CLI and web app working |
| 2 — Recommended | Nylas + OpenAI | Email channel active, semantic search and entity memory working |
| 3 — Full | Tavily + Signal | Web research skill, encrypted Signal messaging |
Prerequisites
Before you start, install the following:- Node.js 22 or later — verify with
node --version - Docker and Docker Compose — Postgres runs in Docker; install Docker Desktop or the standalone CLI
- pnpm — install with
npm install -g pnpm
- Tier 1 — Minimum
- Tier 2 — Recommended
- Tier 3 — Full
Tier 1 gives you a fully running Curia instance accessible via the CLI and web app. Agents are live and responding; email and embeddings are not yet connected.On first run, Curia applies all database migrations and then starts the full stack. You should see log output as the bus, agents, and channels initialize.
Configure your environment
Copy the example environment file:Open Anthropic — your API key from console.anthropic.com. This powers all agents:HTTP API token — a secret for authenticating API requests. Generate any random string:Web app — required to access the knowledge graph browser at Your email and timezone — your primary email prevents your first message from being held as an unknown sender. The IANA timezone is used to resolve relative dates (“next Friday”) in agent prompts:
.env and fill in the values below. Leave everything else at its default for now.Postgres — credentials for the Docker Compose container. You can use any values you like; they just need to match each other:http://localhost:3000. Generate any long random string:Start Postgres
Start the Postgres container with pgvector:The first run pulls the image; subsequent starts are fast. Confirm the container is healthy:
Start Curia
Verify
CLI: In the terminal where Curia is running, type a message at the prompt to interact with it directly.Web app: Open
http://localhost:3000 in your browser. Enter your WEB_APP_BOOTSTRAP_SECRET when prompted. Once authenticated, the knowledge graph browser is available.Checkpoint: Curia is running. Agents are live, the CLI is working, and the web app is accessible. Stop here or continue to Tier 2 to add the email channel and semantic search.
First-time setup
Once Curia is running, open the web app athttp://localhost:3000 and complete the setup wizard. It walks you through naming your instance, setting its persona and voice, and configuring the CEO profile it operates on behalf of. This takes a few minutes and makes every subsequent interaction significantly more useful.
After setup, start a conversation from the CLI:
Troubleshooting
macOS: HTTPS requests fail with 'unable to get local issuer certificate'
macOS: HTTPS requests fail with 'unable to get local issuer certificate'
Node installed via nvm or fnm bundles its own CA store and doesn’t trust macOS system certificates. Export your system certs and point Node at them:Then uncomment this line in
.env:Postgres connection refused
Postgres connection refused
Confirm the Docker container is running:If the container is healthy but Curia can’t connect, verify that the credentials in
.env match the values in docker-compose.yml.Email channel not activating
Email channel not activating
All three Nylas variables must be present:
NYLAS_API_KEY, NYLAS_GRANT_ID, and NYLAS_SELF_EMAIL. If any are missing, the channel disables itself at startup. Check the startup logs for one of these messages:NYLAS_API_KEY/NYLAS_GRANT_ID not set — email channel disabled— the API key or grant ID is missingNYLAS_SELF_EMAIL not set — email adapter disabled— the first two variables are set butNYLAS_SELF_EMAILis missing
Next steps
Configure your instance
Set up multiple email accounts, tune the autonomy engine, and customize security rules.
Core concepts
Understand how agents, skills, memory, and channels fit together.