What it does

Run alfa in a project folder and ask for something. It reads your code, edits files and runs commands and tests, and every step stays in your terminal’s own scrollback, with a diff for each edit. It can keep a plan, hand work to subagents, run jobs in the background, and pick a session up where you left it. Before it says it is done, it runs your project’s type check or build once, and if that fails it keeps fixing. Skills, MCP and extensions are supported.

› Fix the config parser
  · read src/config.ts
  edit src/config.ts +2 -1
  - oldValue
  + newValue
  Tests passed. The parser now preserves empty values.
›
The example exchange from alfa’s README: one request, the file it read, the edit, and the result.

Install

macOS / Linux

curl -fsSL https://github.com/alfa-plus-laboratory/alfa/releases/latest/download/install.sh | sh

Windows (PowerShell)

irm https://github.com/alfa-plus-laboratory/alfa/releases/latest/download/install.ps1 | iex

Then run alfa and it walks you through connecting your model. No Bun runtime is needed, and the installer checks the binary’s checksum before installing. Update with alfa upgrade.

Where it stands out

Any model, and nothing sent to us

alfa speaks three APIs: Anthropic’s, OpenAI’s Responses API, and the OpenAI-compatible Chat Completions API that many providers and gateways offer. So it works with models from many vendors, and with models you run yourself. There is no alfa account, no backend and no telemetry. Requests go straight from your computer to your provider, and sessions are stored on your disk.

Auto mode, with a review in the way

By default alfa works on its own. Reading and editing inside the project just happen. Anything else is scored on four questions: how clearly you asked for it, how much harm it could do, how far its effects reach, and whether it would expose private data. For a shell command, the review also sees the project scripts that command will actually run. If the review fails, the action is blocked, not allowed; secrets never skip it; and after three blocks in a row, auto pauses and asks you. It is judgement, not isolation: what alfa runs has your account’s access. One key switches to approving each step yourself, and an experimental sandbox for shell commands can be turned on.

Chinese and Japanese, properly

The interface comes in English, Chinese and Japanese, and the language it replies in is a separate setting, so an English interface with Chinese replies is one command away. It is built for input methods: approvals go through with Enter and Esc, which an input method leaves alone, and if yours is taking the letter keys, alfa says so instead of ignoring them.

Subagents that work as a pipeline

It hands work to subagents in the background and keeps talking to you meanwhile. A subagent can wait for others: several search, one cross-checks what they found, one writes it up, and only that last report comes back to the main conversation. With /agentflow on, up to a hundred can be dispatched in one run, and any of them can be suspended and woken later with its memory intact.

You can see what it costs

The footer shows how full the context is, the prompt-cache hit rate your provider actually reported, and the output speed. --report writes a run’s requests, tokens, approvals and timings to a JSON file.

Installs that check themselves

The installer and alfa upgrade verify the binary’s SHA-256 before installing it, and if the checksum can’t be fetched they stop rather than install something unchecked. alfa uninstall removes the binary together with its configuration, credentials and session data. Extensions load only if their SHA-256 matches the one you pinned.

Every decision written down

The repository carries a design log of over 5,000 lines: why each part works the way it does, what was tried and dropped, and what breaks if you take it out.

What we don’t claim

The repository comes with three small coding tasks that anyone can rerun, to measure it against. They are a starting point, not a benchmark, and we make no comparison with other agents.

Licence

alfa is released under Apache-2.0. A few files are adapted from opencode under the MIT licence, and the NOTICE file lists them. Forks are welcome; the licence does not cover the name, so a fork should go by its own.