Open source under MIT — star us on GitHub

Run AI coding agents through workflows you control

Warden turns headless coding agents into reviewable, multi-phase runs — spec, implement, test, merge — with a live view of every step and a human gate between phases.

warden — run #142 · payments: retry failed webhooks
Phases Spec done Coding Merge Checks lint test
agentThe webhook consumer drops events when the signature check throws. I'll add a bounded retry with backoff and a dead-letter log. Edit src/webhooks/consumer.ts
src/webhooks/consumer.ts
- await handle(event)
+ await withRetry(() => handle(event), { attempts: 3 })
+ log.deadLetter(event, lastError)
pnpm test — 214 passed
Phase complete — waiting for your review

Works with your stack

Observability first

See everything. Approve anything.

Headless agents are fast and opaque. Warden keeps the speed and removes the opacity — every run is watchable while it happens and gated before it lands.

Watch agents work, live

Every run streams its reasoning, file edits, commands, diffs, and cost into your editor as it happens. No more black-box agents — you see exactly what changed and why.

A human gate between phases

Runs stop and wait for review before advancing. Approve to move on, or send the phase back with a note — the agent reworks the same branch until it's right.

Workflows as code

Declare phases and steps — prompt, check, command, git, notify — in plain YAML, versioned in your repo. Spec → implement → test → merge, or whatever your team's pipeline looks like.

The hero loop

Watch → gate → advance

Watch

Point a workflow at a task. The agent works through the phase while you watch the live session — or get on with your day and let the notifier ping you.

Gate

The run parks at the gate with the transcript, the diff, the check results, and any artifacts the agent published. Review it where you work — editor or web.

Advance

Approve and the next phase starts on the same branch. Request changes and the agent reworks with your feedback. Merge lands it — your tracker and PR already know.

One backlog

Your tracker is the control surface

Import issues from GitHub, Linear, Jira, GitLab, and Notion into one board — alongside manual tasks. Statuses sync natively in both directions.

  • Drag a task into "In Progress" and the bound phase starts.
  • Routing rules pick the workflow by label or assignee.
  • Runs write progress back to the issue and the PR.
Backlog 2
Rate-limit the public API linear
Fix flaky auth test linear
In Progress 2
Retry failed webhooks linear
Migrate billing to v2 linear
In Review 1
Dark mode for settings linear
Done 1
OAuth token refresh linear
$ warden run start --task PAY-142
sandbox created (gVisor, 2 vCPU)
workspace ready on branch pay-142-retry-webhooks
repo token minted (scope: acme/payments, 1h)
phase coding streaming…
Run isolation

Every run in its own sandbox

Agent code never touches your host. Each run gets a fresh container or gVisor sandbox with a clean workspace on its own branch, and repo credentials scoped to exactly that run.

  • Docker or gVisor isolation — always on.
  • Short-lived, repo-scoped tokens via the GitHub App.
  • Local or remote runners, selected by labels.

Put your agents on rails

Free while in beta — bring a repo, connect your tracker, and gate your first run in minutes.