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.
Runs the agents you already have
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.
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
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
- 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.
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
- branchtask/T-27-desktop-notifications
- pull request#26 · 2 review comments resolved
- ciworkflow_run · success
- mergesquash → main
- deployCloud Run · prod · health 200
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.
- 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
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
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
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
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)
Compare
Others give you an agent, a tracker or a queue. You still drive it.
The terminal agent TaskTrooper runs underneath.
Parallel agents in cloud VMs that open merge-ready PRs.
A cloud AI engineer you assign tickets to from Slack, Linear or Jira.
Assign an issue to Copilot and get a PR from a GitHub Actions runner.
A self-hosted control center for coding agents and automations.
An agent grounded in your organisation's services, docs and architecture decisions.
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.