Coming from Conductor. The candied red Cherry Pi logo with Conductor’s glowing white C integrated into the left cherry.

Conductor is joining Meta. Its cloud workspaces become read-only on 13 November and shut down on 20 November, and the Mac app stops getting new models and fixes in early 2027. If your work runs through it, here is what cherry π does with the same loop, what carries over unchanged and what isn't here yet.

The loop Conductor made standard is a good one: a task gets its own copy of the repository and its own branch, an agent works there, you read the diff, send it back with comments, run the app, and merge what you want. cherry π keeps that loop. It calls one task a goal.

Bring your setup and run scripts

Conductor keeps a repository's scripts in the repository, in .conductor/settings.toml (or the older conductor.json). The Conductor addon reads them and sets the same commands on your layer:

picache addons enable conductor
picache conductor          # what it found, and what it would set
picache conductor import   # set this layer's setup and run commands

Your scripts run unchanged. Each goal gets ten ports of its own, as each Conductor workspace did, and its commands see CONDUCTOR_PORT, CONDUCTOR_ROOT_PATH, CONDUCTOR_WORKSPACE_PATH and CONDUCTOR_WORKSPACE_NAME beside cherry π's own CHERRYPI_ names for the same values. A run action other than the default, the archive script and run_mode have no equivalent yet, and picache conductor lists each one it leaves out.

The same loop, side by side

In ConductorIn cherry π
A workspace: a git worktree on its own branchA goal: a copy-on-write copy or a worktree, on cherrypi/goal-…
Setup and run scripts, a port block per workspaceThe layer's setup and run commands, ten ports per goal, Run in a pane
Several agents in parallelOne goal to several agents with @a,@b; accepting one offers to reject the rest
Diff viewer with commentsThe goal's diff with line comments; Request changes sends them
The Review actionPicache reviews every goal, read-only, before you decide
Checks tab and todosReady?: tests, review, open comments, todos, conflicts, and a pull request's checks and review
CheckpointsA snapshot at every step, and every turn kept
Merge, or open a pull requestAccept to merge here, Push… to any remote with git request-pull, Open pull request… on GitHub, GitLab or Forgejo, or Offer… to a paired machine

Pull requests on GitHub, GitLab or Forgejo

If your team merges through pull requests, a goal can open one. Turn on your host's addon and keep a token for it in Keys:

picache addons enable github   # or gitlab, or forgejo

Push the goal's branch, then press Open pull request… on its card, or run picache goal pr <run>. It asks for the base branch and whether to open it as a draft, and the description says what the goal was, which agent worked it, how its last test went, and Picache's review. From then on the card follows it: its checks, its review, and why the host won't merge it when it won't. It checks every 15 minutes, or as often as you choose, and Refresh checks now. Failing checks can hold Accept if you want them to.

cherry π makes those calls itself, only to your host's API. The token stays in Keys, and no agent ever sees it. Only you open a pull request.

Isolation that is a boundary

Conductor's own documentation says it plainly: "Workspace isolation is development isolation, not a security boundary," and agents "run on your Mac with your user permissions." That is honest, and it is the main thing cherry π does differently.

A goal's agent runs inside the agent box: Seatbelt on macOS, bubblewrap on Linux. Its own tools are narrowed to reading, so every change it makes goes through cherry π, into its copy and nowhere else, with the copy's .git read-only. Each command it wants to run is a request you approve, unless you allowed that exact command for that goal. The agent can't merge, push or accept its own work. Those are yours.

No host, no account, no cloud

cherry π is one file you download and run. There is no account and no service between you and your work. A goal's branch can go to any git remote you already push to, or straight to another of your machines, peer to peer, with no git host in between. It runs on macOS and Linux.

What isn't here yet

If you depend on any of these, it's better to know before you switch:

  • Review threads back to the agent, and merging in the app. A goal opens its pull request on GitHub, GitLab or Forgejo, and its card follows the checks and the review, but review threads aren't sent back to the agent yet, and merging happens on the host. Those come next, in the same addons.
  • More agents on goals. Claude Code and OpenCode take goals, through the Agent Client Protocol; OpenCode is measured in the box on macOS, not yet on Linux. Codex, Cursor and others run in terminal panes, each in its own box, but not as goal agents yet.
  • Starting from an issue. No GitHub or Linear issue to goal yet; an Inbox thread can become a goal.
  • Your Conductor worktrees as goals. The addon carries scripts, not work in progress. Commit or push what a workspace holds; a goal starts from your layer as it is.
  • Windows, a phone app and team seats. None of these exist.

Start with one goal

Download cherry π, open your repository as a layer, import its scripts, and give an agent one task you would have given it in Conductor:

picache conductor import
picache goal @claude "make the login tests pass" --steps 8

Then read its diff, comment, press Run to try it on its own port, and accept it, open a pull request for it, or let it go.

See goals in the manual, What if… for the box, and Download.