Record production traces with <0.1% overhead. Replay them locally. Step backwards to the root cause.
pip install retracesoftware
PREVIEW RELEASE: Apache-2.0 OSS · <0.1% overhead · Deterministic replay · Python 3.11/3.12 · Backed by PWV
The first reverse debugger for CPython.
Deterministic Replay
Reproduce the exact execution, every time
Backwards debugging
Step backwards through production crashes. First reverse debugger for CPython.
Captures external interactions
Network/DB/time/file I/O
recorded for replay.
No code changes
Works without rewriting your app.
East set-up
Retrace is a pip-installed agent
Set an env var, run your app, and you’re recording.
source .venv/bin/activate
python -m pip install retracesoftware
python -m retracesoftware install
No app rewrite required.
python examples/flask_demo.py
Network, DB, time and file I/O are captured for replay.
# Open recordings/flask.retrace
# Start replay from the Retrace sidebar
# Step forwards and backwards
No live Flask process required.
The replay is deterministic: the debugger runs the recorded execution, not a live process.
Provenance shows you why.
A recording lets you step through the execution. But when you're staring at a wrong value, the real question is: where did it come from?
Retrace's provenance engine traces any value back through the execution — from the point you noticed it, through every transformation, to the original input that caused it.
-
Select any value. Jump to its origin.
Click a variable in the debugger and instantly see the exact line and inputs that produced it.
-
Chain backwards through transformations.
Each origin has its own provenance. Keep drilling back until you reach the root cause.
-
Works on every value, not just outputs.
Intermediate variables, function returns, container mutations — provenance covers everything in the execution.
Now in early access with select design partners.
Three clicks from ZeroDivisionError to root cause: the API caller sent qty: "0" in the request body. No manual searching. No log correlation.
Python 3.12 support is in progress, with broader coverage planned before GA.
It records at the Python runtime layer (not
A re-run often takes a different path.
Retrace lets you debug the exact execution that happened, after the fact.
Retrace records the real execution and lets you replay it deterministically, so you can inspect the actual code path and state.
Retrace records external interactions (DB, API calls, file I/O, time) during a real run, then replays them deterministically in your local debugger — no prod access needed.
Perfect for:
- Debug production-only bugs you can’t reproduce
Replay the exact execution that already happened. No repro steps required. - Reproduce race conditions and timing-sensitive failures
Capture and deterministically replay concurrency, async behavior, and thread interactions. - Stabilise flaky CI tests
Replay the exact failing run to understand and fix non-deterministic test failures. - Debug systems with external dependencies
Reproduce failures involving databases, APIs, file I/O, and other external services. - Investigate failures after the fact
Inspect real code paths and state from incidents that are already over. - Let AI agents debug your production failures Retrace's DAP integration lets tools like Claude Code and Cursor step through recorded executions programmatically, including backwards.