Chrome DevTools for AI agents — record, inspect, fork, replay, diff.
Project description
rewind-agent
Python SDK for Rewind — the time-travel debugger for AI agents.
Record every LLM call. See the exact context window. Fork, fix, replay from failure — without re-running.
Install
pip install rewind-agent
This installs both the Python SDK and the rewind CLI. The native binary is auto-downloaded on first use.
Quick Start
One line to start recording — no proxy, no setup:
import rewind_agent
import openai
rewind_agent.init() # patches OpenAI + Anthropic automatically
client = openai.OpenAI()
client.chat.completions.create(model="gpt-4o", messages=[...])
# Recorded to ~/.rewind/ — inspect with: rewind show latest
Or as a scoped session:
with rewind_agent.session("my-agent"):
client = openai.OpenAI()
client.chat.completions.create(model="gpt-4o", messages=[...])
Two Recording Modes
| Direct mode (default) | Proxy mode | |
|---|---|---|
| Setup | rewind_agent.init() |
rewind record in a second terminal |
| How | Monkey-patches SDK clients in-process | HTTP proxy intercepts LLM traffic |
| Best for | Python agents, quick iteration | Any language, polyglot teams |
# Direct mode (default — no proxy needed)
rewind_agent.init(mode="direct")
# Proxy mode (requires `rewind record` running)
rewind_agent.init(mode="proxy", proxy_url="http://127.0.0.1:8443")
Replay from Failure
Agent failed at step 5? Fix your code, then replay — steps 1-4 are cached (instant, free), step 5 re-runs live:
with rewind_agent.replay("latest", from_step=4):
result = my_agent.run("Research Tokyo population")
# Steps 1-4: instant cached responses (0ms, 0 tokens)
# Step 5+: live LLM calls, recorded to a new forked timeline
After the replay, diff the timelines: rewind diff <session> main replayed
Regression Testing
Turn any session into a baseline. After code changes, check for regressions:
from rewind_agent import Assertions
# Check the latest session against a known-good baseline
result = Assertions().check("booking-happy-path", "latest")
assert result.passed, f"Regression: {result.failed_checks} checks failed"
Checks step types, models, tool calls, error status, and token usage. Supports configurable tolerance:
result = Assertions().check("my-baseline", "latest", token_tolerance=0.15)
print(f"Passed: {result.passed_checks}/{result.total_checks}")
Agent Hooks
Enrich recordings with semantic labels:
@rewind_agent.step("search")
def search(query: str) -> str:
return client.chat.completions.create(...)
@rewind_agent.tool("calculator")
def calculate(a: float, b: float) -> float:
return a + b
with rewind_agent.trace("analysis"):
rewind_agent.annotate("confidence", 0.92)
result = search("Tokyo population")
Framework Support
Native (auto-detected on init()): OpenAI Agents SDK, Pydantic AI — zero config.
Wrapper (manual setup):
# LangGraph
graph = rewind_agent.wrap_langgraph(compiled_graph)
# CrewAI
crew = rewind_agent.wrap_crew(crew)
Any other framework works via the HTTP proxy — point OPENAI_BASE_URL at rewind record.
Learn More
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rewind_agent-0.15.1.tar.gz.
File metadata
- Download URL: rewind_agent-0.15.1.tar.gz
- Upload date:
- Size: 106.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f64e83ceda2a98549789fb991c4340cb5bb411f117c87967e4a0aae4bb1ba1a
|
|
| MD5 |
dffc6a75799b59466c791b76b829480c
|
|
| BLAKE2b-256 |
e9e618ccef3722e02b6b524453eb4a193aac55ac95f107d621f3aaeff0716dce
|
File details
Details for the file rewind_agent-0.15.1-py3-none-any.whl.
File metadata
- Download URL: rewind_agent-0.15.1-py3-none-any.whl
- Upload date:
- Size: 126.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfa1c0ba9db92d8e68604092216f119577a3536025a63d6e47b662d92341090d
|
|
| MD5 |
b31978feb0c9be4e8e797b4e577d3bde
|
|
| BLAKE2b-256 |
1bce7eb314b3977a770cd7348fa3b1ef35f7561d6f5c8a180602a94072856f52
|