AI-dev exploration library · repo atlas

Open Brain (OB1)

One index-card drawer for every AI you use — a Postgres table you own, one MCP URL, and a community of 113 add-ons that file, link, and audit the cards.

What it is

Open Brain is a brain (OB1 says "your Open Brain") with no body of its own. You build it yourself in about 30 minutes: one Postgres table called thoughts in your own free Supabase account, plus one small MCP server deployed as an edge function. Every AI client you use — Claude Desktop, ChatGPT, Claude Code, Cursor, Codex — plugs into the same URL and becomes a reader and writer of the same memory. Each memory is a small card: the text, a meaning-vector (embedding), and a pocket of free-form tags. The repo itself holds no running system — it is the paste-and-click instruction book, plus every add-on the community has built around that one table.

The glossary map

Shared termOB1's wordWhere it lives
brain"your Open Brain"the thoughts table + match_thoughts
body vs brain"any AI client" via connectorsserver/index.ts
intake fancapture sources + import recipesintegrations/, recipes/
filing gatecontent fingerprint dedupupsert_thought (Step 2.6 of the guide)
query pathsemantic searchmatch_thoughts — vector only, one mode
typed graphknowledge graph / typed edgesob-graph, typed-reasoning-edges
consolidationconsolidation workersconsolidation-workers
night shiftabsent — all upkeep is user-runstep 8 below
compile vs retrieve forkwiki layer vs core searchwiki-synthesis, wiki-compiler
writes vs readsreadOnlyHint tool annotationsmachine-checked by gate rule 16
skillskill packsskills/

Ecosystem roles

OB1 is the opposite cut from most repos in this library: it ships the brain and refuses to be a body. gbrain and hermes-agent bundle memory into an agent; OB1 says the memory should outlive every agent, subscription, and vendor — "the brain stays put and the clients rotate around it." The repo has two populations: a core the maintainers freeze (the table, the 4-tool server, the guides, the 6-extension learning path) and a community edge that is open to PRs (recipes, schemas, dashboards, integrations, skills). That split is the semantic encoding of this whole atlas.

core — frozen, in the box, maintainer-curated community — opt-in add-ons, open PR lane red rule — warnings & the frozen boundary
One honest caveat. The entire brain — read and write — hangs off one shared access key, and the recommended connection method pastes that key into a URL (?key=…). Anyone who sees the URL owns your memory. There are no per-client scopes in core, and no runaway-spend cap: one organization measured 1.8M edge-function invocations in 7 days (3.3× the free-tier monthly quota) before the community wrote a cost-optimization recipe.

Key decisions

The repo rendered as answers to the library's canonical questions. IDs are the cross-atlas comparison keys.

C1Source of truth

Chose
A Postgres database the user personally owns (Supabase free tier); the repo holds zero user data — every brain is a private deployment.
Why
"Your memory is queryable, exportable, and yours in the most literal sense." Memory must outlive every subscription decision.
Trade-off
Every user becomes their own ops team: keys, deploys, backups, and cost are their problem. The brain-backup recipe and a fully self-hosted Kubernetes path exist because durability is user-owned too.
Links

C2Trust & safety boundaries

Chose
One shared access key for everything, checked on every request (header or URL param). RLS is enabled but has a single policy — service-role full access — because only the edge function ever talks to the database. Auth failures return a JSON-RPC error inside HTTP 200 so strict MCP clients keep the connection alive instead of tearing it down.
Why
Radical simplicity for non-coders: one key, one URL, zero auth infrastructure. The 200-envelope is a hard-won compatibility fix ("strict MCP hosts treat bare HTTP 4xx as transport-level failures").
Trade-off
All-or-nothing access; a leaked URL is a leaked brain. Scoped sharing is pushed to a primitive (shared-mcp) and per-agent keys to a community schema (per-agent-identity).
Links

C3Cost model

Chose
Pay-per-thought via OpenRouter (~$5 "lasts months"): one embedding call + one gpt-4o-mini metadata call per capture. Supabase free tier for everything else. No built-in spend cap.
Why
Costs are legible to a beginner: two named services, one prepaid balance, swap models by editing two strings.
Trade-off
The mandated one-edge-function-per-extension pattern multiplies invocations 4× per tool call (stateless MCP handshake). The fix — server consolidation and session reuse — lives in a community recipe, not core.
Links

C4Integration surface

