From ticket to PR

Agent Smith is an open source AI coding agent. You drop a ticket into your tracker, it clones the repo into a sandbox, writes the code, runs the tests, opens the PR, and sets the ticket back to resolved.

Every run shows its cost. Every change comes with the reasoning the agent followed.

MIT licensed
Runs on your infrastructure
Calls your AI provider directly
The Agent Smith runs board: counters for what needs you, what is running, what is queued, what finished today and what it cost, then a run that has paused mid-plan to ask which of two options to take, with answer buttons and a box to add context.

How a ticket actually becomes a PR

You drop a ticket into your tracker — Jira, Azure DevOps, GitHub Issues, GitLab, whatever you use. Agent Smith reads it, figures out which project it belongs to, and starts a run. If your project has more than one repo, every repo gets its own sandbox with its own toolchain image (one runs dotnet/sdk:8.0, another runs node:20, a Python worker gets python:3.12). Each sandbox clones its repo and cuts a branch named agentsmith/ticket-{N}.

Then the AI does the boring middle part. It analyses the code, comes up with a plan, lets you approve it (or runs headless if you trust the pipeline), writes the changes, runs the tests, and commits. One pull request per repo, all linked to each other in the PR body so reviewers see the whole change at once. The ticket gets set to resolved with every PR URL in the comment.

That's the standard flow. There's an approval gate before any code change lands, and every run records token usage and dollar cost so you actually know what you spent.

What one run looks like when it is done

Every run keeps the same five beats, and you can open any of them: the ticket it started from, the plan it settled on, the building, the verification, and the outcome. The outcome is where the pull request link sits, next to what the run cost and how many model calls it took to get there.

A finished run in the dashboard: the five-beat spine from ticket to outcome, all done, with the outcome panel showing a pull request button, a total cost of 0.42 dollars, six minutes wall clock and seven model calls.

That verification beat is cross-checked against the diff the run actually committed, so a run cannot report itself green without a matching change. When it does come back red, it says so and ships the partial work as a record rather than quietly rounding up.

You wire it up in the browser

Agents, trackers, repositories and the projects that tie them together live in a catalog you edit in the same UI. References are picked from what exists, so a project cannot point at an agent you renamed last week. Every edit is recorded with who changed what, and every edit can be reverted.

The configuration studio: a catalog of projects, agents, trackers, repositories, connections, MCP servers and secrets in the left rail, and each project shown with the agent, tracker and repositories it wires together.

And the shape of the whole thing

One ticket, one sandbox per repo, one pull request per repo. If you want the step-by-step version, the docs have a diagram generated from the pipeline definitions themselves, by a test that fails whenever the code and the picture disagree. Every step, and where the model actually gets a say.

A ticket comes in from your tracker. Agent Smith spawns one sandbox per repo, drives a tool-calling loop, then opens one PR per repo and resolves the ticket.

Why I built it this way

Your code stays on your machine.

Agent Smith does not store any information about your code. It runs on your infrastructure and calls your AI provider directly — the more AI gets used, the more information tends to end up stored somewhere you never intended. Not here.

You see what every run cost.

Great developers write great code. They even write documentation. But I have never seen the why being documented. Agent Smith documents the plan and maintains a decisions.md log, so the reasoning stays available over the complete lifecycle of the program.

Approval sits between the plan and the code.

The AI generates a plan, the plan gets shown to you, you approve or reject. Trust the pipeline? Set a config flag and runs go headless. Both modes ship because some teams want the eyeball, some don't.

One sandbox per repo, with its own toolchain.

You prefer mono repositories? Great, Agent Smith can work on UI, backend and workers directly. You got multi repositories per project? No problem. Agent Smith will create one sandbox per repository and create multiple pull requests.

Which languages are supported?

You write Python? The sandbox will be Python based. Dotnet? Sandbox will use your dotnet sdk. The language is not part of the Agent Smith, it is part of the infrastructure that is used to get the job done. There are no limitations in terms of languages.

Built by the method it teaches

Agent Smith bootstraps an .agentsmith/ directory into your repo: context, phase specs, a decision log, a memory of what it learned. That is the product, and it is also how this repository got written, over six months, by me and one language model. 610 completed phases and 244,753 lines of C#, with 2,587 recorded decisions and 3,760 tests behind them. About 500 hours of my time went in, roughly 50 minutes per completed phase.

The tests do the steering

Ten coding principles are enforced as architecture tests: max 120 lines per file, state held in DI, exactly one method allowed to decide whether a run delivered, a gate that has to run after the thing it judges. Every one of them has something that went wrong behind it. When a rule was right and the existing code broke it 187 times, the violations went into a frozen baseline that entries can only leave, so the debt moves one direction and nobody has to schedule a cleanup week.

The model has no way to wave itself through

A blocking commit hook lets a phase commit through once the build, all 3,760 tests, four CLI dry runs and every pipeline harness preset come back green. CI would have told me about a break afterwards. The hook stops the commit from existing. And the principles.md I built this project under is the same file Agent Smith injects into its own agents at runtime.

Including what didn't work

The skill catalog grew to 95 role definitions and then dropped to 12 in one breaking release, because stronger models did better with bash and a clear goal than with narrow toolsets. The plan generator got retired after evaluations caught it truncating every multi repo plan. A cached token metric read zero for months while the caching underneath it worked fine. The full account is in the docs, along with how every figure here was counted.

There are more pipelines than the coding one

code is the headline because it's the one most people show up for — it covers bug fixes and features alike, and the older fix-bug and add-feature names still route to it. Seven more presets ship in the box: security-scan and api-security-scan (a security master reviewing a codebase or a live API), pr-review (a review of a pull request, posted back as PR comments), legal-analysis (contract review), mad-discussion (multi-agent design discussion when you want to argue something out), init-project (bootstraps the .agentsmith/ directory per component in each repo), and spec-dialog (a design conversation that ends in a ticket or a phase draft). Same orchestrator, different masters, different output shapes.

You can also define your own in agentsmith.yml. Skill files are YAML, no prompt engineering. Pipeline reference is in the docs.

Providers and deploy

Works with Claude, OpenAI, Gemini, Ollama (for fully local), and anything OpenAI-compatible (Groq, Azure OpenAI, LM Studio, vLLM, your own endpoint). You pick the model per role: a cheap one for the scout pass that maps the codebase, the good one for the actual code.

Deploy as a single binary, Docker container, or Kubernetes. The sandbox-agent injects via an init-container into whatever toolchain image your repos use, so you get one carrier image plus the upstream toolchain image you already trust. A chat gateway lets you trigger runs from Slack and Teams when that's how your team works.

AI providers · Docker Compose · Kubernetes

Have a look

First bug fix in about five minutes if your Docker is set up. The install guide walks through it.