§ /integrations — claude code · codex · copilot · kiro

Any MCP client,
one memory.

Point every agent at the same Borg. No per-client SDKs, no per-client memories — the graph is shared by the database, not by passing bytes around.

transport · MCP · streamable HTTPport · 8080/mcpclients · 4 verified · 1 soon
§ 01 — OVERVIEW

One Postgres.
Every client.

The OSS release runs as a single borg-engine listening on :8080/mcp. Every MCP client — Claude Code, Codex CLI, Copilot, Kiro — points at the same endpoint and reads from the same graph.

No SDKs, no lock-in

The entire client surface is three MCP tools: borg_think, borg_learn, borg_recall. If your agent speaks MCP over streamable HTTP, it can use Borg unchanged.

Share memory across tools

Claude Code writes. Codex reads. Copilot queries. One Postgres. No synchronization daemon, no cross-SDK pipeline — just a shared namespace on a shared engine.

§ 02 — ZERO-SDK INSTALL

Two commands.
Everything wired.

install.sh detects Docker, starts the stack, writes your OpenAI key, and installs the borg CLI. borg init detects which tools you use and writes the right project config.

# one command — brings up Postgres + borg-engine + CLI
curl -fsSL https://raw.githubusercontent.com/villanub/borgmemory/main/install.sh | sh

# in any project — detects Claude / Copilot / Codex / Kiro
cd your-project
borg init
§ 03 — CLIENT SETUP

Four verified clients,
one config pattern.

Every client below is wired through mcp-remote for local MCP over HTTP. borg init generates these snippets for you; they're shown here for reference.

Claude Codeverified
// .mcp.json at project root
{
  "mcpServers": {
    "borg": {
      "command": "bash",
      "args": ["-lc", "exec npx -y mcp-remote http://localhost:8080/mcp 35535"]
    }
  }
}
Project instructions live in CLAUDE.md, generated by borg init.
Codex CLIverified
# ~/.codex/config.toml
[mcp_servers.borg]
command = "bash"
startup_timeout_sec = 30
args = [
  "-lc",
  "exec npx -y mcp-remote http://localhost:8080/mcp 35534 --resource http://localhost:8080/mcp",
]
Start a fresh Codex session after editing config and it will launch the Borg MCP process automatically.
Kiro CLIverified
// ~/.kiro/settings/mcp.json
{
  "mcpServers": {
    "borg": {
      "command": "bash",
      "args": ["-lc", "exec npx -y mcp-remote http://localhost:8080/mcp 35536"],
      "autoApprove": ["borg_think", "borg_learn", "borg_recall"]
    }
  }
}
Kiro supports global and local MCP settings, per-agent mcpServers, plus steering files and richer hooks.
GitHub Copilotverified
// .vscode/mcp.json
{
  "servers": {
    "borg": {
      "command": "bash",
      "args": ["-lc", "exec npx -y mcp-remote http://localhost:8080/mcp 35537"]
    }
  }
}
Copilot reads MCP config from .vscode/mcp.json. Project instructions live in copilot-instructions.md.
§ 04 — INSTRUCTIONS & STEERING

Tell each client
when to consult memory.

Memory is only useful if the agent calls for it. The hook + instruction matrix below keeps behavior consistent across tools.

ToolGlobal instructionsProject instructionsHooks
Claude Code~/.claude/CLAUDE.mdCLAUDE.mdPostSession
Codex CLI~/.codex/AGENTS.mdAGENTS.mdnone native
Kiro CLI~/.kiro/steering/AGENTS.mdAGENTS.md · .kiro/steering/*.mdstop · postToolUse · agentSpawn
GitHub Copilotn/acopilot-instructions.mdnone native
§ 05 — REST FALLBACK

Not an MCP client?
Same tools over REST.

Every MCP tool has a REST mirror. Ingest episodes from webhooks, CI, or legacy apps with plain HTTP.

Ingest an episode

POST /api/learn
content-type: application/json

{
  "namespace": "product-engineering",
  "content": "We moved Customer Portal off Semantic Kernel to Azure AI Foundry on Mar 10.",
  "source": "slack:#eng-arch",
  "occurred_at": "2026-03-10T15:04:00Z"
}

Compile context

POST /api/think
content-type: application/json

{
  "namespace": "product-engineering",
  "query": "why did we move off Semantic Kernel?",
  "model": "claude-sonnet-4.5",
  "task_hint": "architecture"
}