Free, forever, for one developer. Self-hosted on hardware you control, across as many projects and machines as you like.
$ curl -fsSL https://brain.fightclub.pro/install.sh | sh
Autodetects your OS and architecture, drops the binary at /usr/local/bin/ns-brain and marks it executable. No runtime to install first. Nothing is written outside that path until you create a brain.
Prefer to fetch it yourself:
Current version 26073102, schema v12. Checksums at SHA256SUMS, and the installer verifies them before it moves anything into place. One binary, nothing else to install.
# in the project you want it to remember $ ns-brain init initialized ./brain/brain.db · SessionStart and UserPromptSubmit hooks wired $ ns-brain remember --type infra \ --title "TLS terminates at nginx on 8443, not at the app" \ --body "the app listens on 127.0.0.1:8080 and never sees a cert" remembered #1 [global/infra] TLS terminates at nginx on 8443, not at the app $ ns-brain recall "certificates" #1 [global/infra] (score 1.612) TLS terminates at nginx on 8443, not at the app the app listens on 127.0.0.1:8080 and never sees a cert
Your next session opens knowing that, along with the time of day, the branch you're on, how many commits you're behind and any standing rule you've recorded. The brief runs on a hook, so nothing depends on the model remembering to look.
A brain installed into a project that's six months old starts empty while the history sits on disk as session transcripts.
$ ns-brain bootstrap
It finds this project's transcripts, matching on the name so old paths and other machines come too, then lists them oldest first with the rules for what to take out. You read them and store what's still true.
There's no automatic extractor and there won't be. A regex pass over transcripts fills a fresh brain with confident noise, which is worse than leaving it empty. We watched a competitor's auto-learner do exactly that: two thirds of its store was function renames and generic advice, all filed at global scope.
If you only work on one machine the CLI is the better tool and you can stop reading here. If you have a laptop and a desktop, run the brain on a box you own and reach it over MCP.
# on the box that holds the brain $ ns-brain mcp --http 127.0.0.1:7801 --token "$TOKEN" # on each machine you work from $ claude mcp add -s user -t http brain https://brain.example.com/mcp \ -H "Authorization: Bearer $TOKEN"
Bind loopback and put nginx with TLS in front of it. The binary refuses to start on a public interface without a token, and validates Origin on every request so a web page can't drive a server listening on localhost.
| In Solo | |
|---|---|
| Ranking, decay tiers, supersession, provenance | full strength |
| All 41 commands, all flags | yes |
| MCP server, stdio and HTTP, every command as a tool | yes |
| SessionStart and UserPromptSubmit hooks | yes |
| Read-only local web viewer | yes |
| Full export, no lock-in | yes |
| Projects and machines | unlimited |
| A second person on the same brain | hosted |
| Sync and conflict resolution | hosted |
| Encryption at rest | hosted |
Encryption is missing on purpose. One developer self-hosting their own data has no second party to be protected from, and a key hierarchy nobody needs is a way to lose a brain. Once someone else's data is in the store, that changes, and that's the hosted tier.
Go, compiled to one static binary per platform. SQLite in WAL mode with an FTS5 index. Roughly 6ms per command on a brain of a few hundred memories. No daemon, no scheduler, no network calls unless you started the MCP server yourself.
The whole thing is auditable in an afternoon. That's deliberate for something you're going to trust with the reasoning behind your own decisions.