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.

setup flow: install → mint connection → point agent
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).
  • Profilefull (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 injects AND 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.