Chose
MCP only, remote only. Every server is a Supabase Edge Function reached by pasting a URL into a client's connector settings. Local stdio servers are banned by guardrail and machine-checked at the PR gate. ChatGPT's restricted surface gets read-only search/fetch alias tools.
Why
"No client is special. They're all just readers and writers of the same brain." Remote-only means beginners never install Node or edit JSON config.
Trade-off
Everything is a public URL (see C2), and each added extension is another server whose tool definitions eat client context — enough of a problem that the repo ships a whole tool-audit guide and requires every extension to link it.
Links

C5Extension model

Chose
Seven category folders with two trust tiers: curated (extensions/ — an ordered 6-build learning path; primitives/ — must be referenced by 2+ extensions) and open (recipes, schemas, dashboards, integrations, skills). The unit is a folder with README.md + metadata.json; reusable behavior canonically lives in skills/ and is declared via requires_skills.
Why
The learning path teaches concepts in order; the open lanes let the community move fast without touching the curriculum.
Trade-off
Extensions never auto-update — each user's deployment is a copy-paste snapshot. Improvements upstream reach nobody who already built.
Links

C6Honesty discipline draft

Chose
Two disciplines. For humans: every guide step ends with a "✅ Done when:" checkpoint — a fresh-evidence gate before moving on — and a smoke-test harness verifies a claimed-working install. For agent memory: a memory may not claim authority it wasn't granted — agent-written memory is evidence until a human confirms it (see step 7), and recall traces record which memories were used vs ignored so bad behavior can be attributed.
Why
"These rules make OB1 the continuity layer without turning memory into a hidden prompt that future agents blindly obey."
Trade-off
Human review queues need a human: the checklist explicitly requires "the review queue has a clear owner."
Links

M1Storage & index

Chose
Hosted Postgres + pgvector on the free tier. Three indexes on one table: HNSW cosine on the 1536-dim embedding, GIN on the jsonb metadata, btree on created_at.
Why
"Memory is a database problem" — three ordinary things: a table, a search index, an API.
Trade-off
Personal-scale only: the core stats tool reads every row's metadata into memory. Scale stories (trigram index, daily-bucket RPCs past PostgREST's 1000-row cap) are community patches.
Links

M2Unit of memory

Chose
The "thought": one freestanding text statement per row. The capture tool's own prompt demands "a clear, standalone statement that will make sense when retrieved later by any AI."
Why
Atomic cards are portable across clients and survive being retrieved without surrounding context.
Trade-off
No document structure — bulk imports must chunk and summarize on the way in, and compound captures need re-splitting after the fact (the atomizer exists precisely to re-atomize multi-topic thoughts).
Links

M3Schema & typing

Chose
A frozen minimal core plus open jsonb: seven fixed columns that may never be altered or dropped (adding is fine — machine-checked at the PR gate), with a soft metadata convention (people, topics, action_items, type) set by the extraction prompt. Structure grows via sidecar tables, never via core changes.
Why
The frozen core is the compatibility contract that lets 113 independent add-ons compose against one table.
Trade-off
Conventions in jsonb drift (early imports have missing/misfiled metadata); several community recipes exist just to backfill and normalize it.
Links

M4Ingestion & capture

Chose
An intake fan with three mouths: explicit capture from any AI client ("remember this"), chat-channel bots (Slack, Discord, Telegram, a Chrome extension), and 10+ bulk importers for whole archives (Gmail, ChatGPT, Obsidian, X, Instagram, Google Takeout, Grok, Blogger, Perplexity, Readwise). Everything is embedded + LLM-tagged on the way in; the filing gate is a sha256 content fingerprint that merges duplicates instead of inserting them.
Why
Capture must happen where you already are — "a quick message becomes a memory with no app-switching."
Trade-off
Metadata extraction is "best-effort — the LLM is making its best guess"; the embedding is the load-bearing part and the tags are a bonus layer.
Links

M5Linking & structure

Chose
None in core — thoughts are unconnected cards. The community draws the typed graph as paid add-ons: an entity-extraction queue + LLM worker builds graph_nodes/graph_edges; typed-reasoning-edges adds thought-to-thought relations (supports, contradicts, supersedes) classified by an Opus/Haiku hybrid; traversal runs in plain Postgres (recursive CTE + BFS), no graph database.
Why
"Without explicit relationships, your AI has to re-derive connections every time."
Trade-off
Every arrow costs an LLM call — unlike gbrain, where the typed graph is drawn free at save time by pattern-matching. OB1's graph is opt-in, async, and billed.
Links

