Floating terminal

When to use canvas Send vs the floating terminal. Two surfaces, two billing buckets.

Clearly has two ways to talk to Claude: the canvas Send button (for planning, brand decisions, content, approvals) and a floating terminal window that runs interactive Claude in xterm (for heavy code work). They draw from DIFFERENT billing buckets in your Anthropic account, and they're optimized for different kinds of tasks.

Cmd+` toggles the floating terminal. Cmd+K opens it focused. It auto-launches `claude --continue --append-system-prompt` with the active canvas context loaded.

Two surfaces, two billing buckets

Anthropic separates Agent SDK usage (programmatic API calls) from interactive Claude Code usage (terminal CLI). Each has its own quota.

SurfaceWhen to useAnthropic bucket
Canvas SendPlanning, brand work, content drafts, narration, single-turn questions, approval formsAgent SDK credit pool ($20 Pro / $100 Max 5x / $200 Max 20x)
Floating terminalMulti-step refactors, large file edits, codebases > 5 files, anything requiring git/test/build loopsInteractive subscription quota (separate, more generous)
Both at oncePlan in canvas → drop reference brief into terminal → terminal Claude does the long work → updates canvas blocks when doneEach pulls from its own bucket — no double-billing

How Send routing works

When the floating terminal is open, the Send-to-Claude button automatically routes diffs INTO the terminal's stdin instead of firing agent:claude-prompt. The same Send action that would have gone to the Agent SDK now goes to interactive Claude Code. This switches you from the credit pool to the subscription quota for that turn.

1

Open the terminal (Cmd+`)

Drops a draggable, resizable window over the canvas. xterm session opens to ~/.clearly/compositions//. Claude --continue auto-runs in the cwd.

2

Compose your brief on the canvas

Drop references, notes, brand. Just like the canvas-as-prompt model — the only difference is Send target.

3

Hit Send

The diff payload goes into the terminal's stdin. Claude processes it as a normal interactive prompt. You see the response in the terminal in real time; status + result blocks land on the canvas as Claude calls beehaven via the Bash tool.

4

Iterate in either surface

Type in the terminal directly for fast follow-ups (saves Claude's context). Send from canvas again to add more references mid-stream.

Heavy code work (refactor, run tests, debug) → keep the terminal open. Quick questions + content + brand work → close the terminal so Send routes back through the Agent SDK (faster, no terminal context overhead).

The SKILL.md that loads in your terminal

Every floating terminal session auto-loads clearly-canvas/skills/SKILL.md from your ~/.claude/skills/. This teaches the terminal Claude how to drive the canvas back via beehaven CLI — drop status blocks, narration, build results, approval forms. The same protocol the canvas Send path uses, just invoked from interactive Claude instead of the SDK.

Process hygiene

Claude in the terminal can spawn background tasks (long-running dev servers, watch processes). The skill teaches Claude to track them in TodoWrite + kill at end of turn. If you see orphaned processes, pkill -f node (or whatever) cleans up. The daemon reaps subprocess trees on quit.