Five steps from
.git to story.
No account, no cloud, no AI in the core path. Just one careful pass over real history — and a deterministic engine that only claims what the timestamps prove.
Read
Commit Canvas reads your repository history locally — commits, parents, merges, tags, authors, timestamps, and per-file line changes — in a single pass through one git log call. Field separators can't collide with your commit messages. Unicode is safe. Binary files don't break anything.
Map
It maps the shape of the project: month-by-month activity, contributors joining over time, merge structure, releases, file and line evolution replayed chronologically with authoritative create/delete tracking, and language mix at every month boundary.
merges kept · real snapshots, not guessesDiscover
Deterministic rules find the meaningful patterns: velocity shifts, development bursts, long silences and comebacks, the busiest day, the biggest commit, the most significant moment. Thin evidence produces a modest story — never an invented one.
every claim traces to a measurementVisualize
The model is injected into a self-contained shell that renders client-side: chapters, a scrubbable time machine, punch card, full-lifetime calendar, fingerprint, roast, and a certificate. All SVG and canvas, zero requests, works from a local file forever.
one renderer · CLI and web share itShare
The export studio builds your artifacts locally: PNG cards for every social format, an animated GIF of the timeline, WebM video, SVG, a README block, or the whole story as a single HTML file. Nothing is uploaded, because there's no server.
PNG · GIF · WebM · SVG · MD · HTMLSixty seconds, start to story.
# clone once, use forever — works on private repos, fully offline git clone https://github.com/ahmadrrrtx/commit-canvas cd commit-canvas # any repository on your machine ./run.sh /path/to/your-project # options ./run.sh . --title "My Project" # custom title ./run.sh . --open # open in browser after ./run.sh . --max-commits 5000 # cap huge histories python -m cc . --json model.json # export the raw analysis model # → story.html — one file, zero requests, yours
Or skip the terminal entirely: paste any public GitHub URL into the form on the home page — the same analysis runs in your browser through the GitHub API.