Skip to main content

Time-travel debugger and shareable replay for Claude Code sessions.

Project description

rewind

Time-travel debugger and shareable replay for Claude Code sessions.

rewind tui — timeline of a Claude Code session

pip install rewindx       # PyPI package; binary is `rewind`
rewind cc setup           # wires up Claude Code hooks (idempotent)
# ...use Claude Code normally...
rewind tui                # browse the most recent session
rewind goto 6             # restore the file system to just before event #6
rewind export --format markdown --out session.md

Local-first, no API keys, MIT licensed.

What it does

Claude Code does dozens of tool calls per session. The agent's transcripts are JSONL, hard to read, and impossible to replay. git diff shows files but not the reasoning. When the agent breaks something subtle, you have nothing to fall back on. rewind closes that loop:

  • Observability — every prompt, tool call, file edit, and cost recorded in a per-session SQLite event store with content-addressed blobs.

  • Recoveryrewind goto <seq> restores the file system to any prior point. Each rollback creates a checkpoint so rewind undo is one command:

    rewind goto + undo demo

  • Shareable replayrewind export renders the session as a privacy-masked Markdown or text transcript. (GIF and MP4 backends ship in 0.2.)

Status

Pre-launch alpha (v0.1.0). The core pipeline is production-grade: 131 tests, 87% branch coverage, mypy strict, ruff clean, multi-OS / multi-Py CI. The non-interactive TUI is what you see above; full scrubbable TUI lands in 0.2.

What it captures

Hook Stored event Snapshots
SessionStart session_start
UserPromptSubmit user_prompt
PreToolUse pre_tool before-content of every Edit / Write / MultiEdit path
PostToolUse post_tool after-content + classification (productive / wasted / neutral)
Stop session_end totals (cost, tokens, events)

CLI

rewind --version
rewind cc {setup,uninstall,status} [--scope user|project]
rewind capture {session-start,user-prompt,pre-tool,post-tool,session-end}    # reads stdin
rewind sessions {list,show,delete}
rewind tui [SESSION_ID] [--seq N]
rewind goto SEQ [--session ID] [--cwd PATH] [--force] [--dry-run]
rewind undo
rewind stats [SESSION_ID] [--json]
rewind export [SESSION_ID] [--format text|markdown] [--out PATH] [--no-mask]

Storage layout

~/.rewind/
├── config.toml                  # optional, all fields have sensible defaults
├── current_session.txt          # active session id
├── checkpoints/                 # one JSON per rollback (used by `rewind undo`)
└── sessions/
    └── <session_id>/
        ├── events.db            # SQLite, WAL mode, schema v1
        └── blobs/<aa>/<bb>/<sha256>

Per-session storage isolates blast radius: deleting one session is one rm -rf, nothing else is affected.

Privacy

  • Local-only: zero network calls. No telemetry. Ever.
  • rewind export masks file contents to head/tail and redacts env-shaped secrets by default. Pass --no-mask to opt out explicitly.
  • Add .rewind/ to .gitignore if you keep a per-project home.

Documents

Sister projects

rewind is one corner of an ecosystem of open-source tools for Claude Code:

Project Concern Repo
spent cost tracking https://github.com/loplop-h/spent
debtx code quality https://github.com/loplop-h/debtx
mcpguard MCP security https://github.com/loplop-h/mcpguard
rewind observability + recovery (this repo)

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rewindx-0.1.2.tar.gz (39.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rewindx-0.1.2-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

Details for the file rewindx-0.1.2.tar.gz.

File metadata

  • Download URL: rewindx-0.1.2.tar.gz
  • Upload date:
  • Size: 39.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for rewindx-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4f4013b32ec473b5e679b5d9ca2f3da4834173f9d8666bdd8fc2d4545b3ee415
MD5 9c88a17ee6b3c4283a13b9b543bb211e
BLAKE2b-256 49e05e9f8b2b5f979076ecd3377a28ef23bfb492cccee7633c50242fc8154a99

See more details on using hashes here.

File details

Details for the file rewindx-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: rewindx-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for rewindx-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 553806d024339d11609d80fa823ae92f33a0a78934e00b82b8548f05dfba5924
MD5 cd2fa2f66d18ed4229d4ef1bbfbeeec7
BLAKE2b-256 06ab7594f07cf9c6a4e2592295487e01f1307f862807d27930ae3583010a7464

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page