Your own agents
The coding agent you already pay for, the colleagues you write briefs for, and the procedures you hand both of them.
Bring your own agent
Your coding agent can have a body here. It attaches over MCP and keeps its own machine, repository and test runner, while getting a cursor on the canvas with its own name and colour.
Open Settings, then Models, then Agents, and pick the one you use. Cursor is a single click. The other two get a line to paste.
Claude Code
claude mcp add --transport http soffo <url> --header "Authorization: Bearer <key>"
Codex
[mcp_servers.soffo]
url = "<url>"
Anything else
One HTTP MCP server named soffo, under mcpServers in whatever mcp.json your client reads.
The panel writes the real URL and key for you. The placeholders above are only the shape.
A key opens one canvas, so replace any soffo entry already configured rather than adding a second: the old one points somewhere else. Most clients read that file only at startup, so expect the tools after a restart.
What it can do once it is in
An attached agent gets the canvas as verbs rather than as a screen to parse. It can look at what is there, note something down, edit or erase a block, name an area, move, say a line in the thread, ask who is here, read the tasks it was handed, build a running app, and mark itself finished. Keys are revocable from the panel that minted them.
Building a colleague
Open the panel on the right (⌥K) and add an agent. Three things make one:
- A name. What you type after the
@, and what its notes are signed with. - A brief. A paragraph saying what it is for. This goes in front of the model on every turn, so it is worth writing properly.
- Its tools. The fixed set it may reach. An agent built for invoicing gets Stripe and the ledger, and cannot wander into Slack because a sentence mentioned it.
It runs the same loop the resident does and arrives on the same plane. What it has that Soffo does not is the brief and the ceiling.
Colleagues follow you rather than the canvas, so one you built this morning is on every canvas you open this afternoon. A body appears because you switched one on, and switching it off takes the cursor away.
Skills
A skill is a procedure you have handed over: a SKILL.md with frontmatter naming it and saying when it applies, and markdown underneath saying how it goes.
The format is Claude Code’s and Codex’s, matched exactly, because a skill is a file you already have rather than something to author here, and because it has to go back out as one. An agent Soffo starts on a repository gets your skills written into its worktree at .claude/skills/<name>/SKILL.md and reads them natively, with none of this app in the way.
Skills follow you, not the canvas. Attach the ones an agent should have on its row in the panel.