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.
One Postgres.
Every client.
Borg runs as a single borg-engine behind your enterprise endpoint. Claude Code, Codex CLI, Copilot, and Kiro authenticate to the same MCP service and read from the same namespace-scoped graph.
No SDKs, no lock-in
The client surface is seven MCP tools covering compilation, ingestion, recall, full episode fetch, soft deletion, action guarding, and deterministic project summaries.
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.
One managed endpoint.
Every client connected.
We provision PostgreSQL, configure Azure OpenAI and Entra OAuth, map namespace access to Entra groups, and hand your team a single HTTPS MCP endpoint.
Your deployment contract
https://YOUR_BORG_HOST/mcp is the shared MCP URL. OAuth-capable clients discover Entra authorization metadata and complete PKCE sign-in automatically. REST clients send an Entra bearer token to /api/*.
Need a deployment? Contact us ↗
Four verified clients,
one config pattern.
Codex connects natively. Clients that need a local command usemcp-remote@0.1.28 as the OAuth bridge, with a unique callback port and auth directory per client.
// .mcp.json at project root
{
"mcpServers": {
"borg": {
"command": "npx",
"args": ["-y", "mcp-remote@0.1.28", "https://YOUR_BORG_HOST/mcp", "35535"],
"env": {"MCP_REMOTE_CONFIG_DIR": "~/.borg-mcp/claude"}
}
}
}# ~/.codex/config.toml [mcp_servers.borg] url = "https://YOUR_BORG_HOST/mcp" # authenticate once codex mcp login borg --scopes access_as_user
// ~/.kiro/settings/mcp.json
{
"mcpServers": {
"borg": {
"command": "npx",
"args": ["-y", "mcp-remote@0.1.28", "https://YOUR_BORG_HOST/mcp", "35536"],
"env": {"MCP_REMOTE_CONFIG_DIR": "~/.borg-mcp/kiro"},
"autoApprove": ["borg_think", "borg_learn", "borg_recall", "borg_get_episode", "borg_guard", "borg_project_summary"]
}
}
}// .vscode/mcp.json
{
"servers": {
"borg": {
"command": "npx",
"args": ["-y", "mcp-remote@0.1.28", "https://YOUR_BORG_HOST/mcp", "35537"],
"env": {"MCP_REMOTE_CONFIG_DIR": "~/.borg-mcp/copilot"}
}
}
}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.
| Tool | Global instructions | Project instructions | Hooks |
|---|---|---|---|
| Claude Code | ~/.claude/CLAUDE.md | CLAUDE.md | PostSession |
| Codex CLI | ~/.codex/AGENTS.md | AGENTS.md | none native |
| Kiro CLI | ~/.kiro/steering/AGENTS.md | AGENTS.md · .kiro/steering/*.md | stop · postToolUse · agentSpawn |
| GitHub Copilot | n/a | copilot-instructions.md | none native |
Not an MCP client?
Same tools over REST.
Core operations are available over authenticated REST for webhooks, CI, administrative tools, and legacy applications.
Ingest an episode
POST /api/learn
Authorization: Bearer <Entra access token>
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
Authorization: Bearer <Entra access token>
content-type: application/json
{
"namespace": "product-engineering",
"query": "why did we move off Semantic Kernel?",
"model": "claude",
"task_hint": "architecture"
}Full API reference. Every endpoint.
Every endpoint, schema, and parameter. Your deployed Borg exposes its live Swagger console at /docs when enabled.
OPEN ↗/featuresFeatures, with tradeoffs.
Every capability plus the decision it implies. Fragmentation over collision. Supersession over overwrite.
OPEN ↗