Canvas — instructions for agents
Canvas is a native macOS spatial note-taking app. It is designed to be operated by humans and agents through the same local files.
Canvas is a native macOS spatial note-taking app. It is designed to be operated by humans and agents through the same local files.
Canvas is the new name for Blink. The 2.3.0 canonical release installs
Canvas.app and provides the canvas CLI. The package remains @arach/blink;
blink is a compatible command alias. Legacy download channels still use
Blink.app. Check the release contract
for the selected channel. Update the app and CLI together.
Keep existing file paths, blink.* frontmatter, and protocol identifiers
unchanged. The gateway identifies this product as blink, and system.hello
reports "app": "Blink" with "displayName": "Canvas".
Canvas remains an independent app. The family commands lats canvas and
lats blink forward to Canvas without sharing the Lattices app lifecycle.
The note is the window, and the desktop is the workspace. A note is one floating panel in the running app and one Markdown file on disk. Opening an already-open note focuses its existing panel rather than creating a duplicate.
Choose the right surface
- Operating Canvas: use the
canvasCLI for notes andconfig.jsonfor behavior and appearance. Useblinkon an older installation. - Reading or writing content: prefer CLI commands; plain file access is the lower-level escape hatch.
- Verifying live appearance or placement: use the GUI only when the task requires the rendered visual surface.
- Developing Canvas itself: read the repository's
AGENTS.mdbefore changing code.
The running app also serves a local Unix socket for a limited set of live panel, note, and desk operations, plus newline-delimited events. See the implemented socket API for the supported methods. The broader agent API proposal and an MCP server are not implemented. Use the CLI and filesystem for ordinary note edits.
First check
canvas ls --jsonExpected result: a JSON list of notes. The command reads files only. It does
not open panels. For automation that must not touch the user's notes, set
CANVAS_HOME to a scratch directory first:
export CANVAS_HOME="$(mktemp -d)"
canvas present hello