For Claude Code, Codex, OpenCode, Pi, and Goose

You approve. It codes.

AgentMachinist takes one small coding Task from intent to a reviewed change on your machine, using the coding agent you already run. You approve the exact Spec before any code gets written, and nothing lands on your branch until you say so.

Terminal
uv tool install agentmachinist
machinist rehearse

You need macOS or Linux, Python 3.12 to 3.14, Git, and uv. The rehearsal runs the whole loop with a fake agent, so it costs nothing.

The problem

Coding agents can write a feature in minutes.

The hard part is knowing what they'll change, and trusting what comes back. AgentMachinist puts a written contract in front of the work and an independent review behind it. Your agent still does the typing.

What you keep

You make the two calls that matter.

Decision 1 · before any code

Approve the exact Spec.

Your agent drafts a Spec, and AgentMachinist commits it. You approve that commit by its SHA. If the Spec changes, you approve again before anything runs.

machinist approve --task T1 --spec-sha <full-spec-sha>
Machine builds, verifies, and reviews

Decision 2 · before it lands

Integrate the reviewed change.

Read the Review report and inspect the diff. Integration fast-forwards your clean branch to the exact candidate that was reviewed. AgentMachinist never merges automatically or remotely.

machinist integrate T1

How it works

One Task, six stations.

Orange is you. Blue is the machine. Each machine step runs in the foreground after your command, and a failure stops so you can retry it.

  1. 01 · You

    Describe the Task

    One objective in a clean Git checkout, with your real test command.

  2. 02 · Machine

    Save the Spec

    Your tests pass on the current code. Then a read-only agent drafts the Spec, and AgentMachinist commits it.

  3. 03 · You

    Approve the SHA

    Read the plan, then approve that exact commit.

  4. 04 · Machine

    Build and verify

    Your agent edits in an isolated Workshop. Your tests must pass, and AgentMachinist makes every commit.

  5. 05 · Machine

    Review

    A separate read-only pass checks the diff against the Spec and the test evidence. Its findings are advisory.

  6. 06 · You

    Integrate or share

    Fast-forward your branch, or open a GitHub pull request or GitLab merge request.

See who owns each step in the full diagram

Watch

The whole loop in 90 seconds.

A narrated walkthrough with captions. The video downloads only when you press play.
Read the transcript

Coding agents can write a feature in minutes. The hard part is knowing what they'll change, and trusting what comes back.

AgentMachinist takes one small task from intent to a reviewed change, on your machine, with the coding agent you already use.

You describe the task. Your agent drafts a spec, and AgentMachinist commits it.

Then you approve that exact spec by its commit hash. If the spec changes, you approve again before anything runs.

The agent builds in an isolated workshop, away from your checkout. Your tests must pass, and AgentMachinist makes every commit.

Next, a separate read-only review checks the result against the spec and the test evidence.

You read the report, inspect the diff, and integrate with a fast-forward. Nothing merges behind your back.

Sharing is optional. One command opens a GitHub pull request or a GitLab merge request.

It works with Claude Code, Codex, OpenCode, Pi, and Goose.

Install it with uv, then run machinist rehearse to try the whole loop with a fake agent, for free.

Your agent does the typing. You make the two calls that matter. Start at agentmachinist.com.

Works with

Bring the coding agent you already use.

AgentMachinist runs your agent's CLI under the login you already have. GitHub and GitLab are optional. Import an issue as a Task, or publish the reviewed result as a pull request or merge request.

Trust

Know where the boundary is.

  • AgentMachinist makes every commit.

    Your agent edits files in an isolated Workshop, and AgentMachinist commits the result. Git checks after each run catch ordinary violations, such as an agent making its own commits.

  • Spec and Review are read-only.

    Only the build step should change files. For OpenCode and Goose, read-only is advisory, so AgentMachinist's Git checks are the backstop.

  • Nothing merges behind your back.

    Integration is a local fast-forward that you run yourself. Merging a pull request stays a human action on GitHub or GitLab.

  • Local doesn't mean offline.

    You don't need a server or a forge. Your agent may still send code to a cloud model, so offline work needs a local model provider.

  • It's not a sandbox.

    AgentMachinist is built for repositories and agents you already trust. Its checks detect violations after the fact, and they can't undo a side effect outside Git.

Your machine holds AgentMachinist and your coding agent. A cloud model and GitHub or GitLab sit outside it. AgentMachinist hands the approved Spec to your coding agent. AgentMachinist connects to GitHub or GitLab only if you choose to. Your coding agent connects to a cloud model only if it uses one. YOUR MACHINE AgentMachinist Git, Approval, and gates approved Spec Your coding agent edits in a Workshop GitHub or GitLab optional Cloud model if your agent uses one
Read the full trust model

Get started

Rehearse for free. Then run a real Task.

You need macOS or Linux, Python 3.12 to 3.14, Git, and uv. The rehearsal uses a fake agent, so you see every step before you spend anything.

Free rehearsal

  1. Install AgentMachinist. If you don't have uv yet, install uv first.

    uv tool install agentmachinist
  2. Run the whole loop with a fake agent, at no model cost.

    machinist rehearse

Your first real Task

A real Task needs a clean, named Git branch and a coding agent you're logged in to. It runs that agent under your login, so it uses your plan or API credits like any other session.

  1. Check Git, your agent login, and your test command.

    machinist doctor --local
  2. In your own repository, name one small change and pass your project's own test command.

    machinist start "<one small change>" --test-cmd "<your test command>"