@brett_lamy/rion
v0.1.2
Published
Record your Rust/C/C++/Go program under rr and time-travel through every line in the rr-dash dashboard — created by replay.io
Maintainers
Readme
rion
Record your Rust / C / C++ / Go program under rr and time-travel through every line it executed — hit counts, call stacks, watch values at every step, a flamechart, and a scrubbable timeline that streams in live while the recording is still running.
Created by replay.io — the time-travel debugging industry leaders.
npx @brett_lamy/rion record -- ./your-programYour default browser pops open on the live trace the moment recording starts.
Requirements
- Docker — recording runs inside a sandboxed
rrcontainer (rion builds the image on first use:npx @brett_lamy/rion doctor --build) - Node 18+
- A program built with debug info (
-g -O0, cargo dev profile, orgo build -gcflags='all=-N -l') — the binary must be a Linux build, since it runs inside the container
Getting started
# 1. Sign in (opens your browser to approve this CLI):
npx @brett_lamy/rion login
# 2. Check your setup (and build the recorder image on first run):
npx @brett_lamy/rion doctor --build
# 3. Record, from your project directory:
npx @brett_lamy/rion record -- ./target/debug/your-programThe trace uploads to rr-dash under your account and starts streaming immediately — you can watch execution arrive line by line while the program is still being recorded.
Commands
| Command | What it does |
| --- | --- |
| rion login [--server <url>] | Browser-approval sign-in; token cached at ~/.config/rion/auth.json |
| rion logout | Forget the saved token |
| rion doctor [--build] | Verify Docker, the recorder images, and connectivity |
| rion record [opts] -- <cmd…> | Record <cmd> under rr and upload the trace |
record options
| Flag | Default | Description |
| --- | --- | --- |
| --lang rust\|c\|cpp\|go | auto-detected | Source language |
| --src <dir> | cwd | Project directory (mounted into the sandbox) |
| --title <string> | the command | Trace title in the dashboard |
| --id <recordingId> | generated | Explicit recording id |
| --server <url> | rr-dash prod | Dashboard host |
Environment variables
| Variable | Purpose |
| --- | --- |
| RION_API_KEY | Non-interactive auth (create one at /welcome) — the CI equivalent of rion login |
| RION_HOST | Override the default dashboard host |
| RION_NO_OPEN | Set to 1 to skip auto-opening the trace in a browser |
How it works
rion record runs your command under rr record (software-counters mode)
in a Docker sandbox, replays the trace under gdb to extract per-line hit
counts, an ordered linetrace, and sampled call stacks + locals at every
step, then uploads everything through the dashboard's authenticated API.
Nothing is uploaded anonymously; recordings are attributed to your account.
Prefer zero local setup? The Playground compiles and records small programs in a cloud sandbox instead.
