Recording with the CLI

The rion CLI records your own programs locally and uploads the trace to your rr-dash account. Everything runs inside a Docker sandbox, so the only thing you install is the CLI itself (via npx).

Requirements

  • Docker, running. The recording happens inside a privileged rr

    container.

  • Node 18+ (for npx).

  • A program built with debug info, as a Linux binary (see

    Edge cases).

First run

one-time setupbash
# Sign in — opens your browser to approve this CLI:
npx @brett_lamy/rion login

# Verify Docker + build the recorder image (first time, ~10-25 min):
npx @brett_lamy/rion doctor --build

rion login uses a browser device flow: the CLI opens a page, you click Approve while signed in, and a scoped API token is saved to ~/.config/rion/auth.json. Nothing is uploaded anonymously.

Recording

From your project directory:

bash
npx @brett_lamy/rion record -- ./target/debug/your-program

Your default browser pops open on the live trace the moment recording starts — it streams in while your program is still being recorded. The recording also shows up in your dashboard.

Arguments after -- are your program and its args, run verbatim inside the sandbox: rion record -- ./bin --flag value.

Non-interactive / CI

Skip the browser flow with an API token (create one on your dashboard):

bash
RION_API_KEY=rrd_… npx @brett_lamy/rion record -- ./your-program

Set RION_NO_OPEN=1 (or run in CI) to suppress the browser auto-open.

How it works

  1. rr record runs your command deterministically inside the sandbox.

  2. The trace is replayed under gdb to extract per-line hit counts, an ordered

    linetrace, and sampled call stacks + locals.

  3. The bundle is uploaded through the dashboard's authenticated API — the

    Durable Streams credentials never leave the server.