cherry π is a workspace for the terminal programs you already use and the agents you work with. It runs on your machine. It connects to another machine only when you pair them, and you decide what each person and each agent may touch.
One layer per project
Open cherry π in your terminal, Ghostty for example. Each project gets a layer: its folder, its panes and its conversation with Picache, cherry π's own agent. Split a pane to run the tests next to the code, keep Neovim or lazygit in another, and switch layers when you move to the next project. The layer you left keeps running.
If you know tmux or Zellij, panes and layouts will feel familiar. You can arrange them with the mouse, from a shell with the picache command, or from a Lua script.
Your work stays on your machine
Conversations and run records are kept in SQLite files in your workspace. Terminal processes run apart from the desktop client, so quitting the client leaves your terminals running, and opening it again reconnects to them.
What runs where, and what outlives what.
A layer can leave as one signed file holding its history and its folder, and be imported on another machine. Its permissions stay behind, and the receiving workspace grants its own. Tools you build travel the same way: a .pi app is a single SQLite file with its code, its assets and its data.
Harnesses compose
An agent harness runs a model and its tools in a loop until a task is done. Claude Code and Codex are harnesses of that kind, and Picache has one of its own. cherry π is the harness around them: the workspace that holds the projects, decides what each agent may reach, and keeps a record that outlasts any single turn.
Each layer controls its own part. A vendor agent keeps its own loop and tools inside cherry π. cherry π can run it in a box that limits which files and network it reaches, and it checks and records the calls the agent makes through cherry π. It does not see or approve every step inside the vendor's loop.
The agent's own sandbox is drawn dashed, and cherry π's box
solid.
Give an agent a goal and keep the decision
A goal gives an agent its own copy of the project. The agent changes the copy, the project's tests run after each step, and Picache reviews the result. Your project is untouched until you accept the work. If you reject it, the branch is kept for the record.
A goal: worked in a copy, reviewed by Picache, decided by you.
If something is cut off halfway, such as a write whose outcome is unknown, Recovery holds it for you to settle before anything continues.
Machines meet as peers
Every installation has its own identity. Two machines find each other with a shared secret, and pairing needs the other operator to say yes. Pairing grants nothing by itself. Each share is for one workspace, one layer or one terminal, and you can take it back.
Finding a machine takes a shared secret, and pairing with it
takes the other operator's yes.
Layers on one machine, linked workspaces and paired machines all send offers and replies the same way, through an outbox, an inbox and receipts, so a request is still tracked after the connection that carried it has gone. Connections may pass through relays. The work, and the decisions about who may use it, stay with the people running the machines.
Try it
cherry π is an engineering prototype. The local workspace, layer exports, pairing and scoped shares work. Live layers between two physical machines are still being tried. The manual says what works today and what doesn't yet. Join early access to get a build and tell us where it breaks.