Skip to content

Install

This page installs rb, checks it, and runs the one-minute tour.

rb needs Python 3.10 or later. The package is rabbit-brain and the command is rb. Each release has wheels for Linux (x86_64 and aarch64), macOS (Apple Silicon and Intel) and Windows (x86_64), each with the rb binary, the Python SDK and the terminal screen, so installing needs no compiler.

On Windows, rb 0.8.0 is still a preview: issue #2 lists its known issues, such as updating through uv. Claude Code runs rb’s session hook there in Git Bash; without Git Bash the hook fails, the session goes on, and rb does not look.

In a project’s environment, which also lets you import rabbit_brain there:

Terminal window
pip install rabbit-brain

Check it:

Terminal window
$ rb --version
rabbit-brain 0.8.0

rb tour builds a small real project in ./rb-tour and runs the whole loop: a question, an experiment with its settings and criteria, a freeze, three runs, and rb status. Every command is shown with its real output. It begins like this:

Terminal window
$ rb tour
$ rb init 'Dropout on a tiny MLP'
Project 'dropout-on-a-tiny-mlp' started: ~/try-rb/rb-tour/.rb
Rabbit Brain YAML files beside the code: commit .rb/ with it, so the record travels with the work.
For the agents here:
No agent's instructions here yet. rb skill add puts rb's for one: --claude (Claude Code), --agents-md (Codex and others), --cursor
Then paste this line into your agent's chat:
Use Rabbit Brain to track this: read rb context, then record where the work stands.
$ rb question add 'Can we use dropout 0.1 within our loss and step-time budgets?' --id q1
q1: Can we use dropout 0.1 within our loss and step-time budgets?
Next: rb experiment add "<what would answer it>" -q q1 --hypothesis "<what you expect>"
$ rb experiment add 'dropout 0.1 vs none' --id drop -q q1 --hypothesis 'Dropout 0.1 lowers val_loss' -m 'less co-adaptation' --baseline none --candidate p01 --varies dropout --note 'assumes the validation split stayed fixed'
Experiment drop: dropout 0.1 vs none · none (baseline) vs p01 (candidate) · varies dropout · under q1
hypothesis: Dropout 0.1 lowers val_loss (why: less co-adaptation)
Planned: nothing in the record tests it yet, and it shows as a planned direction until its first run or analysis.
Made 2 variants: none (baseline), p01 (candidate); a setting of one is rb spec set drop none.<setting> <value>.
drop declares it varies dropout, but no variant has a value for it yet; give each variant its own: rb spec set drop <variant>.dropout <value> --source <file#key>
… (134 more lines)

rb-tour/ is an ordinary record afterwards: cd rb-tour, then rb ui for the screen in your terminal or rb open for the same record in your browser.

  • Installed as a tool (uv tool install, or pipx install): at most once a day, rb asks PyPI for the newest release and, when it is newer, upgrades through the same installer. The next command runs the new rb.
  • Installed with pip: rb never touches that environment. At most once a day it says one line on standard error when a newer rb is out, with the pip install -U rabbit-brain that gets it.

Neither runs in CI, in an agent session, with DO_NOT_TRACK set, with RB_AUTO_UPDATE=0, or after rb config auto-update off. The check carries nothing about you.

rb 0.7.0 and 0.7.1 read format 1 only, and rb 0.8.0 writes format 2 only in the file of a rule that uses a count, a best of N, a relative change or a cited difference of means.

  • A record with no format-2 file: 0.7.0 and 0.7.1 read what 0.8.0 writes with no part they do not know, and write to it as before. Their readings differ from 0.8.0’s in one place, and 0.7.0’s in two more:

    • an --each rule beside an analysis of its comparison is read from the analysis in 0.7.0 and 0.7.1, and from its runs in 0.8.0;
    • on an experiment with one variant, 0.7.0 finds no number for a rule over a number recorded with no variant;
    • on an experiment with population.repeat, 0.7.0 reads the runs as if no repeat were declared.

    A call made on such a reading in one version reads “made on an earlier reading” in the other.

  • A record with a format-2 file: in 0.7.0 and 0.7.1, rb doctor names each such file, rb status counts them, and both say to upgrade (pip install --upgrade rabbit-brain). They read every other file and fail every --fail-on gate. They write nothing to the record, and refuse to clone a bundle that holds such a file.

Upgrade everyone who shares a record together.

Recording and reading the record need no account and no network. rb makes a network request only when:

  • you run rb clone: it downloads a bundle given as a web address, and git clones the code the bundle names;
  • you run rb login, rb sync or rb logout: they call rabbitbrain.ai, where anyone can make an account, or a hub you name with --hub or RB_HUB_URL;
  • the daily update check above runs;
  • you turn on rb’s usage analytics with rb telemetry enable, in your own terminal. They are off until then, and they never carry research content, paths, command arguments or names. rb telemetry preview shows what would be sent. DO_NOT_TRACK=1 or RB_TELEMETRY=0 keeps them off.

rb feedback prints a link to a page that shows what it would send before you send it. rb itself sends nothing.

rb remove --dry-run shows what rb remove would take out of the repository, what it would keep, and why. rb remove then takes out only what checks out as rb’s: the record, rb’s instructions for each agent, and its session hook in each agent’s hook file, where every other hook stays. Your research files and git history stay as they were. The command itself goes with pip uninstall rabbit-brain, or uv tool uninstall rabbit-brain.

Rabbit Brainrabbitbrain.ai · GitHub · PyPI · Privacy · Apache-2.0