Connect
Point your agent at it. BYOK.
Ouroboros doesn't pick a model for you and doesn't ship a built-in cloud key. You bring Claude Code with your Anthropic key, Codex with your OpenAI key, Cursor with whatever you've configured there — or run fully local against Ollama. Three steps.
flowchart LR
I[1. Install Ouroboros<br/>daemon + tray app] --> M
M[2. Click Approve<br/>in tray<br/>→ scope + bearer] --> P
P[3. Drop bearer in<br/>your agent's MCP config] --> R[Run<br/>sophia.orient ✓] 1 · Install Ouroboros
Packaging is in flight. When it ships you'll get one-line installers for Linux
(.deb), macOS (.dmg), and Windows (.exe) that
drop the daemon, the tray app, and the CLI in the right places. Until then, the source
is closed and the install path is "build it yourself with bun."
2 · Mint a connection
Open the tray and click New connection. You'll pick:
- Display name — shows up in your audit log and in coordination posts (e.g.
OpusDev-DataHome). - Profile — full (read + write), read-only, or scoped read.
- Entity scope — which entities the agent can see. A connection scoped to
["acme"]literally cannot return rows for any other entity, because every read query injectsAND e.id IN (?)in SQL at the daemon layer.
Click Approve. The tray writes a bearer token to a file only your OS user can read at mode 0600. You're done in the tray.
3 · Point your agent at it
Drop the bearer into your agent's MCP config. Three of the most common shapes:
Claude Code
Add to ~/.config/claude/mcp.json (or per-project .mcp.json):
{
"mcpServers": {
"sophia": {
"type": "http",
"url": "http://127.0.0.1:8765/mcp",
"headers": {
"Authorization": "Bearer ${SOPHIA_BEARER}"
}
}
}
}
Set SOPHIA_BEARER in your shell, restart Claude Code, and the
sophia.* tools light up.
Codex
Add to ~/.config/codex/mcp.toml:
# ~/.config/codex/mcp.toml
[[mcp_servers]]
name = "sophia"
transport = "http"
url = "http://127.0.0.1:8765/mcp"
[mcp_servers.headers]
Authorization = "Bearer ${SOPHIA_BEARER}" Cursor
Add to .cursor/mcp.json at your repo root:
// .cursor/mcp.json
{
"mcpServers": {
"sophia": {
"url": "http://127.0.0.1:8765/mcp",
"headers": { "Authorization": "Bearer YOUR_BEARER_HERE" }
}
}
} Custom agent
Any MCP-speaking client works. Point it at http://127.0.0.1:8765/mcp with
the bearer in the Authorization header. Streamable HTTP and stdio transports
both supported.
The first call
From any agent, the first call is always the same — a single tool call that orients the whole session. One call replaces six.
// First call from any agent — replaces six.
const ctx = await sophia.orient();
// → sync status · hot entities · open questions ·
// recent corrections you've made · which skills
// are loaded · what to call next.
// One TypeScript snippet, multiple sophia.* calls,
// one round trip. The daemon runs it inside a
// sandboxed V8 isolate.
const result = await sophia.execute_code({ code: `
const [facts, docs] = await Promise.all([
sophia.queryKnowledge({ entity_name: 'acme', limit: 20 }),
sophia.searchDocuments({ query: 'lease amendment', k: 10 }),
]);
return { facts, docs };
` }); A fresh agent session is fully oriented in roughly 1,800 tokens — it knows what you were working on, what you corrected yesterday, and which entities are in scope for this connection.
Providers
Your key. Your model. Your call.
Ouroboros doesn't ship a built-in cloud LLM and doesn't silently fall back to a vendor key. If a task needs inference, the provider registry throws an error when nothing is configured — instead of degrading to a model you didn't pick.
Configure providers from the tray's Settings page. Common shapes:
- Anthropic — drop your API key. Claude Code, Codex-style agents, custom Anthropic SDK clients all work.
- OpenAI / OpenAI-compatible — your key (or your local OpenAI-compat endpoint). Codex, Cursor, custom SDK clients.
- Gemini — your key from AI Studio.
- Ollama — for fully local mode. One option among many, not the default. Works well as a no-cost fallback for batch work.
The system never picks a model for you, never silently spends, never embeds a vendor key in the binary.