Tiller helps a team of people and coding agents deliver high-quality software fast, with the confidence to ship it.
brew install --cask madeintandem/tap/tillerOpen source, Apache 2.0. One binary for macOS and Linux. Other ways to install
Speed
An agent can finish a task in minutes. What slows a team down is everything around the code: what's next, who has it, and whether it's really done. Tiller keeps all of that straight, so the agents keep moving and nobody spends the morning chasing status.
How Tiller does it
The work grows from epics to features to tasks. Each feature gets its spec when its turn comes, so nobody plans what will change anyway.
tiller next ranks every legal move for your checkout, the decisions waiting on you included.
Claim a task and it's yours. Each one runs on its own branch, so people and agents can work side by side.
# your ranked next moves, top five $ tiller next # the same list, then the skill for the top agent move $ tiller guide # take the next task and go $ tiller claim task event-night/door-check-in/attendee-search $ tiller start task event-night/door-check-in/attendee-search
Quality
Speed only helps if the work holds up. With Tiller, every piece of work knows what done means before anyone starts it, and it can't get there without passing the checks you chose.
How Tiller does it
A feature's spec, its acceptance criteria, and its tasks are written and approved before the first line of code.
Build, tests, and evals run on every task, and the result is recorded with the revision it ran against.
A pull request per task, per feature, or per epic. There's a code review skill when you want a second set of eyes.
Once a spec is approved, it's pinned. If it moves after that, Tiller flags it before work goes on.
gates:
required:
evals: tiller eval … on: [feature]
build: bin/rails zeitwerk:check on: [feature, task]
tests: bin/rails test on: [feature, task]
optional:
code_review: attestation
security_review: attestationConfidence
You shouldn't need a status meeting to know how the project is going, or a leap of faith to merge. Tiller gives everyone the same picture and keeps a person's hand on every merge.
How Tiller does it
An agent can carry the work right up to the line and turn every check green. Only a human merge gets it to done, and Tiller sees it by watching git.
Every feature from draft to done, who's on it, and how many of its tasks are finished. Home leads with the decisions waiting on you.
Explore walks the plan from epic to task, and every task carries its spec, its checks, and its history.
Burn-up, throughput, bugs, lead and cycle time, and epic progress, with no people on it.


tiller serve.

One crew
Agent work tends to live in one person's chat window. Tiller moves the plan, the decisions, and the state into the repo, where every person and every agent on the project reads the same thing.
How Tiller does it
Markdown for what you want, YAML for where it stands. No database and no hosted service, so cloning the repo clones the plan.
Tiller serves its skills to any harness through tiller guide, so everyone sees the same instructions.
When something needs an answer, it's written down and the work it blocks waits for it, instead of getting lost in a thread.
.tiller/epics/event-night/
epic.md yours: intent
epic.yml Tiller's: state
features/door-check-in/
feature.md the spec
feature.eval.md acceptance criteria
feature.yml status, gates
tasks/attendee-search/
task.md
task.ymlThe passage
Your agent does the thinking and the typing. You make the calls at each step. Tiller holds the plan, the checks, and the state in between.
A sample project, condensed. The commands and their output are Tiller's own; the notes between them summarize what the agent and the person are doing.
Index of sheets
One binary with 44 commands, a local console, and eleven agent skills. Here's the lay of the land, and where to read more.


Where it fits
You: Install
Pick one feature this week.
Not your whole project. One feature, one spec, one merge.
brew install --cask madeintandem/tap/tillercurl -fsSL https://raw.githubusercontent.com/madeintandem/tiller/main/install.sh | shtiller init --kind brownfieldAn existing codebase. The agent writes down what's there, you confirm it, and every change proves the old behavior still works.
tiller init --kind greenfieldA new project. You write the design docs, and the agent proposes the epics and features.
tiller init --kind legacy-migrationReplacing an old system, which stays read-only as the yardstick.
You: Merge
A tiller steers the boat, but somebody's hand has to be on it.