M6Retrieval stack

Chose
One mode: embed the question, cosine-match above a threshold, optional jsonb containment filter, top-K back. No keyword leg, no graph leg, no fusion, no rerank. Plus a recency browse and a stats tool.
Why
One honest mode a beginner can hold in their head: "results come back ranked by meaning, not keywords."
Trade-off
Rare-word and recency queries suffer; the community bolts on a trigram index (~50× on rare words) and a recency-decay variant of the match function.
Links

M7Understanding: compile vs retrieve

Chose
Core is pure retrieve — raw cards land in whatever conversation asked, and the client's model does the synthesis at its own cost. The community crosses the fork: a wiki layer compiles entity pages, topic articles, and even an autobiography from atomic thoughts; a consolidation worker maintains a canonical "who is X" bio in place.
Why
Retrieve-only keeps the core simple and client-neutral; compilation is a lifestyle choice, not infrastructure.
Trade-off
Every conversation re-pays the synthesis cost until you install the compile layer yourself.
Links

M8Consolidation & maintenance

Chose
Nothing scheduled in core — there is no night shift in the box. All upkeep is community workers the user runs by hand: bio synthesis, metadata normalization (only applies changes at ≥0.8 LLM confidence and material difference, with dry-run mode and an audit log), 8 SQL health views, fingerprint backfill, retroactive enrichment, a weekly lint sweep and drift auditor.
Why
Core stays deployable by a non-coder; anything that runs on a clock needs infrastructure the beginner doesn't have yet.
Trade-off
An unmaintained brain silently degrades — the health views exist because stalled queues and enrichment gaps were real, observed failures.
Links

M9Forgetting & pruning

Chose
Core accumulates forever — it ships no delete tool at all. Deletion is opt-in-by-install: a separate edge function exposing exactly one delete_thought tool (hard delete, pre-flight existence check). Softer forgetting exists as filtering: graph edges age via decay_weight/valid_until, and superseded/disputed agent memories are kept but never auto-injected.
Why
A write-only brain is the safe default for beginners; putting the delete verb in a separate server makes destruction a deliberate installation decision.
Trade-off
Test entries and mis-captures accumulate until you notice; the delete function's own README opens with exactly that complaint.
Links

F2Pipeline & gate ordering (the contribution factory)

Chose
Every PR passes a 16-rule automated gate before any human looks: folder structure, required files, metadata schema, no secrets, SQL safety (no DROP/TRUNCATE/unqualified DELETE, additive-only on the core table), category artifacts, link resolution, the remote-MCP pattern, and readOnlyHint tool annotations. Then a human maintainer reviews for quality (2–5 days).
Why
Machine rules catch the mechanical failures so scarce human attention goes only to judgment calls.
Trade-off
All 16 rules are gates — there is no advisory tier; a cosmetic miss blocks the same as a leaked secret.
Links

F4Quality enforcement

Chose
Deterministic checks at the gate, LLM review on demand (a maintainer-triggered Claude review workflow), humans for taste. The writes-vs-reads split is enforced as machine-checked metadata: read tools must declare readOnlyHint: true, write tools must declare their destructive/open-world hints.
Why
ChatGPT and other clients use those hints to decide what a tool may do — mislabeled writes are a safety bug, not a style issue.
Trade-off
The planned "LLM clarity review" gate is still marked Planned for v2 — prose quality remains human-only.
Links

F7Distribution & team adoption

Chose
Copy-paste distribution: users curl one server file and paste SQL blocks; nothing installs, nothing auto-updates. The README's contribution tables refresh from GitHub daily. A first-class non-coder lane: describe an idea in an issue, a community mentor builds it, the non-coder keeps the author credit.
Why
The audience is explicitly people who have never touched a database; "zero code" is the product promise.
Trade-off
Deployed brains fork from the repo the moment they're built — a fixed bug upstream reaches only new builders (the FAQ's key-rotation checklist exists because deployed copies drift).
Links

The life of one thought

Nine steps, ordered as one card's journey: the drawer gets built, a thought arrives, gets filed, indexed, recalled, linked, ranked for trust, maintained — and the factory that grows the whole system around it.

Step 1 · core

Day zero — build the drawer in 30 minutes

