Every task gets its own git worktree, its own agent, and ends in a draft PR. Agents keep working when the app is closed.

STAGE 1HOW IT PLAYS

ONE TASK, ONE WORKTREE

Each thread gets its own git worktree and branch. Agents never trip over each other, or over you.

PICK YOUR AGENT

Claude Code, Codex, Cursor, Gemini CLI and more. Approvals, diffs and history look the same for all of them.

ENDS IN A DRAFT PR

When the agent is done, the branch goes up as a draft pull request, ready for your review.

NEVER GAME OVER

Agents run in bobbled, a background service. Close the app and they keep working.

STAGE 2PLAYER SELECT

Each thread picks its agent. Claude Code runs over its stream-json protocol; the rest speak the Agent Client Protocol.

STAGE 3POWER-UPS

A

APPROVAL RULES

"Always allow npm test in this repo." Deny wins over allow.

L

AUDIT LOG

Every approval, rule change and sign-in, with who did it and from where.

Q

RUN QUEUE

Four agents at once by default. The rest wait in line for a free slot.

R

REMOTE ACCESS

Pair your phone over HTTPS and WebSocket. Off until you turn it on.

T

OPENTELEMETRY

Set OTEL_EXPORTER_OTLP_ENDPOINT for traces and metrics.

M

MCP TOOLS

Reuse your mcpServers config and pick tools per thread.

F

NOT JUST CODE

Start a thread without a repo and see the files the agent made.

K

SAVED TOKENS

Keep agent tokens in Bobble, so other sessions can't sign you out.

BONUS STAGETHE API

SCRIPT EVERYTHING

The app is just one client. Everything goes through a JSON-RPC API on a private socket, with an event log you can replay from any point.

# say hello to the service
printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"daemon.hello"}' \
  | nc -U ~/.bobble/bobbled.sock

CONTINUE?INSERT COIN

Bobble for macOS. Bring your own agents.

DOWNLOAD FOR MAC
← → MOVE · SPACE JUMP (PUFF TWICE IN THE AIR) · X BUBBLE · ↓ DROP · ESC QUIT