# Limits

What canvas does not do, yet.

canvas is a prototype. These are known, and not bugs to report.

## Hosting

- **The host's browser must be open.** It is the only way to `canvas serve`: without it nothing
  runs, board tools are unavailable, and board edits between guests wait.
- **With several host tabs**, the first one connected runs the board tools.
- **Peer discovery uses public Nostr relays.** Some are down at any time; discovery usually
  succeeds through the others.

## Guests

- **One guest access per board**, no per-person roles.
- **No way to revoke a guest link** except deleting `.canvas/`, which changes every link.
- **Late joiners receive whole threads**, shortest first, each in one message: a very long thread
  takes a while to appear, and closed frames' threads are not sent.

## Agents

- **Claude Code and opencode** are the agents canvas launches. Others speak ACP too but need code.
- **Permission prompts add up**: opencode asks for every shell command.
- **Tool call arguments** are not shown in the thread, only the tool's title.
- **Tool output is cut** to its first 3,000 and last 1,000 characters, and images a tool returns
  (a screenshot the agent reads) show as a placeholder. The agent itself gets them in full.
- **Agents prompt other agents only through people**: an agent frame an agent opens gets a draft.

## Frames

- **Terminals** do not survive a restart of `canvas serve`, and keep running after their frame is
  removed, until `canvas serve` stops.
- **Browser frames** load pages per viewer: a dev server on the host's `localhost` is not visible
  to guests, who see a notice.
- **HTML previews** are one file: relative assets and links don't load.
- **Files are read-only.** The board cannot create or edit files; agents do.
- **The shared set is fixed by rule.** There is no `.canvasignore` yet.
- **Layout**: only rows, no stacks; a dropped frame can still run into a neighbouring cluster.