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.
uv tool install roar-cli — 30 seconds, no account
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.
- dataset version unknown
- preprocessing unavailable
- cannot reproduce exactly
- 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:
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.
That prefix is the entire adoption cost. Here's where everything sits:
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.
What leaves your machines. And what never does.
Capture is entirely local — nothing is published until roar register.
Then, the boundary:
- models, checkpoints, and datasets
- your source code and files
- secret values — redacted before publish
- credentials in git remotes — scrubbed automatically
- 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.
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 →
See it on one of your own runs.
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.
Point roar at your next run.
No account, no code changes. Prefix your command with
roar run and see the DAG it infers.