The ros command line
Everything the app does, scriptable. The CLI and the app share the same stores — they are always in agreement.
Workspaces & capture
ros init ~/project # create a workspace
ros status # what's in here
ros run "python train.py --lr 0.05" -n baseline -p lr=0.05 -s 42 -t demo
ros runs list # the run board
ros trace <run-id> # provenance of a run
ros pack create <run-id> # replayable repro pack
ros flow pipeline.yaml # multi-stage runs, linked
Knowledge
ros note new "Title" --log --mood 4 --time 90 # logbook entry
ros note seal <note-id> # tamper-evident seal
ros note verify # verify the whole chain
ros bib add 1706.03762 # arXiv/DOI import with PDF
ros bib import-zotero --path ~/Zotero
ros paper new "Title" && ros paper insert-cite vaswani2017
ros paper check # figures still match their runs?
ros paper export --pdf
Planning
ros todo add "Write results" --due 2026-08-02 --priority
ros todo add "Backup" --every weekly
ros agenda # this week
ros agenda export-ics # to any calendar app
ros overview # all workspaces at once
Sync & account
ros account register you@lab.org --server https://sync.example.org
ros account login you@lab.org --server https://sync.example.org
ros account recover you@lab.org --server … # recovery-code reset
ros account passphrase # rotate passphrase + recovery code
ros sync enable # this workspace ⇄ the server
ros sync now
ros lab create my-lab && ros lab invite colleague@lab.org
ros publish <element-id> --to my-lab # share ONE element
Escape hatches
ros export --all # plaintext archive of everything
ros ask "what did I try last week?" # AI over your workspace (optional)
Every mutation the CLI makes is recorded exactly
like the app's — the two never diverge, and both sync.