soong·brain

Solo

Free, forever, for one developer. Self-hosted on hardware you control, across as many projects and machines as you like.

Install

$ 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.

First brain, first minute

# 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.

Seed it from what already happened

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.

Several machines, one brain

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.

This gives another machine access to one brain. It doesn't give it a copy. If the host is down or the laptop is on a plane, there's no brain. Replication is what the hosted tier is for.

What "free" covers

In Solo
Ranking, decay tiers, supersession, provenancefull strength
All 41 commands, all flagsyes
MCP server, stdio and HTTP, every command as a toolyes
SessionStart and UserPromptSubmit hooksyes
Read-only local web vieweryes
Full export, no lock-inyes
Projects and machinesunlimited
A second person on the same brainhosted
Sync and conflict resolutionhosted
Encryption at resthosted

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.

What you're running

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.