I have been using it daily for three months and I want to tell you both why it exists and what it can do for you.
## Where it came from
For a good bit of my twenty-five years in games I have been a creative director and a game designer, and in both of those roles the actual unit of work was often more about managing Jira tickets than writing code. I have created thousands of them. I have assigned thousands of them. I have reviewed the results of thousands of them. Every shipped game I have ever worked on existed as a column of tickets long before it existed as a build. The ticket is not paperwork around the work; for a creative lead, the ticket is often the shape the work takes.
When AI agents started getting genuinely useful in late 2025, the workflow I wanted to build was obvious to me. Take a ticket out of the tracker. Hand it to an agent. Let the agent do the work. Review the result the same way I would review a teammate's PR. Close the ticket. The unit of work would not change at all; the thing doing the work would. I spent the back half of 2025 trying to make that exact workflow run against the off-the-shelf trackers I had spent two decades inside — Jira, Trello, Notion, GitHub Issues — and the agents kept stumbling. They would hit the wrong API. They would lose track of which board they were operating on. They would fail to authenticate in ways the official integrations were not built to recover from. They would just decline to take an action without explaining why. They would ignore formatting requirements. The integrations existed. None of them were reliable enough to be load-bearing.
In early 2026 I gave up on bridging to the existing tools and decided to build a tracker that was agent-first from the foundation up. It needed to be CLI-friendly, because by then I was spending more time in terminals than I had since the early 2000s. And because my own day splits between a Windows machine where the front-end game development happens and a Linux box where the backend services and most of the AI experimentation live, the tracker needed to coordinate across machines too — across operating systems, across repos, across the agents themselves.
The first version of that coordination was undignified. I copy-pasted agent output between Slack threads. A Claude session on the Windows side would summarize what it had done; I would paste the summary into a thread on the Linux side and let a second Claude pick it up. The second version was a network file share where both machines could read the same JSON files. The third version was a recognition: a real task tracker, designed for this, was a better place to do these handoffs than any general-purpose messaging or filesystem layer. Tasks already have status. Tasks already have dependencies. Tasks already have the right shape for cross-machine, cross-repo, cross-agent work. They just needed an MCP server and a real claim protocol and the right CLI on top.
That is when the project started to compound. Around the same time I was learning from the GSD orchestration framework I run as a substrate — [github.com/gsd-build/get-shit-done](https://github.com/gsd-build/get-shit-done) — that agentic work can be made systemic, verifiable, and auditable. So I pushed the tracker hard in that direction. Structured verdicts on every closed task. Read-only graders that physically cannot edit the code they are grading. Dependency-aware execution that refuses to dispatch a parallel loop against a cyclic graph. Generator/critic separation enforced by the agent definitions themselves. The result is what I open-sourced today.
The original vision — taking work directly out of an existing Jira or Trello board and dispatching it into agents — is still something I'm interested in exploring but is largely unrealized. What exists today is the substrate that vision will eventually run on top of, and it has been load-bearing enough to ship several thousand commits across the Wood Fired ecosystem in the past several months — the [agent-orchestration practice that produced that throughput](/writing/from-workstation-buildout-to-ai-in-the-loop) is the backdrop this release grew out of. That is the wedge the rest of this post unpacks.
## What does it do?
It is a single Node service that exposes three peer surfaces over one SQLite store — a REST API, a CLI, and an MCP server — so agents and humans read and write the same tasks with no separate "agent view." Atomic claiming lets exactly one agent win an unclaimed task; workflow automation unblocks dependents on close; an SSE stream broadcasts every state change.
Wood Fired Tasks is a single Node service that exposes three peer surfaces over one SQLite service layer:
A **REST API** with 47 route handlers (40 live in a default deploy). A **CLI** with 31 commands — `tasks create`, `tasks list`, `tasks claim`, the usual shape. An **MCP server** with 22 tools, so Claude Code, Cursor, Gemini, and Codex can all read and write tasks directly from inside an agent session.