Display and control HTML content on connected Mac, iOS, or Android nodes via a web-based canvas with live reload and remote actions.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install canvas或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install canvas⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/canvas/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
Display HTML content on connected OpenClaw nodes (Mac app, iOS, Android).
The canvas tool lets you present web content on any connected node's canvas view. Great for:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Canvas Host │────▶│ Node Bridge │────▶│ Node App │
│ (HTTP Server) │ │ (TCP Server) │ │ (Mac/iOS/ │
│ Port 18793 │ │ Port 18790 │ │ Android) │
└─────────────────┘ └──────────────────┘ └─────────────┘
canvasHost.root directoryThe canvas host server binds based on gateway.bind setting:
| Bind Mode | Server Binds To | Canvas URL Uses | | ---------- | ------------------- | -------------------------- | | loopback | 127.0.0.1 | localhost (local only) | | lan | LAN interface | LAN IP address | | tailnet | Tailscale interface | Tailscale hostname | | auto | Best available | Tailscale > LAN > loopback |
Key insight: The canvasHostHostForBridge is derived from bridgeHost. When bound to Tailscale, nodes receive URLs like:
http://<tailscale-hostname>:18793/__openclaw__/canvas/<file>.html
This is why localhost URLs don't work - the node receives the Tailscale hostname from the bridge!
| Action | Description | | ---------- | ------------------------------------ | | present | Show canvas with optional target URL | | hide | Hide the canvas | | navigate | Navigate to a new URL | | eval | Execute JavaScript in the canvas | | snapshot | Capture screenshot of canvas |
In ~/.openclaw/openclaw.json:
{
"canvasHost": {
"enabled": true,
"port": 18793,
"root": "/Users/you/clawd/canvas",
"liveReload": true
},
"gateway": {
"bind": "auto"
}
}
When liveReload: true (default), the canvas host:
Great for development!
Place files in the canvas root directory (default ~/clawd/canvas/):
cat > ~/clawd/canvas/my-game.html << 'HTML'
<!DOCTYPE html>
<html>
<head><title>My Game</title></head>
<body>
<h1>Hello Canvas!</h1>
</body>
</html>
HTML
Check how your gateway is bound:
cat ~/.openclaw/openclaw.json | jq '.gateway.bind'
Then construct the URL:
http://127.0.0.1:18793/__openclaw__/canvas/.html http://:18793/__openclaw__/canvas/.html Find your Tailscale hostname:
tailscale status --json | jq -r '.Self.DNSName' | sed 's/\.$//'
openclaw nodes list
Look for Mac/iOS/Android nodes with canvas capability.
canvas action:present node:<node-id> target:<full-url>
Example:
canvas action:present node:mac-63599bc4-b54d-4392-9048-b97abd58343a target:http://peters-mac-studio-1.sheep-coho.ts.net:18793/__openclaw__/canvas/snake.html
canvas action:navigate node:<node-id> url:<new-url>
canvas action:snapshot node:<node-id>
canvas action:hide node:<node-id>
Cause: URL mismatch between server bind and node expectation.
Debug steps:
cat ~/.openclaw/openclaw.json | jq '.gateway.bind'lsof -i :18793curl http://:18793/__openclaw__/canvas/.html Solution: Use the full hostname matching your bind mode, not localhost.
Always specify node: parameter.
Node is offline. Use openclaw nodes list to find online nodes.
If live reload isn't working:
liveReload: true in configThe canvas host serves from /__openclaw__/canvas/ prefix:
http://<host>:18793/__openclaw__/canvas/index.html → ~/clawd/canvas/index.html
http://<host>:18793/__openclaw__/canvas/games/snake.html → ~/clawd/canvas/games/snake.html
The /__openclaw__/canvas/ prefix is defined by CANVAS_HOST_PATH constant.
hide it or navigate away安装 Canvas 后,可以对 AI 说这些话来触发它
Help me get started with Canvas
Explains what Canvas does, walks through the setup, and runs a quick demo based on your current project
Use Canvas to display and control HTML content on connected Mac, iOS, or Android ...
Invokes Canvas with the right parameters and returns the result directly in the conversation
What can I do with Canvas in my design & creative workflow?
Lists the top use cases for Canvas, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/canvas/ 目录(个人级,所有项目可用),或 .claude/skills/canvas/(项目级)。重启 AI 客户端后,用 /canvas 主动调用,或让 AI 根据上下文自动发现并使用。
Canvas 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Canvas 可免费安装使用。请查阅仓库了解许可证信息。
Display and control HTML content on connected Mac, iOS, or Android nodes via a web-based canvas with live reload and remote actions.
Canvas 属于「Design & Creative」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my design & creative tasks using Canvas
Identifies repetitive steps in your workflow and sets up Canvas to handle them automatically