Record production failures with <0.1% overhead. Debug them backwards
pip install retracesoftware.proxy
PREVIEW RELEASE: Apache-2.0 OSS · <0.1% overhead · Deterministic replay · Python 3.11/3.12 · Backed by PWV
Production-safe recording
<0.1% overhead.
Safe to leave always-on.
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.
<0.1% overhead
Always-on recording. No performance trade-off.
See benchmarks →
python -m pip install
--upgrade pip
python -m pip install
retracesoftware.proxy retracesoftware.autobundle
# Installs the Retrace runtime
# Automatically configures support for Python 3.11 / 3.12
# No code changes required
RRETRACE_RECORDING_PATH=./
recordings \
python your_app.py
# Your app runs normally
# External interactions (DB, network, time, file I/O) are captured
# Timing and concurrency are preserved
# The recording is written to disk
retrace run ./recordings
# Or open it directly in VS Code:
code ./recordings/retrace.replay
# Set breakpoints
# Step forwards and BACKWARDS
# Inspect variables at any point
# The first reverse debugger
# for production Python
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.