Asking Claude to explain its own work gets you a decent summary. Then you open the diff and it falls apart. Line by line, in code you've never read, in a codebase you might not know. tony assumes you know nothing about what was written. It reads the change against your actual repo and writes the explanation you'd want from the person who made it.
$ curl -fsSL https://tony-cli.com/install.sh | sh [ what you get ]
Every review is one page with three tabs. The prose is written by a model that read your files; every line number, span, and changed/added tag is computed from the diff itself, so the explanation can drift but the code never can.
The diff per file, with explanations sitting inline above the lines they describe. Modified code gets Prev / New / Changes panes so you can see what the behaviour used to be.
Files the change reaches that aren't in the diff. Each consumer is read and classified as breaks, behaves differently, or compatible, then shown at the exact line that depends on what moved.
A steppable trace of one real scenario, with the source read from your disk and a state table beside it. Built for the case where you don't yet have a model of how the thing runs.
[ example ]
A review of a real change to an open-source HTTP library, covering how the server handles a client that hangs up mid-connection. Switch the tabs, step through the walkthrough.
[ using it ]
Once, with GitHub. Approve a code in the browser and the CLI remembers it.
$ tony loginRun it in any repo. tony reads the diff, writes the review, and prints a link you can open or send to anyone with an account.
$ tony main...my-branch[ where your code goes ]
Reviews are published here by default, which means a review carries the diff and windows of your source. It's encrypted at rest and only served to signed-in readers. But tony holds the key, so that's protection against a leak, not against us. Don't review a repo you couldn't share with us.
Writing the explanation also sends the change to Anthropic. If you'd rather keep
one on your own machine, --local skips publishing entirely and needs
no account.