Skip to content
Afara

CLI

Afara lives next to git.

A single binary for macOS, Linux and Windows. It turns commits into context, injects context into your coding agent, and checks pushes on ticket branches.

Install in one line.

Then sign in, and run afara init in a repository with a GitHub origin.

Or download an archive from Releases
$curl -fsSL https://raw.githubusercontent.com/Radicand-Labs/afara-release/main/install.sh | sh

Checks the download against checksums.txt and installs to ~/.local/bin. No sudo.

Then

$ afara auth login   # sign in, choose a model
$ cd your-repository
$ afara init         # pre-push hook and baseline
$ afara              # the interactive shell

Context goes into the coding agent you already use.

Afara runs analysis and injects context with whichever of these is installed and signed in. Pick one per run with --tool.

  • Claude Code
    npm install -g @anthropic-ai/claude-code
  • OpenAI Codex CLI
    npm install -g @openai/codex
  • Gemini CLI
    npm install -g @google/gemini-cli

Every command.

A pre-push hook that stays out of the way.

On a branch that names a ticket, Afara checks that every new commit has been generated before it reaches the remote.

  • Offline: reads only .git/afara, never the network
  • Commits are never blocked, only pushes
  • Tags and branch deletions are never checked
  • Your own pre-push hook is kept and runs first
  • Skip it once with git push --no-verify
How branches map to tickets
$ git push
afara: push of PAY-981-card-payment blocked for PAY-981.
  2 commits being pushed have not been generated: e67658b, 0113454.
  Run Afara on this repository first. In the shell (run `afara`), or directly:
    afara generate --feature "card payment"
  Then push again. To skip this check once: git push --no-verify

Built to run without a terminal.

Every command except the shell runs unattended. Fail a build while the code contains behaviour the ticket doesn't describe.

Read the CI guide
$afara compare "card payment" --fail-on extra
--fail-on extra
built, not in the story
--fail-on missing
in the story, not built
--fail-on reordered
different order
--fail-on any
any open finding

See Afara on one of your own features.

A 30-minute walkthrough with an engineer. Bring two repositories and a ticket, and see the context your agent would get.