You don't install Open Brain; you assemble it from a paste-and-click guide. Two accounts (Supabase for the database, OpenRouter with ~$5 for the AI calls), four SQL pastes (table, search function, security policy, dedup), one generated access key, one edge-function deploy. Every step ends with a "✅ Done when:" checkpoint — the guide never lets you advance on hope. A downloadable credential-tracker spreadsheet is the guide's working memory, because half the keys can't be re-viewed once you leave the page.

Supabase free tier OpenRouter ~$5 credits 4 SQL pastes table · search · RLS · dedup secrets set access key · API key deploy fn → one MCP URL every stage: "✅ Done when:" checkpoint
The whole build is a linear pipeline with human verification gates — no step advances without observable evidence it worked.
Step 2 · core

The plug — every body, one brain

OB1 is a brain with no body: any MCP client is the body. All of them paste the same URL. The gate is one shared key, accepted as a header or a URL parameter; a wrong key comes back as a JSON-RPC error wrapped in HTTP 200, because strict clients treat a bare 401 as a dead connection. ChatGPT's restricted sessions get read-only search/fetch aliases — same drawer, narrower slot.

Claude Desktop ChatGPT Claude Code Cursor Codex open-brain-mcp edge function · 4 tools key check on every request thoughts service-role only reads + writes ?key=… or x-brain-key wrong key → JSON-RPC −32001 inside HTTP 200 (connection stays alive)
N clients → one key gate → one table. No client is special; ChatGPT's arrow just carries fewer verbs.
Step 3 · core + community

Capture — a thought lands

Say "remember this" in any client and capture_thought fires: the embedding call and the metadata-extraction call run in parallel, then the row lands through the filing gate — a sha256 fingerprint of the normalized text. A duplicate doesn't insert; it merges metadata onto the existing card. Around that core verb sits the intake fan: chat bots and a Chrome extension for quick capture, and 10+ importers that pour in whole archives. Every mouth ends at the same table.

any AI client chat bots importers ×10 capture_thought one write verb embed (1536-d) text-embedding-3-small extract tags gpt-4o-mini, best-effort sha256 match? new row insert card duplicate merge metadata only no yes parallel: Promise.all — the two AI calls race, both land in one row
The intake fan narrows to one write verb; the fingerprint filing gate turns re-capture into a metadata merge instead of a duplicate card.
Step 4 · core

The store — one frozen table

Everything is one table: text, embedding, jsonb metadata, fingerprint, two timestamps. Three indexes serve the three access patterns — HNSW cosine for meaning, GIN for tag filters, btree for time. The rule that makes the whole ecosystem possible is a red line: core columns may never be altered or dropped. Adding columns and sidecar tables is fine, and machine-checked at the PR gate. That frozen waist is why 113 independent add-ons compose without coordinating.

thoughts — frozen core id · content · embedding(1536) metadata jsonb · content_fingerprint created_at · updated_at never ALTER, never DROP — gate-enforced + community columns type · importance · sensitivity_tier status · quality_score … + sidecar tables graph edges · agent memory · audit … additive-only boundary HNSW cosine meaning GIN jsonb tag filters btree created_at time
Seven frozen columns behind a red additive-only line; everything else in the ecosystem attaches to the right of it.
Step 5 · core

Recall — search by meaning, synthesize elsewhere

The query path is deliberately thin. Your question becomes an embedding; match_thoughts returns every card above a cosine threshold, optionally filtered by tags; the client that asked does the synthesis with its own model. One mode — no keyword leg, no graph leg, no fusion, no reranker, no gap analysis. This is the retrieve side of the compile-vs-retrieve fork, chosen so a beginner can hold the whole mechanism in their head.

question any client embed same model match_thoughts cosine > threshold jsonb @> filter · top-K ranked cards raw text + tags client synthesizes community legs trigram keyword · recency decay · live retrieval
One retrieval mode in core; extra legs are opt-in schema add-ons, not defaults.
Step 6 · community

Structure at the edges — from loose cards to a typed graph

Core thoughts don't reference each other. The community builds the understanding layer around the drawer: an extraction queue and worker read new thoughts and draw a typed graph of entities (Alice —works_on→ Acme); a second edge table connects thoughts to thoughts with reasoning relations (supports, contradicts, supersedes) classified by an Opus/Haiku hybrid; a wiki layer compiles entity pages and topic articles — crossing over to the compile side of the fork. Unlike gbrain, where arrows are drawn free by pattern-matching at save time, every OB1 arrow costs an LLM call.

