Skip to content
roar Run Observation & Artifact Registration

Capture what actually ran. Without changing your code.

If it ran, roar saw it. Prefix your training script with roar run. A runtime observer attaches to the process and records file I/O, args, environment, dependencies and produced artifacts.

no instrumentation · no pipelines · no declarations
~/your-model
%roar run
    repo @ 726f617 [recorded]
    loading s3://bucket/train/part-*.parquet [recorded]
    applying params.yaml [recorded]
    loading checkpoint pre_trained_model_v3 [recorded]
    training… saving model.pt [recorded]

Install roar.

macOS, Linux x86_64/aarch64 · Python 3.10+ · platform notes →

$ uv tool install roar-cli
or: pipx install roar-cli  ·  pip install roar-cli
how you use roar

Run. Show. Diff. Reproduce.

No logging. No decorators. No YAML. Prefix any command with roar run.

% roar run <cmd>

Run under observation.

Wraps any command — Python, bash, torchrun — and records everything it reads, writes, and depends on.

% roar show <run>

Inspect a run.

Prints the inferred DAG, the arguments, the environment, the files touched, and the artifacts produced.

% roar diff <a> <b>

Compare two runs.

See exactly what moved: code, data, hyperparameters, hardware. No more "I think something changed."

% roar reproduce <run>

Re-run the way it actually ran.

Same data, same environment, same recipe — rebuilt from the captured lineage, not from memory.

What gets captured

Everything that influences the result.

No logger to configure. No decorators to sprinkle. roar watches the process and records what matters.

files read + written
Every local file the process touches, hashed for integrity.
cloud objects
S3, GCS reads and writes — tracked alongside local I/O.
arguments + environment
CLI args, env vars, working directory — the runtime context.
packages + dependencies
Python packages, versions, and transitive deps, auto-inferred.
git repo + commit
Current commit SHA plus any uncommitted changes that were actually used.
artifacts produced
Every output file, hashed and linked back to the run that made it.
No changes to your stack

It works with what you already have.

roar sits in front of your training script, not inside it. Your framework, your orchestrator, your storage — all unchanged.

PyTorch
no wrappers or decorators
JAX
no wrappers or decorators
TensorFlow
no wrappers or decorators
Ray / OSMO
multi-node workflows
S3 / GCS
cloud-native I/O
W&B, MLflow
keep your experiment tracker
any shell
wrap bash, make, whatever
no code changes
<3% overhead · benchmarks →
How it observes

roar watches syscalls across the full process tree — including forks and execs. No instrumentation, no wrappers: it observes what your process actually does.

Measured overhead

Typically <3% end-to-end. For GPU jobs that run hours, the observer's footprint is effectively zero. Artifact hashing uses BLAKE3. See benchmarks →

roar is one piece

Pair it with the rest of TReqs.

roar captures lineage locally. roar register publishes it to GLaaS — persistent, content-addressed, and queryable by your whole team. For AI-native coordination on top of that, connect TReqs.

GLaaS

Make the lineage a team source of truth.

GLaaS stores every run and artifact your team produces, content-addressably. Resolve any hash to the recipe that made it.

Read about GLaaS →
TReqs

Coordinate who's running what — human or agent.

Training requests let the team review and approve runs before compute starts. Works for humans and for AI agents that want to train things.

TReqs →
Try it on your last run

Install roar. Point it at a script. See what you've been missing.

Thirty seconds to install. No account needed to start.

$ uv tool install roar-cli
or: pipx install roar-cli  ·  pip install roar-cli