A control room for
parallel coding agents.

Every branch gets its own working directory, terminals and ticket context. Run one agent everywhere, a different one per worktree, or none at all. GridTree treats them all the same.

macOS · Windows
Plays nicely with the agents you already run
Claude CodeCursor CLIOpenAI Codex CLIOpenCodeAny MCP agentAny TTY tool
Why GridTree

A first-class home for every
branch, agent and shell.

Worktrees, terminals, tickets and dev-servers all tie to the same unit of work and stay visible in one window. Stop juggling clones, stashes and tmux panes.

Worktrees

Every branch is a folder of its own.

Every branch you care about gets a folder of its own. Separate working directory, separate terminals, separate uncommitted changes. Switch between them with a click.

  • Create from main, a branch, or a ticket in one click
  • Live ahead / behind, status and PR badges per row
  • Delete a branch and its worktree together in one go
WORKTREES+ Worktree
main (main)
platform-api
238-add-password-reset-flow
platform-api.worktrees/238-add-password-reset-flow
↗ #238↑3
412-fix-checkout-race-condition
platform-api.worktrees/412-fix-checkout-race
↗ #4121
418-refactor-cart-pricing
platform-api.worktrees/418-refactor-cart-pricing
PR ↑↑2
dependabot/zod-3.24.1
platform-api.worktrees/dependabot-zod
↑1↓8
Projects · Terminals

Every repo you're working on,
in a single window.

Each repo is a tab at the top of GridTree. Each tab has its own sidebar, worktrees and as many terminal sessions as you want: agents, dev-servers, REPLs, log tails. Cycle them with keyboard shortcuts.

  • Real PTY sessions per worktree, kept alive between launches
  • Drag terminals between panes to rearrange your workspace
  • Layout modes that fit terminals onto any screen, from a 13″ laptop to a 32″ monitor
GridTree
acme-webbilling-svcplatform-apishared-ui+
main · Alt+1
VITE ready in 642 ms
[hmr] update /cart/pricing.ts
→ http://localhost:5173/
#412 checkout · Alt+2
reading payments/intent.ts…
patching idempotency key resolution
18 / 18 tests green
Tickets

All your work,
next to your branches.

GridTree pulls GitHub Issues, GitHub PRs and Jira tickets into the sidebar so they live next to the worktrees that ship them. One inbox for everything you're working on, filtered, searchable and branch-aware.

  • GitHub Issues, GitHub PRs and Jira tickets in one unified list
  • Multiple Jira instances supported, so each project can point at a different tracker
  • Worktrees remember the ticket that spawned them, and PR status surfaces live
GITHUB ISSUES12
GH#238Add password reset flow with email tokenPR open
GH#412Checkout double-charges on retrybug
GH#418Refactor cart pricing into shared helper
JIRA · ACME SPRINT 245
JRACME-204Org seat invite flowstory
JRACME-198Quick-action templates v2task
Quick Actions

Turn a ticket into a
working setup, in one click.

Quick Actions are configurable per-project automations triggered from a ticket or a worktree. The default flow spins up a worktree, opens a terminal in it, and launches your preferred agent with the ticket body already in its prompt. No copy-paste, no cd. Make your own for anything else you do twenty times a day.

  • One click from a ticket: worktree, terminal and agent, primed with context
  • Works with any agent that speaks MCP or takes context on the CLI
GH#412Checkout double-charges on retry
payment intent is re-created on every retry instead of reusing the idempotency key — affects retries from worker queues and from the iOS app.
bugpaymentsprio:p1
App-runner

Dev-servers you don't
have to babysit.

Start, stop and restart dev-servers, workers and stubs from the tab itself, scoped to the worktree, so each branch can run its own copy.

  • Configured per project
  • Open a log terminal for any runner, or read it through MCP
Aspire02:14
vite dev00:48
workers14:02
storybookstopped
Review

See every change before
you push it.

Each worktree comes with its own commit history, file changes and uncommitted diff. Flip between branch-only, all-commits and all-branches. Click a file to read the diff inline.

  • Per-worktree commit history
  • Inline diffs with line numbers and per-hunk context
  • Uncommitted changes live next to history, so a push is never a surprise
412-fix-checkout-race-condition+1193−11
src/payments/intent.ts+12 −4
21  async retry(intentId: string) {
22-   return stripe.paymentIntents.create({
23-     amount, currency,
22+   return stripe.paymentIntents.create({
23+     amount, currency,
24+     idempotencyKey: keyFor(intentId),
25    });
26  }
Agent status

Know which agents need you,
at a glance.

Every terminal reports what its agent is doing right now: thinking, running a tool, finished, or waiting on you. The state rides along on the terminal header, the tab, and the worktree row. A counter on each project tab tallies how many agents are blocked on your input, so nothing sits idle waiting for an answer you never saw.

  • Live state per terminal: thinking, using a tool, waiting for input, or done
  • A waiting-for-input counter on every project tab spots blocked agents across all repos
GridTree2 waiting for input
acme-webplatform-api2shared-ui
412-checkoutclaude · Alt+1Waiting for input
238-pwd-resetclaude · Alt+2Agent thinking
418-cartcodex · Alt+3Using edit_file
docs-rewriteclaude · Alt+4Waiting for input
501-telemetryclaude · Alt+5Done
MCP

Set up your tools once.
Your agents inherit them.

Connect GitHub and Jira to GridTree. Any MCP-aware agent (Claude Code, Cursor, anything that speaks the protocol) then uses GridTree as its hands, with the same credentials and the same view you have. No per-agent integration setup, no copying tokens around.

  • Read tickets via your existing Jira and GitHub setup, so the agent needs no credentials of its own
  • Same actions you take in GridTree: list worktrees, read ticket bodies, start and stop runners
  • Open MCP protocol, so any compatible client plugs in: Claude Code, Cursor, your own scripts
MCPtools/callid 0x14
{
  "name": "gridtree.worktrees.list",
  "arguments": {
    "project": "platform-api",
    "status": "open"
  }
}
2003 worktrees
[
  { "id": "238", "branch": "238-pwd-reset" },
  { "id": "412", "branch": "412-checkout" },
  { "id": "418", "branch": "418-cart" }
]

Get GridTree on your machine.

Free Community edition. Optional 14-day Pro trial, cancel anytime.