Open source · macOS, Windows, Linux

Put it on the board.
The agents ship it.

A local-first agent platform for software teams of one. A Kanban board, six role agents, and a runtime that hands each task to Claude Code on your own machine: clone, plan, implement, test, open the PR.

TaskTrooper — acme-api
Backlog2
T-31
Export board as CSV
B-7
Retry webhook on 502
Analysis1
owner · system-architect
A-12agent running
Rate limiting for public API
system-architect
In Progress2
owner · backend-developer
T-28agent running
Token bucket middleware
backend-developer
T-29waiting on T-28
Settings page: limits
frontend-developer
Code Review1
owner · system-architect
T-27PR #26 open
Desktop notifications
system-architect
QA1
owner · qa-agent
T-25agent running
Blocker badge on cards
qa-agent
Done2
T-24merged
Work-order park
T-22merged
QA score in KPIs

Runs the agents you already have

Claude CodecliCursorcliOpenCodecliAntigravitycliAnthropicOpenAIGeminiGroqOllamaLM StudiovLLMClaude CodecliCursorcliOpenCodecliAntigravitycliAnthropicOpenAIGeminiGroqOllamaLM StudiovLLM

Features

The whole loop, not another tracker

Plan, implement, review, test, merge, deploy, watch. Each step has an owner, and the owner is an agent running on your Mac.

Dispatch

The board drives, not you

A card entering a column is dispatched to that column's agent. It does the work and hands the card to the next column, where the next agent takes over. Nobody presses run, and nobody relays context by hand.

  • Thirteen columns out of the box, all configurable
  • Blockers park a card until they land
  • A usage limit parks the task and resumes the same session
Todo
T-28
In Progress
T-28
backend-developer
Code Review
T-28
QA
T-28
eventtask.moved → in_progressdispatch backend-developer
Quality

QA that has to run something

The QA agent cannot pass a task without executing: a local boot, real requests, headless-browser screenshots, iOS and Android simulators. A written plan is not a verdict. It never reads the code, so it tests what the user would see.

  • Acceptance criteria are the checklist; every one needs a verdict
  • A separate agent from the one that wrote the code
  • Failed runs re-dispatch, bounded
QA round · T-29evidence: 4 calls
  • run_terminalnpm run dev · :3200 up
  • browser_screenshotsettings → limits · 1440×900
  • set_test_case_resultTC-3 rate limit header · pass
  • review_criterion3/3 criteria approved

A run with a plan and no execution is failed and re-dispatched.

Ship

A pull request per task, watched after the merge

Every task gets its own branch and PR. Code review reads it, Done merges it, Released watches the deploy through a health check and can roll it back. Incidents from Alertmanager, Sentry or any webhook fold back into the board.

  • GitHub Actions status is a gate, not a suggestion
  • Deploy recipes for Cloud Run, GKE, ECS, Lambda, Vercel, Fly
  • App Store and Play releases for mobile
  1. branchtask/T-27-desktop-notifications
  2. pull request#26 · 2 review comments resolved
  3. ciworkflow_run · success
  4. mergesquash → main
  5. deployCloud Run · prod · health 200
rollback_task_release is one call away if the health check turns red.

Self-evolving playbooks

Agents review their own runs, scores and KPIs and propose changes to their skills and rules. A golden suite and a judge decide whether the change stays.

Memory in four scopes

Personal or team-wide, per repository or across all. Near-duplicates are refused.

Code understanding, locally

Repositories parsed with tree-sitter and embedded on your machine, so agents search semantically and see uncommitted edits.

Enforced ordering

blocked_by, deploy_depends_on, derived_from, discovered_from are relations the runtime acts on, not prose.

Your agents, your runtimes

Create agents from a template or from scratch. Each one picks its own runtime: Claude Code, Cursor, Antigravity or OpenCode as a local process, or Anthropic, OpenAI, Gemini, Groq or any OpenAI-compatible API. One board mixes them.

Nothing to host

The desktop app starts an embedded Postgres and the Go backend. No account, no cloud, no login.

Multi-agent

Three sessions at once, each with its own tools

Every task runs in its own workspace, on its own branch, in its own CLI session. Every role has its own tool policy. So while the backend agent runs the test suite, QA is driving a browser against a different build and the architect is reading a third task's pull request. They never share a session and never step on each other's files. The six seeded roles are a starting point: create your own agents from a template or from scratch, and give each one the runtime it works best on. One board can run Claude Code, Cursor, OpenCode, Antigravity and API models side by side.

3 of 3 sessions running · max_concurrent_sessions: 3
backend-developer
T-28 · Token bucket middleware
In Progress · workspaces/task-28
run_terminalgo test ./...commit_task_changesfeat: token bucket
claude_code · claude -p · 3f9a
Code tools, shell, git. Opens the PR.
qa-agent
T-25 · Blocker badge on cards
QA · workspaces/task-25
browser_screenshot/board?task=T-25mobile_run_appiPhone 16 simulator
cursor_agent · agent -p · 81c2
Browser, simulators, shell. No code-reading tools: QA is black box.
system-architect
T-27 · Desktop notifications
Code Review · workspaces/task-27
get_task_pull_requestPR #26 · CI greenreview_criterion4/4 approved
opencode · opencode run · c04d
Reads the PR and the code. Reviews, does not implement.
Tool policies per role
Allow-lists per agent, tightened again by column: a QA verdict column cannot write code, a review column cannot merge its own PR.
Workspaces per task
A clone under the data directory per task, the task branch checked out before the agent starts. Files land in the tree the runner commits.
One board, many owners
The card is the hand-off. When the backend agent moves it to Code Review, the architect's session starts; nobody relays context by hand.
Your own agents, your own runtimes
Add an agent from a template or from scratch: prompt, skills, rules, tool policy, columns, memory. Each agent picks its provider, so a Cursor-based reviewer and a Claude Code developer share one board.

How a task runs

From a card to a merged pull request, without you in the loop

You can watch every run stream to the card, chat with the agent about it, or drag the card back. You do not have to.

  1. 1

    A card lands on the board

    You write it, or the product-manager agent drafts it from a request. Acceptance criteria live on the card, and relations to other cards are enforced.

    create_board_task  title="Rate limit public API"  blocked_by=[T-27]
  2. 2

    The column's agent picks it up

    The backend prepares a git workspace, checks out the task branch and starts a headless Claude Code session with the agent's prompt, skills and a per-run MCP token.

    claude -p --model sonnet  ·  MCP: board tools, per-run token
  3. 3

    Work streams to the card

    The session reads the repo, implements, runs the tests, updates the criteria and moves the card. A pull request opens on the task branch.

    run_terminal go test ./...  →  commit_task_changes  →  PR #31
  4. 4

    Review, QA, merge, deploy

    The architect reviews the PR, QA runs a real test round, PM verifies, Done merges, Released watches production and can roll back.

    code_review → in_qa → pm_uat → done (merge) → released (health 200)

Download

One install. Nothing to host.

You need git and one way to run agents: the Claude Code, Cursor, Antigravity or OpenCode CLI, or an API key. The app checks what is installed and shows the exact command for anything missing.