Quick start
Open ari in a repo, ask for a small refactor, watch it read, edit, and test, and resume the session later, byte-identical.
This is the walkthrough ari's own CI replays on every change. If it stops working, the release does not ship.
Open ari in a repo
export ANTHROPIC_API_KEY=...
cd path/to/your/repo
ari
On first run a short onboarding explains that ari asks before it edits or runs commands and that its data lives in .ari/, then it writes a small config to ~/.ari/config.toml holding only an env reference for your key. The chat opens with the editor focused, the sidebar showing the resolved model, an empty context bar, and a zero cost. Nothing has touched the repo, because ari does no work until asked.
Ask for a refactor
Type a request and send it:
Rename Greeting to Greet across the package and update the test, then run go test.
Here is what you see, in order:
- A dim, collapsed reasoning block with its elapsed time, then assistant text streaming in.
findforGreeting, rendered as a grouped match list.readon the files it will touch, in one parallel batch, each a file header and a bounded preview. A successful read arms the edit gate for that file.- A first
editthat ari rejects becauseold_stringwas not unique, shown in the chat as a tool result with the occurrence count and the fix, not an error. The model adds a surrounding line and retries, and it lands. - A permission dialog for the edit, because the default mode is ask. It shows a real syntax-highlighted diff of the change. Approve for the session and the next edit runs without a second prompt.
shwithgo test ./.... The pipeline asks once, showing the exact command. Allow it for the session, the tests run, and the turn finishes.
The sidebar meters every model call live, and the cache hit rate stays high because the prompt prefix is stable across the turn.
Resume where you left off
Quit with the quit key. Next time:
ari --resume
ari replays the transcript from JSONL into a byte-identical chat, and a follow-up you ask lands in the same session, appended to the same file. Pick an older session from the switcher instead of the last one if you want.
Do it without the TUI
The same turn runs headless, which is how ari drives itself in CI:
ari -p --json --mode full-auto \
"Rename Greeting to Greet across the package and update the test, then run go test."
ari -p runs one turn and exits, --json streams the event schema for a downstream step, and the exit code is the turn's terminal reason. See the headless guide for the full contract.
Next: the permission model.