by hassancs91
Self-hosted memory server for AI agents. Your brain is a git repo, served over MCP and REST.
# Add to your Claude Code skills
git clone https://github.com/hassancs91/brainoutsidebrainoutside is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by hassancs91. Self-hosted memory server for AI agents. Your brain is a git repo, served over MCP and REST. It has 52 GitHub stars.
brainoutside's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/hassancs91/brainoutside" and add it to your Claude Code skills directory (see the Installation section above).
brainoutside is primarily written in Python. It is open-source under hassancs91 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh brainoutside against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
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.
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:
identity/ is first-class, and the note kinds
(take, story, lesson, fact) are shaped for creating content,
not just referencing it.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.
Because you cannot read one. Your brain here is plain markdown in a normal git repo:
git log it. Fix a note by
editing a file.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.
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.
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.
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/INSTALL.md |
Installing: compose happy path, Coolify pointer, updating |
docs/DEPLOY.md |
The full Coolify runbook — proxy/CDN client IPs, backups, webhook |
docs/SECURITY.md |
The honest security posture, and how to report a vulnerability |
docs/PLAN.md |
Full architecture, data model, milestones |
CONTRIBUTING.md |
Ground rules, dev stack, tests, guardrails |
./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.sh |
build 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 / status |
follow logs / container state / + /readyz |
./dev.sh shell [svc] / manage <args> / superuser |
bash 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).