| name | clawdis-canvas |
| description | Drive the Clawdis Canvas panel (present, eval, snapshot, A2UI) via the clawdis CLI, including gateway-hosted A2UI surfaces and action bridging. |
| homepage | https://clawdis.ai |
| metadata | [object Object] |
Clawdis Canvas
Use Canvas to render HTML/JS or A2UI surfaces and capture snapshots.
Core commands
- Present:
clawdis canvas present [--node <id>] [--target <path>] - Hide:
clawdis canvas hide - Eval JS:
clawdis canvas eval --js "..." - Snapshot:
clawdis canvas snapshot
A2UI
- Push JSONL:
clawdis canvas a2ui push --jsonl /path/to/file.jsonl - Reset:
clawdis canvas a2ui reset
Notes
- Keep HTML under
~/clawd/canvaswhen targeting remote nodes. - Use snapshot after renders to verify UI state.
- Treat A2UI as gateway-hosted at
http(s)://<gateway-host>:18789/__clawdis__/a2ui/. - Rely on
canvas a2ui push/resetto auto-navigate the Canvas to the gateway-hosted A2UI page. - Expect A2UI to fail if the Gateway does not advertise
canvasHostUrlor is unreachable:A2UI_HOST_NOT_CONFIGUREDA2UI_HOST_UNAVAILABLE
A2UI quick flow
- Ensure the Gateway is running and reachable from the node.
- Build JSONL with v0.8 server→client messages (
beginRendering,surfaceUpdate,dataModelUpdate,deleteSurface).- Do not use v0.9
createSurface(unsupported).
- Do not use v0.9
- Push JSONL and (optionally) snapshot the result.
Example JSONL (v0.8)
cat > /tmp/a2ui-v0.8.jsonl <<'EOF'
{"surfaceUpdate":{"surfaceId":"main","components":[{"id":"root","component":{"Column":{"children":{"explicitList":["title","content"]}}}},{"id":"title","component":{"Text":{"text":{"literalString":"A2UI (v0.8)"},"usageHint":"h1"}}},{"id":"content","component":{"Text":{"text":{"literalString":"If you can read this, A2UI is live."},"usageHint":"body"}}}]}}
{"beginRendering":{"surfaceId":"main","root":"root"}}
EOF
clawdis canvas a2ui push --jsonl /tmp/a2ui-v0.8.jsonl --node <id>
Action callbacks (A2UI → agent)
- A2UI user actions (buttons, etc.) are bridged from the WebView back to the node via
clawdisCanvasA2UIAction. - Handle them on the agent side as
CANVAS_A2UImessages (node → gateway → agent).