Skip to content
for ML platform teams

Your team trains every day. Why was last week's model better?

roar records what every run actually read, wrote, and depended on — no code changes, <3% overhead. GLaaS makes it queryable by your whole team. Lineage becomes a capability you ship, not a quarter-long build.

live proof — nothing to install

Two identical checkpoints. One can explain itself.

Same bytes — but one was trained under observation. Click through to its real lineage on GLaaS: dataset, preprocessing, code, environment.

hash only artifact only
roar runtime lineage captured
LLM
nanochat
sha256: 7fa2d9c4a3b2e1f0d8c591aa...
  • dataset version unknown
  • preprocessing unavailable
  • cannot reproduce exactly
LLM
nanochat
glaas://artifact/2a38451304ce1fc6...
  • dataset version linked
  • preprocessing traceable
  • reproducible from source runs

roar captures what actually ran. GLaaS lets anyone on the team look it up by hash.

or paste the hash here and dereference it yourself:

where it sits

Two additions. Zero replacements.

roar sits in front of the process; GLaaS sits beside your storage. Everything else is untouched — nothing to migrate, nothing to rip out.

-python train.py
+roar run python train.py

That prefix is the entire adoption cost. Here's where everything sits:

TReqs training requests optional review & budget gate before runs — add later, if ever
Your orchestration your stack Kubernetes · Slurm · Ray · Airflow · cloud jobs
roar runtime observer added records inputs, outputs, args, env, git state — per process tree
Your training code your stack PyTorch · JAX · TensorFlow · W&B · MLflow · shell glue
Your compute & storage your stack AWS · GCP · on-prem GPU clusters · S3 · GCS · shared FS
GLaaS lineage graph

Runs and artifacts as a content-addressed graph — code, environment, datasets, checkpoints — queryable in both directions, by anyone on the team.

Stores the graph, not your artifacts. Those stay in your existing systems — GLaaS references them by hash.

If it ran, roar saw it — human, scheduler, or agent.

the security question, answered first

What leaves your machines. And what never does.

Capture is entirely local — nothing is published until roar register. Then, the boundary:

stays never leaves your infrastructure
  • models, checkpoints, and datasets
  • your source code and files
  • secret values — redacted before publish
  • credentials in git remotes — scrubbed automatically
registered published to GLaaS, under your scope
  • content hashes of inputs and outputs
  • commands, arguments, exit status, timing
  • package versions, git SHA, environment context (post-redaction)
  • the graph edges — which job produced which artifact

Private by default for teams

Team lineage lives in a private scope, readable only inside it. Public is an explicit choice.

Redaction is confirmed, not silent

roar names detected secrets and asks before publishing. --dry-run shows the exact payload.

No lock-in, self-host available

Export your history as an open JSON graph anytime. Enterprise runs GLaaS self-hosted.

build, buy, or borrow

Your team could build this. It shouldn't have to.

Lineage capture looks like a two-sprint internal tool. These are the parts that aren't:

Syscall-level observation that survives reality

eBPF and preload tracers follow the full process tree — forks, execs, torchrun workers, shell glue. No decorators, no logger discipline to enforce.

<3% measured overhead

BLAKE3 hashing, benchmarked end-to-end. For GPU-bound jobs the footprint is effectively zero — see the numbers.

Multi-node and cloud I/O, captured

Per-task lineage on Ray; an S3/GCS proxy records object-storage reads and writes. Composite artifacts treat a 5M-file dataset as one node.

Audit output you can hand over

One click from any DAG to a CycloneDX 1.7 AI-BOM, scored against G7/CISA/NTIA guidance. Engineering lineage doubles as audit evidence.

Free for individuals · team plans from $19/writer seat · readers always free · full pricing →

next step

See it on one of your own runs.

if you run the platform

Hand it to whoever trains next.

The fastest evaluation: one engineer, one training job, thirty seconds. Send them this page — or talk to us about a pilot.

Watch the demo Talk to us
if you run training jobs

Point roar at your next run.

No account, no code changes. Prefix your command with roar run and see the DAG it infers.

$uv tool install roar-cli
or: pipx install roar-cli  ·  pip install roar-cli  ·  read the docs →