# canvas > Control the Canvas display on paired nodes (iOS, Android, macOS). Show web content, run JS, capture screenshots, and display real-time UI. - Author: Alyosha - Repository: jonathanwxh-cell/alyosha-workspace - Version: 20260205080016 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/jonathanwxh-cell/alyosha-workspace - Web: https://mule.run/skillshub/@@jonathanwxh-cell/alyosha-workspace~canvas:20260205080016 --- # Canvas Skill Control the Canvas display on paired nodes (iOS, Android, macOS). Show web content, run JS, capture screenshots, and display real-time UI. ## Requirements - **Paired node required** — canvas only works with connected nodes - **Node must be foregrounded** — background calls return `NODE_BACKGROUND_UNAVAILABLE` - Check node availability: `nodes action=status` ## Core Actions ### Present Content Display a URL or inline HTML on the node's canvas: ``` canvas action=present url="https://example.com" canvas action=present url="data:text/html,..." ``` **Parameters:** - `url` — URL or data URI to display - `width`, `height` — canvas dimensions (optional) - `x`, `y` — position offset (optional) - `node` — target node ID/name (required if multiple nodes) ### Navigate Change the current canvas URL: ``` canvas action=navigate url="https://new-url.com" ``` ### Hide Canvas ``` canvas action=hide ``` ### Evaluate JavaScript Run JS in the canvas context and get results: ``` canvas action=eval javaScript="document.title" canvas action=eval javaScript="document.querySelector('h1').textContent" ``` **Use cases:** - Extract data from displayed page - Modify DOM dynamically - Trigger interactions ### Capture Screenshot Get a snapshot of the current canvas: ``` canvas action=snapshot outputFormat=png canvas action=snapshot outputFormat=jpg quality=0.9 maxWidth=1200 ``` **Parameters:** - `outputFormat` — `png`, `jpg`, or `jpeg` - `quality` — 0-1 for JPEG compression (default: 0.9) - `maxWidth` — resize if wider (optional) Returns: Image attachment (MEDIA path) ## A2UI (Real-time UI) Push structured content to the canvas in real-time: ### Push Content ``` canvas action=a2ui_push jsonl='{"type":"text","content":"Hello world"}' ``` Or from a file: ``` canvas action=a2ui_push jsonlPath="./content.jsonl" ``` ### Reset A2UI Clear all A2UI content: ``` canvas action=a2ui_reset ``` **Note:** Only A2UI v0.8 JSONL format is supported. ## Interactive Content Examples ### Display a Dashboard ```javascript // Present a live dashboard canvas action=present url="data:text/html,