thoughts loose cards, no links entity graph graph_nodes + graph_edges reasoning edges supports · contradicts · supersedes wiki pages entity + topic + autobiography provenance chains "show me why I believe X" queue + LLM worker Opus/Haiku classifier scheduled compile derivation tracking
Four understanding layers orbit the core table — all community, all LLM-built, all opt-in.
Step 7 · community → product

The trust ladder — memory that knows its rank

The newest layer, OB1 Agent Memory, answers a question the rest of this library keeps circling: when an agent writes its own memory, what stops that memory from becoming a hidden instruction future agents blindly obey? OB1's answer is a ladder. Every memory carries provenance (observed, inferred, generated…), a use policy, and a review state. Agent-written memory starts as evidence, not instruction — promotion to instruction-grade requires a human confirm or a trusted import, and the schema defaults enforce it. Recall traces record what was asked, returned, used, and ignored, so bad behavior can be attributed to model, retrieval, or stale memory.

agent writes observed · inferred generated compact, no transcripts evidence default rank — may inform human review or trusted import? instruction-grade may shape action, in scope restricted evidence-only · scoped · stale superseded · disputed kept, never auto-injected confirm deny schema defaults, machine-verified: can_use_as_instruction=false · requires_user_confirmation=true · review_status=pending
The promotion ladder: agent memory enters as evidence and only a human (or trusted import) can promote it to instruction.
Step 8 · community

Housekeeping — no night shift in the box

Core ships no scheduled maintenance and no delete verb: the drawer accumulates forever. Everything that keeps a brain healthy is a community add-on you run by hand — consolidation (a bio worker squashes scattered person-notes into one canonical profile, updated in place), metadata normalization (changes apply only at ≥0.8 LLM confidence and material difference, with dry-run and an audit log), eight SQL health views, dedup backfill, retroactive enrichment. Deletion is a separate opt-in server with exactly one hard-delete tool. Pruning here matches the library definition precisely: filter at the door, consolidate repeats, delete rarely and explicitly.

thoughts accumulates by default consolidation workers bio synthesis · metadata norm ≥0.8 enrichment + backfill retro-classify · dedup backfill health views + audits 8 ops views · lint sweep · drift auditor delete_thought separate server · hard delete · opt-in all pull-triggered — the user is the scheduler; no clock in the box merge, update in place removes rows
Maintenance orbits the table as user-run workers; the only destructive verb lives in its own opt-in server, outside the core boundary.
Step 9 · the repo itself

The factory around it — how the drawer grows

The repo is the product, and it runs its own factory. Two lanes in: curated (extensions must be discussed first; primitives must be referenced by 2+ extensions) and open (recipes, schemas, dashboards, integrations, skills — direct PR). Every PR passes the 16-rule automated gate — including the additive-only SQL rule and the writes-vs-reads tool annotations — before a human maintainer reviews. Non-coders contribute through mentors and keep author credit. Merged work appears in README tables that refresh from GitHub daily.

curated lane extensions · primitives — discuss first open lane recipes · schemas · skills … direct PR automated gate 16 rules, all block human review quality · 2–5 days merge README refresh, daily fail → fix and resubmit (no advisory tier) secrets · SQL safety · additive-only readOnlyHint · links · structure
Two lanes, one blocking gate, one human: machine rules absorb the mechanical failures so maintainer attention buys only judgment.

Full roster — 113 components

Every contribution folder, grouped by category. Names link to source. curated lanes are maintainer-controlled; open lanes take community PRs.

extensions/ curated — 6 · the ordered 6-build learning path

family-calendarMulti-person family scheduling — activities, important dates, and conflict detection across the whole household.
home-maintenanceTrack recurring maintenance tasks, log completed work, and surface upcoming items before they become emergencies.
household-knowledgeStore and retrieve household facts — paint colors, appliance details, vendor contacts, measurements, and more.
job-huntComplete job search management — companies, applications, interviews, and pipeline analytics with CRM integration.
meal-planningRecipes, weekly meal plans, and shared shopping lists with RLS and a dedicated shared MCP server for household…
professional-crmTrack professional contacts, log interactions, manage opportunities, and connect your network to your thoughts.

primitives/ curated — 5 · concept guides referenced by 2+ extensions

