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.