Sandbox
@hassancs91/brainoutside

MCP and REST memory server for git-backed brains

BrainOutside keeps a single brain in a markdown git repo and exposes it to agents over MCP and REST. It adds read tiers, approval before writes, and a browser setup flow so agents can use the same brain without sharing raw files.

74 stars34 forksPythonUpdated 1mo ago
Who it's for

Builders who want their agents to remember, retrieve, and propose changes against one private brain repo.

What it delivers

You can let agents read your notes and propose updates without losing control of what gets written.

What it does

Git-backed brain storage

Keeps notes as plain markdown in a normal git repo, so you can read, edit, and version them directly.

REST and MCP access

Serves the brain through REST and MCP so Claude Code and other MCP clients can use it.

Visibility tiers

Enforces public, agents-only, and private note access on the server side.

Human-gated writes

Agents propose changes, you approve them, and approval lands as a signed git commit.

Lens-based retrieval

Uses named lenses and context packs to return a small set of relevant files instead of the whole repo.

Template brain repo

Ships a `brain-template/` repo with identity files, note kinds, lenses, and starter folders.

How to get it

  1. 1Run
    ./dev.sh        # macOS / Linux
    .\dev.ps1       # Windows — same commands

README

BrainOutside

Your brain, kept outside your head — where your agents can read it.

A self-hosted memory server for your AI agents. One git repo full of markdown is your brain; BrainOutside serves it over REST and MCP, with visibility tiers enforced server-side and a human gate on every write.

Single-user and single-brain by design. That is the product, not a limitation waiting to be fixed.

Two ways to run a brain, one repo between them. Start local: clone brainoutside-template, open it in VS Code, and Claude Code is the whole interface — free, private, zero infrastructure. Or self-host this server as the brain's online head, so every agent you run anywhere can read your mind over MCP and REST. They compose: the local repo IS the repo the server clones. Start local today, add the server when you want it, migrate nothing. Site and docs: brainoutside.com.

Status: pre-release. The engine and the first-run wizard are built and verified end to end; what remains before the public beta is packaging, docs, and launch assets.

📖 Read the guide

The full walkthrough lives on my site: what a second brain is actually for, why plain markdown beats a vector database for personal knowledge, and how to go from an empty repo to a self-hosted brain your agents can read. How to Build an AI Second Brain

Free to read, no login.

Where this came from

This project grew out of Andrej Karpathy's llm-wiki and the wave of markdown knowledge bases around it. The core insight there is right, and it is the foundation this builds on: plain markdown plus a coding agent beats RAG for personal knowledge — compile knowledge in at ingestion time and the artifact compounds, instead of being re-assembled from chunks on every query.

Building mine, I kept hitting four walls, and they became this project:

  • A wiki holds knowledge, not you. An agent could recall from mine, but it couldn't write as me — there was no identity, no voice, no beliefs in it. Here identity/ is first-class, and the note kinds (take, story, lesson, fact) are shaped for creating content, not just referencing it.
  • No safe way to grow. A wiki that maintains itself fills up with unreviewed extractions, and a brain you don't trust is a brain you stop using. Here every write is gated: agents propose, you approve, approval is one signed commit.
  • Recall isn't the point — creation is. I built this to make things from my brain — replies, posts, scripts — in my own voice. Lenses and context packs turn the brain into a writing instrument.
  • A local folder serves one tool on one machine. I wanted every agent I run, anywhere, to read my mind. That is this server: the brain's online head — self-hosted, private, with visibility tiers enforced server-side.

The llm-wiki was not the only influence; if you recognize your project in this lineage and want a link here, open an issue.

The server itself grew out of my MCP API boilerplate — a Django starter that already had the REST + MCP plumbing, API keys and self-documenting endpoint pages wired up. That heritage is why you may occasionally find a feature the brain doesn't use; they get removed as they're found, and a report is welcome.

Why not just use a vector database

Because you cannot read one. Your brain here is plain markdown in a normal git repo:

  • You can read it. Open it in any editor. git log it. Fix a note by editing a file.
  • You can leave. It is your repo. Delete the server and the brain is still there, intact and useful.
  • It has history. Change your mind and the old note is superseded, not deleted — so your brain records how your thinking moved, not just where it landed.

How it works

