Copilot CLI, working a card in a running app
PortBay spawns `copilot -p` against the card's brief, in a project that is already serving at a real URL with its database attached. Your GitHub Copilot subscription, your machine, no proxy in between.
Can I run GitHub Copilot CLI on a task board?
Yes. PortBay detects the `copilot` binary on your PATH and offers it in the agent picker alongside ten others. Assign it to a card, move the card to To Do, and PortBay spawns `copilot -p "<the card>"` headless with the working directory set to your project — no terminal tab to keep open and nothing to babysit. What makes the run different from the same command typed by hand is what surrounds it: the project is already running on its own .test domain with a certificate macOS trusts, a per-project database is attached and injected as DATABASE_URL, and outgoing mail lands in a local inbox. Copilot can therefore fetch the page it just edited rather than reasoning about it. Each card gets its own git worktree, so several runs share the repo without sharing files, and a strike system stops a card that has failed three times. Copilot runs on the GitHub subscription you already hold; PortBay proxies nothing.
A Copilot run, headless and on a card
The card supplies the prompt; the environment supplies the URL, the database and the logs the run checks itself against.
Your first Copilot CLI card
Five steps from a clean Mac to a Copilot run you can open in a browser. Every command runs as written.
- Install PortBay
- Add your project and press play
- Check Copilot CLI is on your PATH
- Write a card and assign Copilot CLI
- Move the card to To Do and review at a URL
Install PortBay
Homebrew installs the app and the bundled portbay CLI. Prefer a direct download? Grab the DMG from GitHub Releases and drag PortBay.app into Applications.
brew tap portbay-app/portbay && brew install --cask portbayAdd your project and press play
Pick the folder; PortBay reads the stack and fills in the runtime, start command and port. Pressing play issues the certificate, resolves the hostname and attaches the database — the environment the run inherits.
portbay add ~/code/myappCheck Copilot CLI is on your PATH
PortBay resolves the copilot binary and shows it in the agent picker when it finds one. If yours lives somewhere unusual, set the path by hand in Settings. Authentication stays with GitHub, exactly as it is in your terminal.
which copilotWrite a card and assign Copilot CLI
Describe the task the way you would in a pull request. Assign Copilot CLI on the card itself, or make it the board default. The card is a Markdown file in your repo, so it reviews and merges like code.
.portbay/tasks/fix-webhook-retry.mdMove the card to To Do and review at a URL
The run starts, takes its own worktree, and comments what it changed when it finishes. Open the project URL and use the feature rather than reading the patch. Turn on Require review to hold finished work until you approve it.
https://myapp.testCopilot without the board
Nothing stops you running the CLI by hand. The cost shows up on the third task, not the first.
The board's contribution is not the dispatch — it is the running app on the other side of it.
cd ~/code/myappcopilot -p "fix the webhook retry backoff" # it edits files it cannot run:# no server on a hostname it can fetch# no database to query# no log to read back# so you verify it yourself, by hand, every time
The pieces underneath
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.
Explore →Agent dev environment
Stack detection, runtimes, HTTPS, databases and mail, provisioned per project — the running app your agents verify their work against.
Explore →Asked before downloading
How does PortBay launch Copilot CLI?
As a headless subprocess: `copilot -p "<the card>"`, with the working directory set to the project. PortBay uses the copilot install already on your Mac and the GitHub subscription already attached to it. No key is stored by PortBay and no request is proxied through it.
Can Copilot CLI claim cards itself over MCP?
No. PortBay wires MCP both ways for four agents — Claude Code, Codex, Cursor and Gemini — and Copilot CLI is not one of them. Dispatch works in full; only the reverse direction is missing, so cards move because you move them or because auto-dispatch does.
Can I choose which model a Copilot card uses?
Not from PortBay. Copilot CLI is one of six agents with no wired model flag, so PortBay offers no model selector for it and appends nothing to the command. The CLI uses whatever it is configured to use.
Can Copilot CLI run next to other agents on one board?
Yes. Assign per card or set a board default, and a concurrency cap decides how many run at once. Each card takes its own git worktree under .portbay/worktrees/, so a Copilot run and a Claude Code run on the same repo never touch the same file.

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