01 / Getting started
Open a repository with one command.
RepoRewind requires Node.js 24 (recommended) or Node.js 22.13+ and Git. The public package analyzes a selected local repository and opens a loopback-only viewer automatically.
cd /path/to/your/repository
npx reporewind .
RepoRewind starts on a random 127.0.0.1 port behind an unpredictable session path. Use
--no-open to print the URL without launching a browser and press Ctrl C to stop
it. The fictional rebuild remains available from the Guided case link.
The first run downloads RepoRewind from npm. Repository analysis and viewing then require no account, database, source upload, or application API.
02 / Analyze
Turn Git into a portable archive.
Use the explicit analyzer when you want a JSON archive for the hosted viewer or another tool. It emits commit structure and numeric diffs—not source file contents.
npx reporewind analyze /path/to/repository \
--output ./reporewind-history.json
Choose Open archive and select the resulting JSON file. Contributor email addresses are
omitted unless --include-emails is explicitly supplied. The chosen branch follows
first-parent history, so each city frame represents a state that actually existed on that line of
development.
Useful analyzer options
# Explore another branch or remote ref
npx reporewind /path/to/repository --branch release/3.x
# Bound an exceptionally large history
npx reporewind /path/to/repository --max-commits 5000
# Pipe clean JSON to another tool
npx reporewind analyze /path/to/repository --stdout \
> reporewind-history.json
# Explicitly replace an existing archive
npx reporewind analyze /path/to/repository \
--output ./reporewind-history.json --force
Run npx reporewind --help for the complete interface.
03 / Explore
Read the city grammar.
| Git evidence | Visual form | What it means |
|---|---|---|
| File | Building | Height follows its current line count. |
| Top-level folder | District | A stable neighborhood separated by avenues. |
| Contributor | Traveler | A colored marker at the latest work site. |
| Tag or release | Ring | A landmark in the city and timeline. |
| Rename or refactor | Rebuilding | A neighborhood reshaping event. |
| Deleted file | Ruin | A permanent, selectable trace. |
Search any trace
Press ⌘K, Ctrl K, or / to search files, commit messages and hashes,
contributors, releases, or reachable branch tips. Narrow a query with file:,
commit:, author:, release:, and branch:. Results move
the timeline and open the relevant building when possible.
Compare two eras
Choose Pin this era, travel elsewhere, and open the temporal diff. RepoRewind follows rename chains, reports line and building deltas, ranks consequential sites, and recolors the city: mint for construction, amber for rebuilding, blue for renames, and red for demolition.
04 / Film export
Render a deterministic time-lapse.
Choose Export film for a fixed-timeline 1080p or 4K MP4/WebM film with dates, commit titles, statistics, merge and release cards, and a cinematic grade. Visual frame selection, timestamps, event pacing, and keyframe scheduling are deterministic. Hardware encoders may produce different final bytes.
- MP4 appears only when the exact browser and hardware pass the H.264 WebCodecs probe.
- WebM remains available as the compatibility path when supported by MediaRecorder.
- Exports are cancelable and render entirely in the current browser tab.
- Keep the tab visible during export and use 1080p if 4K exceeds available memory.
05 / Architecture
A local analyzer. A static browser.
The CLI invokes Git without a shell using fixed argument arrays and NUL-delimited output. The browser validates the archive, builds roughly 64 replay checkpoints plus activity indexes in a worker, and reconstructs frames through a bounded cache. Stable coordinates derive from the complete path set, preventing scrubbing from rearranging districts.
The WebGL city is lazy-loaded so import, validation, and search remain useful even if the renderer cannot initialize. Repeated buildings, ruins, travelers, and event signals use instanced geometry. Reduced-motion preferences suppress nonessential motion.
Read the complete architecture guide06 / Privacy & security
No hosted data plane.
RepoRewind has no backend, accounts, analytics, telemetry, cookies, or remote ingestion. The browser keeps imports and indexes in memory. Reload or close the tab to delete that browser copy. The analyzer writes one JSON file to the path selected by the operator.
Archives can still expose names, file paths, commit messages, and sanitized remotes. Review a generated archive before sharing it. Runtime validation caps files at 256 MB, 250,000 commits, and 2,000,000 change entries, and checks bounded strings, valid dates, relationships, known statuses, and rename invariants.
Contributor IDs are archive-local sequential identifiers, not hashes or reusable derivatives of email addresses.
Read the full privacy inventory07 / Troubleshooting
Common recovery paths.
The development server does not start
node --version
npm --version
npm ci
npm run dev
Vite binds to localhost and prints another URL when its preferred port is occupied.
The analyzer cannot read a repository
Confirm the path is a Git working tree and the selected ref exists. Repositories with no commits cannot produce a city. RepoRewind reports Git's failure without retrying a different ref or reading working-tree contents.
The city is replaced by a WebGL message
Enable hardware acceleration, update the browser or GPU driver, and retry in a current desktop browser. Search, archive validation, and CLI generation do not require WebGL.
Run the complete diagnostic gate
npm run verify
08 / Development
One complete quality gate.
The project provides formatting, strict React and accessibility linting, documentation and runtime-license checks, unit and integration tests, TypeScript validation, browser and CLI builds, and a high-severity dependency audit.
| Command | Purpose |
|---|---|
npm run test |
Core, Git, CLI, import/export, and frontend interaction tests. |
npm run lint |
Strict React, accessibility, import, and test lint rules. |
npm run build |
Static browser application and distributable CLI. |
npm run check |
Formatting, lint, docs, notices, tests, types, and builds. |
npm run verify |
The full check plus a high-severity dependency audit. |