{"id":50742755,"url":"https://github.com/loplop-h/rewind","last_synced_at":"2026-06-10T18:02:04.253Z","repository":{"id":354442421,"uuid":"1223605949","full_name":"loplop-h/rewind","owner":"loplop-h","description":"Time-travel debugger and shareable replay for Claude Code sessions. Capture every event, scrub the timeline, roll back files to any point, export the session.","archived":false,"fork":false,"pushed_at":"2026-04-28T16:13:39.000Z","size":232,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-28T16:30:47.195Z","etag":null,"topics":["ai","ai-tools","claude-code","cli","debugger","developer-tools","mcp","observability","python","time-travel-debugger"],"latest_commit_sha":null,"homepage":"https://github.com/loplop-h/rewind","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/loplop-h.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-28T13:35:29.000Z","updated_at":"2026-04-28T16:13:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/loplop-h/rewind","commit_stats":null,"previous_names":["loplop-h/rewind"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/loplop-h/rewind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loplop-h%2Frewind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loplop-h%2Frewind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loplop-h%2Frewind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loplop-h%2Frewind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/loplop-h","download_url":"https://codeload.github.com/loplop-h/rewind/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loplop-h%2Frewind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34163252,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-tools","claude-code","cli","debugger","developer-tools","mcp","observability","python","time-travel-debugger"],"created_at":"2026-06-10T18:02:01.071Z","updated_at":"2026-06-10T18:02:04.248Z","avatar_url":"https://github.com/loplop-h.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rewind\n\n\u003e Time-travel debugger and shareable replay for Claude Code sessions.\n\n[![CI](https://github.com/loplop-h/rewind/actions/workflows/ci.yml/badge.svg)](https://github.com/loplop-h/rewind/actions/workflows/ci.yml)\n[![PyPI version](https://img.shields.io/pypi/v/rewindx.svg?label=pypi%20%C2%B7%20rewindx)](https://pypi.org/project/rewindx/)\n[![Python versions](https://img.shields.io/pypi/pyversions/rewindx.svg)](https://pypi.org/project/rewindx/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Coverage: 87%](https://img.shields.io/badge/coverage-87%25-brightgreen.svg)](https://github.com/loplop-h/rewind/actions/workflows/ci.yml)\n\n![rewind tui — timeline of a Claude Code session](docs/images/hero.png)\n\n\u003e **[Watch the 30-second live demo (MP4 · 691 KB)](docs/images/demo.mp4)**\n\n```bash\npip install rewindx       # PyPI package; binary is `rewind`\nrewind cc setup           # wires up Claude Code hooks (idempotent)\n# ...use Claude Code normally...\nrewind tui                # browse the most recent session\nrewind goto 6             # restore the file system to just before event #6\nrewind export --format markdown --out session.md\n```\n\nLocal-first, no API keys, MIT licensed.\n\n## What it does\n\nClaude Code does dozens of tool calls per session. The agent's transcripts\nare JSONL, hard to read, and impossible to *replay*. `git diff` shows files\nbut not the reasoning. When the agent breaks something subtle, you have\nnothing to fall back on. `rewind` closes that loop:\n\n- **Observability** — every prompt, tool call, file edit, and cost\n  recorded in a per-session SQLite event store with content-addressed\n  blobs.\n- **Recovery** — `rewind goto \u003cseq\u003e` restores the file system to any prior\n  point. Each rollback creates a checkpoint so `rewind undo` is one\n  command:\n\n  ![rewind goto + undo, recorded live](docs/images/demo-rollback.gif)\n\n- **Shareable replay** — `rewind export` renders the session as a\n  privacy-masked Markdown or text transcript. (GIF and MP4 backends ship\n  in 0.2.)\n\n## Status\n\nPre-launch alpha (v0.1.0). The core pipeline is production-grade: 131\ntests, 87% branch coverage, mypy strict, ruff clean, multi-OS / multi-Py\nCI. The non-interactive TUI is what you see above; full scrubbable TUI\nlands in 0.2.\n\n## What it captures\n\n| Hook              | Stored event   | Snapshots                                                |\n|-------------------|----------------|----------------------------------------------------------|\n| SessionStart      | `session_start`| —                                                        |\n| UserPromptSubmit  | `user_prompt`  | —                                                        |\n| PreToolUse        | `pre_tool`     | before-content of every Edit / Write / MultiEdit path    |\n| PostToolUse       | `post_tool`    | after-content + classification (productive / wasted / neutral) |\n| Stop              | `session_end`  | totals (cost, tokens, events)                            |\n\n## CLI\n\n```text\nrewind --version\nrewind cc {setup,uninstall,status} [--scope user|project]\nrewind capture {session-start,user-prompt,pre-tool,post-tool,session-end}    # reads stdin\nrewind sessions {list,show,delete}\nrewind tui [SESSION_ID] [--seq N]\nrewind goto SEQ [--session ID] [--cwd PATH] [--force] [--dry-run]\nrewind undo\nrewind stats [SESSION_ID] [--json]\nrewind export [SESSION_ID] [--format text|markdown] [--out PATH] [--no-mask]\n```\n\n## Storage layout\n\n```\n~/.rewind/\n├── config.toml                  # optional, all fields have sensible defaults\n├── current_session.txt          # active session id\n├── checkpoints/                 # one JSON per rollback (used by `rewind undo`)\n└── sessions/\n    └── \u003csession_id\u003e/\n        ├── events.db            # SQLite, WAL mode, schema v1\n        └── blobs/\u003caa\u003e/\u003cbb\u003e/\u003csha256\u003e\n```\n\nPer-session storage isolates blast radius: deleting one session is one\n`rm -rf`, nothing else is affected.\n\n## Privacy\n\n- Local-only: zero network calls. No telemetry. Ever.\n- `rewind export` masks file contents to head/tail and redacts env-shaped\n  secrets by default. Pass `--no-mask` to opt out explicitly.\n- Add `.rewind/` to `.gitignore` if you keep a per-project home.\n\n## Documents\n\n- [PLAN.md](PLAN.md) — product plan and pitch\n- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — schemas, data flow, modules\n- [docs/ROADMAP.md](docs/ROADMAP.md) — six-phase roadmap\n- [docs/LAUNCH.md](docs/LAUNCH.md) — pre-launch + launch playbook\n- [docs/DECISIONS.md](docs/DECISIONS.md) — ADRs\n- [docs/NAMING.md](docs/NAMING.md) — name candidates and verification\n- [CHANGELOG.md](CHANGELOG.md)\n- [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Sister projects\n\n`rewind` is one corner of an ecosystem of open-source tools for Claude Code:\n\n| Project    | Concern                  | Repo                                    |\n|------------|--------------------------|-----------------------------------------|\n| `spent`    | cost tracking            | https://github.com/loplop-h/spent       |\n| `debtx`    | code quality             | https://github.com/loplop-h/debtx       |\n| `mcpguard` | MCP security             | https://github.com/loplop-h/mcpguard    |\n| `rewind`   | observability + recovery | (this repo)                             |\n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floplop-h%2Frewind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floplop-h%2Frewind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floplop-h%2Frewind/lists"}