A unified semantic memory backend that works across Copilot, Claude, ChatGPT, Cursor, Gemini, and more. Search by meaning, not keywords. Your data stays yours.
Original architecture by Nate B Jones · Extended & self-hosted by Scott Nichols
Open Brain captures decisions, preferences, project context, and people — then surfaces them exactly when your AI needs them.
Search by meaning, not keywords. A fast vector index on top of Postgres finds related thoughts in milliseconds — even when the exact words don't match.
Every thought is automatically classified: type, topics, people mentioned, action items, dates. No manual tagging needed.
Built on the Model Context Protocol standard. Works with any MCP-compatible client — Copilot, Claude, ChatGPT, Cursor, Gemini.
Run on your own hardware with Docker, K8s, or your homelab. Your memories never leave your infrastructure.
Battle-tested Postgres with pgvector for embeddings. Single table, rich JSONB metadata, HNSW indexing for fast retrieval.
A Docker Desktop dev box gets you running on your laptop in minutes. Or pick cheap-hosted, on-prem K8s, or Azure managed when you're ready.
If you use Plan Forge for agentic project execution, Open Brain is the memory layer. Agents capture decisions, patterns and postmortems during a phase, then retrieve that context in future projects — nothing locked to a single tool, vendor or chat window.
How the two systems integrateOpen Brain is Plan Forge's permanent, cross-project memory tier (its “L3”). Skills search before acting and capture after, so every project builds on the last.
Every write carries a signed envelope (“Hallmark provenance”) with contentHash, codeHash, phase and tool. You can always trace a memory back to the exact source file and commit.
When Open Brain is unreachable, Plan Forge queues writes to .forge/openbrain-queue.jsonl and drains them later. No thought lost.
One architecture, every AI client. Thoughts flow in, get embedded and tagged, and are instantly searchable.
Any MCP client talks to one server. The server embeds, classifies, and stores. The database is just Postgres.
Your AI tool calls capture_thought via MCP. You can also capture via Slack webhook, REST API, or bulk import from Notion, Obsidian, and other tools. v0.7.0+: optional Hallmark provenance metadata adds source-hash traceability.
The thought is embedded into a vector (via OpenRouter or local Ollama) and an LLM extracts metadata — type, topics, people, action items — all in parallel, typically under 3 seconds.
Stored in PostgreSQL + pgvector. Single thoughts table with HNSW index for sub-millisecond vector search, GIN index for metadata filtering.
Any MCP client calls search_thoughts to find memories by meaning. Your decision from three weeks ago? Found instantly, even if the words are different.
{
"id": "f9d3a4c1-8e12-4a7b-9d3f-1c2b3a4d5e6f",
"content": "Decided on pgvector + HNSW for semantic search — keeps everything in one Postgres instance instead of running Pinecone.",
"type": "decision",
"topics": ["architecture", "database", "vector-search"],
"people": ["scott"],
"created_by": "claude-desktop",
"created_at": "2026-05-18T03:42:11Z",
"metadata": {
"provenance": { "tool": "plan-forge", "phase": "design", "contentHash": "sha256:…" }
}
}
Plus a 768-dimension embedding vector beside it for similarity search.
Every operation is available as an MCP tool and as a REST endpoint. Clients can probe GET /health for the capabilities[] array (v0.7.0+).
search_thoughts
Semantic vector search — find by meaning
capture_thought
Store a thought with auto-embedding
capture_thoughts
Batch capture multiple thoughts at once
list_thoughts
Filter by type, topic, person, or date
update_thought
Edit content and re-embed
delete_thought
Remove a thought by ID
thought_stats
Aggregate stats, top topics, top people
Five paths, same MCP tools and AI clients. Pick the one that matches how you want to use it.
Win/Mac laptop, ~10 minutes, fully local & private. Ollama on host, everything else in Docker.
Headless server, NAS, Raspberry Pi, or VPS. Same compose stack, no Docker Desktop required.
Always-on, accessible anywhere. Supabase or Neon for Postgres + Fly.io for the MCP server.
Homelab / on-prem cluster, Tailscale Funnel, MetalLB, Ollama GPU, monitoring integration.
One-command Bicep deploy: Container Apps + Azure PostgreSQL Flex + Azure OpenAI + Key Vault.
Open Brain is provider-agnostic. We ship Bicep for Azure; the same architecture maps to ECS / Cloud Run + RDS / Cloud SQL + Bedrock / Vertex AI.
See the mapping table →Paste-into-your-AI prompts that install Open Brain for you. One prompt per path, plus a “help me decide” picker.
60-second universal smoke test. Captures, searches, cleans up — works against any deployment URL.
What to actually do once it’s running — first captures, search patterns, building the habit.
One memory backend, every AI client. Open Brain speaks MCP so your tools don't need to.
One setup script or one prompt — your AI does the rest.
Open Copilot Chat (Agent Mode), Claude Code, or Cursor in your project — paste this prompt. The AI checks prerequisites, asks a few questions, generates your .env, starts Docker Compose, configures your client, and verifies everything works.
I want to set up Open Brain — a persistent semantic memory system for AI tools.
Clone https://github.com/srnichols/OpenBrain.git (or use the existing repo if already cloned).
Follow these steps exactly:
1. Check prerequisites: Verify Docker, Docker Compose, and optionally Ollama are installed.
2. Ask me these questions (wait for answers before proceeding):
- Which embedding provider? (ollama = free/local, openrouter = cloud/paid, azure-openai = Azure)
- If openrouter or azure-openai: What are the API credentials?
- Which AI client should I configure? (VS Code Copilot / Claude Desktop / Claude Code / Skip)
3. Generate .env from .env.example with a secure random MCP_ACCESS_KEY and DB_PASSWORD.
Set DB_HOST=postgres, OLLAMA_ENDPOINT=http://host.docker.internal:11434 if using Ollama.
4. Run: docker compose up -d --build
5. Wait for http://localhost:8000/health and http://localhost:8080/health to return healthy.
6. Configure my chosen AI client with the MCP server URL and key.
7. Verify by calling the thought_stats MCP tool.
8. Show me a summary of what was installed and next steps.
Works with GitHub Copilot (Agent Mode), Claude Code, Claude Desktop, Cursor, or any AI tool with terminal access.