deploy-edge-functionHow to deploy any Open Brain extension as a Supabase Edge Function — create, configure, and deploy in 5 steps.
remote-mcpHow to connect any remote MCP server (Supabase Edge Function) to Claude Desktop, ChatGPT, Claude Code, Cursor, and…
rlsReusable guide to PostgreSQL Row Level Security — the foundation for multi-user and shared-access extensions.
shared-mcpGuide to building scoped MCP servers that give other people limited access to specific parts of your Open Brain.
troubleshootingSolutions for connection, deployment, database, and performance issues across all Open Brain extensions.

recipes/ open — 50 · standalone capability builds

adaptive-capture-classificationAdds confidence gating and a per-type learning loop to OB1's capture flow. The classifier reports a…
atomizerSplit compound multi-topic thoughts into atomic single-topic thoughts via an LLM (OpenRouter by default…
auto-captureWorkflow guidance for using the reusable Auto-Capture skill to store ACT NOW items and session summaries in Open…
brain-backupExport all Open Brain Supabase tables to local JSON files for offline backup and data safety.
brain-health-monitoringSQL views and runbook for monitoring source volumes, enrichment gaps, ingestion pipeline health, stalled queues…
brain-smoke-testSmoke harness verifying a fresh Open Brain install: REST API, MCP, DB schema, auth, RLS, access key, and (with…
bring-your-own-contextPortable context workflow that packages extraction prompts, the Work Operating Model profile flow, and remote MCP…
chatgpt-conversation-importParse your ChatGPT data export, resolve conversation branches, extract 2-5 typed thoughts per conversation via LLM…
claudeceptionContinuous learning system that extracts reusable knowledge from work sessions and creates new skills. Skills that…
content-fingerprint-dedupSHA-256 content fingerprinting to prevent duplicate thoughts during bulk imports and multi-source capture.
daily-digestAutomated daily summary of recent thoughts delivered via Gmail draft, powered by Claude Code scheduled tasks and…
edge-function-cost-optimizationCuts Supabase Edge Function invocations ~73% by consolidating multiple MCP servers into one, adding Mcp-Session-Id…
editorial-policyA 40-rule constitution that governs every synthesis prompt in your Open Brain, paired with a weekly…
email-history-importImport your Gmail email history into Open Brain as searchable thoughts with sender, subject, and date metadata.
entity-wikiAuto-generate per-entity markdown wiki pages from linked thoughts
fingerprint-dedup-backfillBackfill content fingerprints on existing thoughts and safely remove duplicates discovered during the process.
gmail-smart-pullPull emails from Gmail into an Open Brain ingest pack with local sensitivity routing, engagement filtering…
google-activity-importImport your Google Search, Gmail, Maps, YouTube, and Chrome history from Google Takeout into Open Brain as…
grok-export-importImport xAI Grok conversation exports (JSON format with MongoDB-style dates) into Open Brain as searchable thoughts.
infographic-generatorTurn research docs, Open Brain thoughts, and analysis into professional infographic images via Gemini's…
instagram-importImport Instagram data exports — DM conversations, comments, and post captions — into Open Brain as searchable…
journals-blogger-importImport blog posts from Google Blogger Atom XML exports into Open Brain as searchable thoughts.
life-engine-videoAdd-on for Life Engine that renders short video briefings using Remotion and ElevenLabs TTS instead of text-only…
life-engineA self-improving, time-aware personal assistant that runs in the background via Claude Code's /loop command…
lint-sweepWeekly quality audit across three cost tiers: SQL-only lint (orphans, duplicates, low-signal noise), graph-based…
live-retrievalAutomatically surfaces relevant Open Brain thoughts during active work. Searches when topic shifts are detected…
local-brain-no-mcpSelf-hosted Open Brain on a single LAN host: official Supabase docker stack + Ollama for local embeddings + two…
local-ollama-embeddingsGenerate embeddings locally using Ollama and insert thoughts into Supabase — no cloud API key needed for the…
ob-graphA knowledge graph layer for Open Brain. Adds graph database functionality using PostgreSQL nodes + edges with…
obsidian-vault-importParse your Obsidian vault and import notes into Open Brain as searchable, embedded thoughts with full metadata.
openclaw-agent-memoryCanonical recipe for using runtime-neutral OB1 Agent Memory from OpenClaw workflows with governed recall…
openclaw-code-review-memoryFlagship OB1 Agent Memory workflow for making OpenClaw code review agents accumulate repo-specific lessons…
openclaw-taskflow-work-logCompanion OB1 Agent Memory workflow for durable OpenClaw TaskFlow handoffs across models, agents, and channels.
panning-for-goldMine raw brain dumps, voice transcripts, and stream-of-consciousness notes for actionable ideas. Three-phase…
perplexity-conversation-importImport your Perplexity conversations and memories from a data export (.xlsx) into Open Brain as searchable…
provenance-chainsBackfill script, nightly quality evaluator, and MCP tool handlers that operate on the provenance-chains schema to…
readwise-importOne-shot backfill of your Readwise highlight history into Open Brain via the /api/v2/export/ endpoint. Pair with…
repo-learning-coachRun a local learning app backed by Supabase tables inside your Open Brain project, with file-based curriculum…
research-to-decision-workflowWorkflow recipe for composing canonical OB1 skills into operator and investor decision pipelines, from competitive…
schema-aware-routingA pattern for using LLM-extracted metadata to route unstructured text into the correct database tables…
source-filteringFilter thoughts by source (mcp, gmail, chatgpt, obsidian) and backfill missing metadata for early imports.
thought-enrichmentRetroactively classifies existing thoughts with type, importance, sensitivity, topics, tags, and more using…
typed-edge-classifierOpus/Haiku hybrid classifier that populates thought_edges with reasoning relations
vercel-neon-telegramAlternative Open Brain architecture using Vercel serverless functions, Neon Postgres with pgvector, and Telegram…
weekly-digestScheduled importance-ranked synthesis of recent thoughts, delivered to Telegram
wiki-compilerCompiled wiki layer for Open Brain that orchestrates graph extraction, typed edges, entity pages, and topic…
wiki-synthesisSynthesize topic-scoped wiki articles and per-thread email wikis from atomic thoughts, using any OpenAI-compatible…
work-operating-model-activationConversation-first workflow for eliciting a user's operating rhythms, recurring decisions, dependencies…
world-model-diagnostic-activationLightweight activation path for running the World Model Readiness Diagnostic inside OB1 using the base…
x-twitter-importImport X (Twitter) data exports — tweets, DMs, and Grok chats — into Open Brain as searchable thoughts.

schemas/ open — 14 · database sidecars and column add-ons

agent-memoryAdds governed agent memory sidecar tables for provenance, use policy, review, recall traces, and audit events…
brain-stats-dailyServer-side daily-bucket aggregation RPCs for dashboard heatmaps. Includes JSONB variants that bypass…
crm-person-tiersAdds a standalone crm_persons table with a four-tier relationship taxonomy (connected, contact, known, unknown), a…
enhanced-thoughtsAdds structured columns (type, importance, quality_score, sensitivity_tier, source_type, enriched) to the thoughts…
entity-extractionTables, trigger, and queue for automatic entity and relationship extraction from thoughts. Complements the manual…
per-agent-identityAdds optional hashed per-agent memory keys and a SECURITY DEFINER lookup RPC so multi-agent Open Brain deployments…
provenance-chainsAdds derivation tracking columns (derived_from, derivation_method, derivation_layer, supersedes) and helper SQL…
readwise-booksSide-table cache of Readwise book-level metadata (title, author, cover, category) plus RPCs for in-order highlight…
recency-boosted-match-thoughtsAdds match_thoughts_recency — a variant of the core match_thoughts RPC that blends cosine similarity with an…
smart-ingestAdds ingestion_jobs and ingestion_items tables for tracking the extract-deduplicate-execute lifecycle of bulk text…
text-search-trgmpg_trgm GIN index on public.thoughts.content to accelerate search_thoughts_text ILIKE fallback by ~50x on…
thought-auditAppend-only audit table capturing every capture / update / delete on the thoughts table, plus an author_session_id…
typed-reasoning-edgesthought_edges table with supports/contradicts/supersedes/evolved_into/depends_on relations + temporal validity…
workflow-statusAdds status and status_updated_at columns to the thoughts table, enabling kanban-style workflow management for…

dashboards/ open — 4 · frontend templates

ob1-canonical-landingA cite-able single-page canonical landing for Open Brain — full SEO meta, JSON-LD structured data, GitHub star…
open-brain-dashboard-nextFull-featured web dashboard for browsing, searching, capturing, and managing thoughts with session auth, smart…
open-brain-dashboard-proNext.js 16 dashboard with browse, search, audit, and ingest views, plus iron-session auth
open-brain-dashboardA production-ready SvelteKit dashboard for searching, filtering, and capturing Open Brain thoughts.

integrations/ open — 17 · capture sources, workers, alternate servers

agent-memory-apiRuntime-neutral Supabase Edge Function for OB1 Agent Memory recall, write-back, review, inspection, and recall…
chrome-capture-extensionChrome MV3 extension that captures Claude, ChatGPT, and Gemini conversations into Open Brain via the REST API
consolidation-workersBio synthesis and metadata normalization workers for post-import thought quality improvement via LLM…
delete-thought-mcpStandalone MCP Edge Function that adds a delete_thought tool — hard-deletes a thought by UUID with a pre-flight…
discord-captureDiscord bot that captures messages from designated channels into Open Brain, mirroring the Slack capture pattern.
enhanced-mcpProduction-grade remote MCP server expanding the tool surface from 4 to 13 tools with enhanced search, CRUD…
entity-extraction-workerAsync worker that drains the entity extraction queue, extracting people, projects, topics, tools, organizations…
hermes-agent-memoryNative Hermes MemoryProvider for the OB1 governed memory system. Auto-recall before each LLM turn, auto-writeback…
kubernetes-deploymentDeploy Open Brain on Kubernetes with self-hosted PostgreSQL + pgvector, replacing Supabase with fully self-managed…
open-brain-restSupabase Edge Function REST gateway for the OB1 dashboard thoughts, workflow, search, audit, and duplicate-review…
openclaw-agent-memoryOpenClaw plugin package for governed Nate Jones OB1 Agent Memory recall, write-back, review, inspection, and trace…
readwise-captureReceive Readwise highlight webhooks and store them as thoughts. Covers highlights from Kindle, Apple Books…
rest-apiDocumented REST gateway for non-MCP clients, dashboards, webhooks, and custom integrations with CORS support and…
slack-captureAdd Slack as a quick-capture interface for your Open Brain. Type thoughts in a channel, automatically embedded and…
smart-ingestLLM-powered document extraction that turns raw text into atomic thoughts with fingerprint and semantic…
telegram-captureAdd Telegram as a quick-capture interface for your Open Brain. Send a message to your bot (DM or private group)…
update-thought-mcpStandalone MCP Edge Function that adds an update_thought tool with optional if_unchanged_since optimistic…

skills/ open — 17 · drop-in prompt/skill packs

auto-capture-claude-codeClaude Code adapter for the auto-capture skill, adding automatic session-end thought capture via Claude Code hooks.
auto-captureReusable skill pack that captures ACT NOW items and a session summary to Open Brain when a session ends.
autodream-brain-syncSyncs Claude Code's local memory saves to Open Brain so memories are accessible from all AI clients and…
claudeceptionStandalone skill pack that extracts reusable knowledge from work sessions, turns it into new skills, and captures…
competitive-analysisStandalone skill pack for competitor profiling, pricing comparisons, market mapping, SWOT generation, and…
deal-memo-draftingStandalone skill pack for drafting structured deal, IC, partnership, or acquisition memos from existing diligence…
financial-model-reviewStandalone skill pack for reviewing an existing financial model, forecast, or scenario set for assumption quality…
heavy-file-ingestionConverts heavyweight files such as PDFs, slide decks, spreadsheets, and documents into markdown, CSV, and…
meeting-synthesisStandalone skill pack for turning meeting transcripts or notes into decisions, action items, unresolved questions…
n-agentic-harnessesReusable skill pack for designing, auditing, and improving the harness layer around agentic products, including…
ob1-local-httpSkill pack that lets Claude Code (or any AI coding tool that supports skills) capture and search thoughts against…
openclaw-agent-memorySkill rules for using Nate Jones OB1 Agent Memory from OpenClaw without turning inferred or generated memory into…
panning-for-goldStandalone skill pack that turns transcripts, brain dumps, and raw multi-topic captures into evaluated idea…
research-synthesisStandalone skill pack for turning a source set into a decision-grade synthesis with findings, contradictions…
weekly-signal-diffStandalone skill pack for turning a week's worth of market or AI news into a personalized structural diff…
work-operating-modelStandalone skill pack for interviewing a user about how their work actually runs, saving the approved model into…
world-model-diagnosticStandalone skill pack for running a 20-minute world-model diagnostic that maps company fit, audits the boundary…
← Accession