A task board your AI coding agents work
Write a card, assign an agent, move it to To Do. PortBay dispatches the agent into your project's running local environment, and the card comes back Done, with comments.
Agent task board
A Kanban board both you and your agents work. Cards are Markdown in the repo; moving one to To Do dispatches the agent.
How do I keep track of what my AI coding agents are doing?
Give the agents a queue instead of terminal tabs. Parallel agent work stays reviewable when three things are written down rather than remembered: which task each agent owns, what it changed, and where the next run should start. PortBay does that with a per-project Kanban board. Each card is a Markdown file in .portbay/tasks/, so tasks version with your code. Move a card to To Do and PortBay dispatches the agent assigned to it — Claude Code, Codex, Cursor, Gemini, Aider, Copilot, OpenCode, Amp, Qwen, Antigravity, a local Ollama model, or any other CLI via a command template — into the project's running environment: a real .test domain with trusted HTTPS, a per-project database, captured mail. The agent comments what it changed and advances the card, a rolling hand-off note in .portbay/HANDOFF.md carries context forward, and a strike system stops a failing card after 3 runs by default.
Verified against the product, 2026-07-10.One card, dispatched
Assign the card, move it to To Do, and the agent claims it, works it in the running project, comments, and advances it to Done.
From card to Done
- Write the card
- Assign an agent
- Move it to To Do
- The agent works in a running app
- Review, then Done
Write the card
Describe the task the way you would brief a teammate. Attach files as context: 10 MB per file in Community, 250 MB on Pro. The card is a plain Markdown file in your repo, readable in any editor.
.portbay/tasks/fix-checkout-tax.mdAssign an agent
Per card, or set a board default. PortBay detects the agent CLIs installed on your Mac; the Custom option runs any other CLI from a command template. Most agents run headless, a few (Cursor) open as a desktop app.
Move it to To Do
Auto-dispatch launches the agent the moment the card lands; manual mode asks you to confirm each run. A concurrency cap keeps a busy board from launching ten agents at once.
The agent works in a running app
It reads the hand-off note first, edits your repo, and checks its work against the project's real URL, database and logs, not an empty checkout.
https://blog.testReview, then Done
The agent comments what it changed and advances the card. Turn on Require review to hold agent-reported work for your approval. Only a human can move a card to Rejected.
What the board includes
Claude Code, Codex, Cursor, Gemini, Aider, Copilot, OpenCode, Amp, Qwen, Antigravity, Ollama, plus any CLI via Custom.
Every project gets a board; the project cap is the only ceiling.
Eleven board tools plus three read-only resources for agents connected over MCP.
The task board ships in every tier. Verified against the app source: there is no board entitlement gate.
The same afternoon, without a board
Running agents from raw terminals makes you the scheduler, the tracker and the message bus. The context of every session dies with its tab.
The board replaces the tabs, the TODO.md and the re-explaining: cards carry the state, the hand-off note carries the context.
# One agent, one terminal, you in the middle$ cd ~/code/blog && claude> "Take item 3 from TODO.md — the checkout tax bug..."# watch it work, answer its prompts, paste the result somewhere # A second agent means a second terminal to babysit$ tmux new -s codex$ cd ~/code/blog && codex> re-explain the project, the bug, what the last agent did # Task state: your memory. Hand-off: a Slack message to yourself.# Next morning: "what was agent two doing again?"
One app, not a stack of tools
Agent dev environment
Stack detection, runtimes, HTTPS, databases and mail, provisioned per project — the running app your agents verify their work against.
Explore →Sandboxed runs
Wrap a cloned repo or agent-modified project in a sandbox-exec profile: writes confined, network by policy, every denial logged.
Explore →Local databases
Six engines, one wizard: isolated data dirs, dedicated ports, supervision, and connection vars injected into linked projects on start.
Explore →Asked before downloading
Eleven out of the box: Claude Code, OpenAI Codex, Cursor, Gemini, Aider, Copilot, OpenCode, Amp, Qwen, Antigravity and local Ollama models. A Custom option runs any other CLI from a command template. PortBay launches the agents you already have installed; it ships no model of its own.
Each card is a Markdown file under .portbay/tasks/ in the project, and the rolling hand-off log is .portbay/HANDOFF.md. Cards stay plain markdown you can grep, read and edit without PortBay. Since the board moved to a git ref that is never checked out, they are the same board on every branch and every worktree rather than changing with whatever you have checked out. The GUI, the portbay CLI and the MCP server all read and write the same files.
Strikes. Each run that ends without Done adds one; at the cap (3 by default) the card stops auto-dispatching and lands in Blocked with a comment. Before that, an optional rescue attempt hands the last try to a stronger agent, and a teacher step distills the failure into a lesson in .portbay/LEARNINGS.md that every later run reads.
No. The board, agent dispatch and MCP control ship in the free Community tier. Pro raises the ceilings around it: 250 MB task attachments instead of 10 MB, and unlimited projects instead of 6.
Yes. Over MCP, a connected agent can claim the next card, acknowledge its run, post progress and touched files, update the hand-off and move the card forward, using eleven board tools and three read-only resources (context, tasks, handoff).

Give your projects and your agents a real local home.
Download for macOSFree & open source · macOS 11+ on Apple Silicon · Pro from $10/mo