Production-safe record-replay for Python. Capture real executions and replay them deterministically
pip install retracesoftware.proxy
PREVIEW RELEASE: Apache-2.0 OSS · ≤2% overhead · Deterministic replay · Python 3.11/3.12 · Backed by PWV
Production-safe recording
Minimal overhead.
Safe in production
Deterministic Replay
Reproduce the exact execution, every time
VS Code debugging
Debug a past production execution
Captures external interactions
Network/DB/time/file I/O
recorded for replay.
No code changes
Works without rewriting your app.
Benchmarked overhead
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 through code
# Inspect variables and control flow
# Debug the exact execution that already happened
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. - Debug non-deterministic systems (including AI calls and agents)
Understand failures where behavior depends on timing, model responses, or external tools.