Skip to main content

tony

Your AI wrote the code. tony explains what now exists.

tony is a CLI that turns a git diff into a review page for the person who now owns the code — often someone who didn't type a line of it. Not a linter, not a code-review gate: it builds your mental model of the change, fast.

Every review page has three tabs:

  1. File changes — the diff per file, with plain-language annotations sitting inline above the lines they explain. Modified code gets Prev / New / Changes panes; line numbers are computed from the diff, never trusted to the model.
  2. Blast radius — files the change reaches that are not in the diff, each consumer classified breaks / behavior-change / compatible, shown at the affected lines.
  3. How it works — steppable runtime walkthroughs. One concrete scenario ("you run export --resume after a crash") traced step by step, showing the real source lines read from your disk, a small state table, and one plain sentence per step.

Install

curl -fsSL https://tony-cli.com/install.sh | sh

or, if you already use uv or pipx:

uv tool install tony-cli     # or: pipx install tony-cli

Either way you get a tony command on your PATH.

Use

cd your-repo
tony main...my-branch        # review a branch against main
tony                         # review the default branch...HEAD

The page is written to .tony/ inside the repo (gitignored automatically) and opens in your browser. It's one self-contained HTML file — fonts, styles, and data inlined — so it works offline and forever.

tony needs an Anthropic API key (ANTHROPIC_API_KEY, or ~/.tony/.env). The first run tells you exactly where to get one and where to put it. tony reviews committed work: it shows code straight from disk, so the working tree must match the revision under review.

Useful flags: --replay rebuilds the page from the last run without calling the API, --json prints the raw review, -v logs every file the model actually read, --stale overrides the clean-tree check.

Share a review

tony login                   # once — GitHub device flow
tony main...my-branch        # publishing is the default
tony: https://tony-cli.com/r/8f3ka92m

Who can read a published review: anyone signed in who has the link. Review ids are random, so the link is what grants access — treat it like a password. tony unpublish <id> removes a review at any time.

What the site can read: everything in the review. The payload is uploaded over TLS and encrypted at rest under a key the server holds, so a leak of the stored blobs yields nothing — but we can open a review, and so can any lawful demand made to us. Do not publish from a repository you could not share with us. An earlier design encrypted on your machine and kept the key in the link's fragment; that was dropped deliberately when reading moved behind an account and a history of past reviews became part of the product, since both need the server to be able to open a review.

Local review needs no account and never leaves the machine: tony --local.

Update

tony update

Uses whichever of uv, pipx, or pip installed tony, and resolves from PyPI explicitly so a machine pointed at an internal mirror cannot decide what tony-cli is. tony --version says what you have; tony --help lists every command.

Uninstall

tony uninstall

Removing the package by itself would leave the parts worth removing: your ANTHROPIC_API_KEY and site login in ~/.tony, and a .tony/ directory of past reviews inside every repository you ran tony in — those hold source code. tony uninstall revokes the site token, lists everything it found and waits for you to type yes, deletes it, then removes the package with whichever of uv, pipx, or pip installed it.

It searches your home directory for stray review directories; --no-scan limits it to the current repository, and --yes skips the prompt. Reviews you published to the site are separate — take those down with tony unpublish <id> before uninstalling, or they stay up.

Development

pip install -e ".[dev]"      # the CLI, with pytest
python -m pytest             # the deterministic layer's tests
cd web && npm install
npm run build:viewer         # rebuild the renderer bundle the CLI embeds
npm run dev                  # the site; /dev renders src/fixtures/review.json

There is exactly one renderer — web/src/renderer/render.ts — used by both the local page and the hosted site. The Python side decides all layout facts (line numbers, spans, added/changed tags) in src/tony_cli/layout.py and ships them in the payload; the renderer never re-derives them. DESIGN.md is the visual contract.

The site deploys to Vercel and needs DATABASE_URL (Neon Postgres), BLOB_READ_WRITE_TOKEN (Vercel Blob), and GITHUB_CLIENT_ID (an OAuth app with device flow enabled).

Download files

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

Source Distribution

tony_cli-0.3.0.tar.gz (280.6 kB view details)

Uploaded Source

Built Distribution

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

tony_cli-0.3.0-py3-none-any.whl (279.1 kB view details)

Uploaded Python 3

File details

Details for the file tony_cli-0.3.0.tar.gz.

File metadata

  • Download URL: tony_cli-0.3.0.tar.gz
  • Upload date:
  • Size: 280.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tony_cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b159f6d980febd0a8e6e59e9dbdf2c4f92e6492a22536429ebf5250cfa189840
MD5 60f5788d3661a8da7ebb152b3c0ef51c
BLAKE2b-256 d924150ba68e2654c7b80cd5e6169b2c63b6494ba649ce132912516900e5d678

See more details on using hashes here.

Provenance

The following attestation bundles were made for tony_cli-0.3.0.tar.gz:

Publisher: release.yml on fawwaz46/tony

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tony_cli-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: tony_cli-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 279.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tony_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6df502081c2a419b8b4e0bc2604f172532ebc0da9beb6719bb6ecb7dcae43f67
MD5 1bac9a0ec1a65f222d132b58a5b166b6
BLAKE2b-256 13077c9d0e293be8356b702f5412d2745475f55692aea80f44bcf33665c938e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tony_cli-0.3.0-py3-none-any.whl:

Publisher: release.yml on fawwaz46/tony

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

This release

0.3.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page