Working with agents
How to hand work over, what it looks like while it runs, and what you get back.
Asking
Write a block with a name in it. That is the whole gesture.
@soffo reaches the resident. @claude or @codex reaches a coding agent you attached. A name you chose reaches a colleague you built. @gmail or @notion reaches an app you connected. One character, and you do not have to know which kind you are reaching for.
What happens next is on the plane. A cursor moves to clear space near what you asked about and the answer is written there as it arrives, in that agent’s colour with its name on it. You can keep working while it does.
Escape means stand down, and it reaches every body at once.
An agent looking at the canvas sees what is drawn on it: the blocks, the tables, the ink, rendered for it. Not your screen, and not your list.
Several errands at once
Ask for three things and you get three columns, each with a cursor moving inside it, each labelled with the errand it is running.
This is the one thing a plane does that a feed cannot. Two agents working at once in a chat window produce two message streams braided into one column, and the only way to read either is to filter by author in your head while both are still writing. That is why chat products serialise, and why two independent errands there take twice as long for no reason but the shape of the container.
Nothing is drawn around the columns. You look once and you know how many things are going, which is which, how far each has got, and which one is stuck. Nothing an agent writes leaves its own column, and every lane says one line in the thread the moment it is done, including the ones that came back with nothing: a column gone quiet is otherwise indistinguishable from a column still working.
Escape reaches lanes that have not started yet, as well as the ones running. Work nobody is waiting for should not set off behind your back.
Apps on the canvas
Press ⌥B and ask for something that runs. What comes back is a working app on the plane, not a picture of one and not a link elsewhere.
Because it is on the canvas, everyone has the same app at the same coordinates, a rebuild reloads it under all of them at once, and pressing something in it is an event rather than a private one. An app can also hand an answer back, which is what makes a generated interface a control an agent reads: build a form, have people fill it in, and the agent that built it hears what they did.
It runs sandboxed. It cannot touch the page around it, read your session, or reach the network.
The canvas does not write these itself. Your coding agent does, on your machine against your repository, and hands the result over. So an app here can be a preview of your real code at a real commit rather than a mock-up that resembles it.