O que canvas faz?
Use o canvas para mostrar HTML em nós Mac/iOS/Android conectados.
Modelo
- O host do canvas serve arquivos de
plugins.entries.canvas.config.host.root. - As rotas do canvas ficam na porta HTTP do Gateway (
gateway.port, padrão18789). - A ponte do nó envia URLs do canvas para os aplicativos dos nós conectados.
- Os aplicativos dos nós renderizam as URLs em uma WebView.
- O nome do host segue
gateway.bind: apenas loopback local para localhost, IP da LAN para LAN, host do Tailscale para tailnet, escolhe automaticamente a melhor rota. - URLs localhost funcionam apenas para um nó na mesma máquina.
- Nós pareados normalmente recebem URLs de capacidade
pluginSurfaceUrls.canvascom escopo de nó; prefira estas quando disponíveis.
Configuração
Config ativa: $OPENCLAW_CONFIG_PATH ou ~/.openclaw/openclaw.json.
{
"plugins": {
"entries": {
"canvas": {
"config": {
"host": {
"enabled": true,
"root": "~/.openclaw/canvas",
"liveReload": true
}
}
}
}
},
"gateway": { "bind": "auto" }
}
Ações
present: mostra o canvas, URL opcional.hide: oculta o canvas.navigate: abre uma nova URL.eval: executa JavaScript no canvas atual.snapshot: captura uma screenshot.
Fluxo de trabalho
- Certifique-se de que o host do plugin Canvas está ativado.
- Coloque HTML/CSS/JS em
plugins.entries.canvas.config.host.rootou no diretório padrão de canvas. - Use uma rota acessível pelo nó de destino.
- Apresente a URL hospedada:
/__openclaw__/canvas/<arquivo>.html. - Use
snapshotquando o usuário precisar de uma prova visual.
Formato da URL
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/index.html
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/games/snake.html
Mapeamento de caminhos:
/__openclaw__/canvas/index.html-><raiz do host canvas>/index.html/__openclaw__/canvas/games/snake.html-><raiz do host canvas>/games/snake.html
Solução de problemas
- Nó vê localhost mas está remoto: corrija
gateway.bindou a URL pública, regenere a URL. - Nó na LAN não consegue carregar: verifique mesma rede, firewall, porta do Gateway e URL de capacidade/autenticação.
- Nó no tailnet não consegue carregar: verifique status do Tailscale e host anunciado.
- Página em branco: abra a URL localmente, verifique o console do navegador, depois faça snapshot no nó.
- Live reload ausente: verifique
liveReloade se os arquivos foram escritos dentro da raiz.