One repo is the brain. Atomic notes with a strict frontmatter contract: opinionated takes, storys with real numbers, lessons, citable facts. Every note carries provenance back to its source.

Agents read it through a lens. A lens is a named retrieval scope — topics, note types, and a visibility ceiling. Ask for a context pack and you get the right 3–7 files, not the whole repo.

Nothing enters without you. Feed a source — a video, a post, a transcript, a raw thought — and an agent proposes notes. You approve in a UI. Approval is one signed git commit. A brain that fills itself with unreviewed extractions is a brain you stop trusting.

Tiers are enforced, not decorative. Every note resolves to public, agents-only or private, and each API key sees only its tier — because the reader agent runs against a materialized snapshot of that tier and physically cannot read above it.

What you get

  • REST + MCP — point Claude Code, or any MCP client, at your own mind
  • A gated write path — proposals land in an approval queue; approval commits and pushes
  • A chat test bench — talk to your brain at any tier, with the sources it used shown per message
  • Visuals — visibility rings, a topic graph, live read activity, and a timeline of every position you have revised
  • A full ledger — every token, every read, every SDK run

Requirements

Somewhere to run Docker (a VPS with Coolify, or docker compose on any box), a GitHub account, and a Claude credential — an Anthropic API key or a Claude subscription token (sk-ant-oat), so you can run this without API billing.

Getting started

The 10-minute path is docs/INSTALL.md: two environment variables, docker compose up, and the /setup wizard does the rest in the browser — account, brain repo from the template, deploy key, write credential, Claude credential, first build. No terminal after the compose command. On Coolify it is shorter still: docs/DEPLOY.md.

Your brain repo

Start from the brainoutside-template repo (developed in-tree at brain-template/): the contract, both agent skills, note templates and placeholder identity files. It ships with zero notes on purpose — an empty brain that is truly yours beats a seeded one you have to clean out.

Docs

docs/INSTALL.mdInstalling: compose happy path, Coolify pointer, updating
docs/DEPLOY.mdThe full Coolify runbook — proxy/CDN client IPs, backups, webhook
docs/SECURITY.mdThe honest security posture, and how to report a vulnerability
docs/PLAN.mdFull architecture, data model, milestones
CONTRIBUTING.mdGround rules, dev stack, tests, guardrails

Running it locally

./dev.sh        # macOS / Linux
.\dev.ps1       # Windows — same commands

Builds on first run and starts web + mcp + worker + postgres + redis, waits for the healthcheck, prints the URLs. Same containers as the deploy; only docker-compose.local.yml differs.

Command
./dev.shbuild if needed, start everything, wait for health
./dev.sh reload [svc]restart app containers — picks up code, no rebuild
./dev.sh rebuild [--no-cache]rebuild images and recreate containers
./dev.sh down [--volumes]stop and remove (--volumes also drops the DB)
./dev.sh logs [svc] / ps / statusfollow logs / container state / + /readyz
./dev.sh shell [svc] / manage <args> / superuserbash in / manage.py in / create a login
./dev.sh css [--watch]rebuild the committed Tailwind artifact

Source edits are live — the repo is bind-mounted, so web reloads itself. mcp and worker need ./dev.sh reload. Only a requirements.txt or Dockerfile change needs rebuild.

App on http://localhost:8000, Postgres on localhost:5433, Redis on localhost:6380 (offset so a host install keeps its default port).


📘 The free book

This repo is one thing I built with AI. The book is the system underneath it.

Vibe Engineering Blocks is my free 74-page book. 47 building blocks for shipping real apps with AI. One block per page, each with the exact prompt to hand your AI.

Built by Hasan Aboul Hasan. I build real products with AI and write down exactly how. Guides  ·  YouTube  ·  Community

Files in the repo

Repository payload26 top-level entries
  • .github
  • apps
  • assets
  • brain-template
  • config
  • docker
  • docs
  • scripts
  • static
  • templates
  • .dockerignore
  • .env.example
  • .gitattributes
  • .gitignore
  • CHANGELOG.md
  • CLAUDE.md
  • CONTRIBUTING.md
  • dev.ps1
  • dev.sh
  • docker-compose.local.yml
  • docker-compose.yml
  • Dockerfile
  • LICENSE
  • manage.py
  • README.md
  • requirements.txt

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k