Your agent's chatpasted
+ 11 more lines
The record of the ML experiments your coding agents run: what was tested, what it showed, and what still needs you.
pip install rabbit-brain
Use Rabbit Brain to keep track of this research: [what you're trying to find out]. If I leave this blank, record where the work in this repository stands now. Set up: - If `rb --version` fails, install it with `uv tool install rabbit-brain` (or `pipx install rabbit-brain`). - If this repository has no `.rb/` yet, run `rb init "<the work's theme>"`, then add my question with `rb question add`. - Run `rb docs --start` and follow it. Run `rb context --model <your model id>` before anything else. Record from the repository's own files, and cite them: the questions, the experiments with each setting and where its value came from, the rules a result must meet, and the runs. Run new experiments through `rb journal run`. Never compute findings, rankings or regressions yourself: rb computes them. Calls on results are mine. Record one only when I ask, in my words, and give me the `rb confirm` command. If I want a page to share, run `rb page`: it writes the record's page as one file. If I want it in my rabbitbrain.ai account, run `rb login` (I approve its code myself) and then `rb sync`. Finish with `rb status` exactly as printed, what you recorded, what rb says needs me, and where the page is if you wrote one.
How it works
The prompt goes into your coding agent's chat. The agent records where the work stands from the repository's own files, and rb computes what it shows.
Your agent's chatpasted
What it runsfrom the prompt
rb init "<the work's theme>"starts the record in .rb/rb docs --starthow to record work already donerb context --model <your model id>the state of the work, read firstrb journal run -- <command>each new experiment, as it runsrb statuswhere it stands, and what needs youFrom the demo
Three catches from the demo study. Each comes from the project's own files, not from the agent's summary.
The summary said worked examples lead by 22.9 points. Checked against its own runs, that lead isn't reproduced.
The baseline scores 13.07 where the model's published score is 49.6. rb shows it and waits for your call.
The success rule was written after the results came in, and the estimate falls short of it.
Every number has a source
What the record keeps, as rb shows it: the rule, the files behind each run, your call, and the page you share.
loss-budgetrule ≤ 0.05
criterion met · loss
change.val_loss: +0.01337 [+0.006287, +0.02045]
paired difference, t interval, 3 seeds, 95% (rb)
Each criterion is a rule over one comparison, kept with when it was declared. rb reads it from the runs, with its interval and its units. loss-budget is the criterion's id: its name in every command.
Receipts · rb tour3 runs
config out/s1/config.yaml: 2 match, 0 differ, 0 absent
Each run keeps the files it came from, hashed, with the commit and the environment. A run whose config disagrees with the spec is shown and not counted.
Your callloss-budget
criterion met · loss$ rb decide loss-budget accept \ --why "within budget on all three seeds" dp3kmue: accepted loss-budget: within budget on all three seeds
Accept, reject or investigate stay yours, each with its reason. A call an agent records waits until you confirm it with rb confirm.
A linkrabbitbrain.ai/demo
A real record, kept by an agent with rb.
rb page writes the record's page as one file to send anywhere. rb export --with-record writes a copy to host, which rb clone reads. rb sync keeps a private copy in your rabbitbrain.ai account, to share by a link you can revoke: see two real records in a sample account.
Illustrative previews, in rb's own words and numbers. The link is one of the two records at rabbitbrain.ai/demo.
Under the hood
Your agents write the record as they work. rb checks it against your repository and works out every finding from the runs. A fresh agent, or a colleague, starts from the record, not from old chat transcripts. The record is plain files in your repository, like your code.
rb journal run, rb criterion add, rb note add: from the terminal, Python or MCP.rb context briefs a fresh agent; rb open, rb page or a link shows you.rb confirm.Checked, not taken on trust
rb reads the sources itself, and works out each finding from the runs every time it is read.
rb finds each value in the file or database row it cites. A value nothing has checked reads provisional, never verified.
No finding is stored. Each is worked out from the recorded runs when it is read, by the same definitions every time.
Each criterion keeps when it was declared. One written after its evidence says so on every reading of it.
Accept, reject, park or ship: each keeps its reason and who made it. One from an agent waits for your rb confirm.
Share
Your agents run the experiments. Rabbit Brain keeps track of what you've actually learned.
The math study clones with its code, so your agent can rerun it. The INT8 study clones the record only: its code is not published.
An account at rabbitbrain.ai is free to make, and only rb login, rb sync and rb logout use it.
Free and open source · plain files in your repo
Start
Python 3.10 or later, on Linux, macOS or Windows (preview). rb init sets up the agents it finds in the repository.
pip install rabbit-brain
rb init "INT8 ResNet-50 on ImageNet"
Or uv tool install rabbit-brain. To try it without installing anything, uvx --from rabbit-brain rb tour.
rb spec set int8 optim.lr --source configs/train.yaml#optim.lr
int8/optim.lr = 0.1 · verified in configs/train.yaml#optim.lr
rb show loss-budget
Criterion loss-budget on int8 (primary, own): INT8 adds at most 0.05 validation loss
loss-budget INT8 adds at most 0.05 validation loss
criterion met · loss · change.val_loss ≤ 0.05 (n ≥ 3)
reads: change.val_loss: +0.01337 [+0.006287, +0.02045] · paired difference, t interval, 3 seeds, 95% (rb)
result: loss: the interval clear of 0 on the worse side (lower is better)
rule: criterion met: estimate +0.01337 ≤ 0.05
timing: declared before the evidence (by production times)
units: 3 seeds
integrity: ok
runnh4zty: difference +0.0105 (file) · unit seed=1 · seed=1
runuzfw2n: difference +0.0134 (file) · unit seed=2 · seed=2
runhrmyaq: difference +0.0162 (file) · unit seed=3 · seed=3
rb decide loss-budget accept --why "within budget on all three seeds"
dp3kmue: accepted loss-budget: within budget on all three seeds
made on loss-budget: +0.01337 [+0.006287, +0.02045], n 3 (rb): loss, criterion met
Next: rb status
rb tour builds a small project and runs the whole loop. rb init --dry-run lists every file it would write, and rb remove takes out only what is rb's. The docs cover install, your first record and cookbooks; rb docs prints the manual.
For agents
Rabbit Brain (rb) is a command-line tool that keeps the record of ML experiments as plain YAML in .rb/, next to the code. If a project has a .rb/ directory, run rb context --model <your model id> before anything else: it is the state of the work, and it replaces any summary of it.
Record from the repository's own files and cite them. Run new experiments through rb journal run. Do not compute findings, rankings or regressions yourself: rb computes them each time they are read. Calls on results are the user's: record one only when they ask, with their words in --words, and give them the rb confirm command it waits for.
Every command takes --json and prints one JSON object; when one fails, read errors[].fix. The record needs no account: only rb login, rb sync and rb logout use one, at rabbitbrain.ai.