Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
O aplicativo Android ainda não foi lançado publicamente. O código-fonte está disponível no repositório OpenClaw em
apps/android. Você pode compilá-lo por conta própria usando Java 17 e o Android SDK (./gradlew :app:assemblePlayDebug). Consulte apps/android/README.md para instruções de compilação.Instantâneo de suporte
- Função: aplicativo de nó companheiro (o Android não hospeda o Gateway).
- Gateway obrigatório: sim (execute-o no macOS, Linux ou Windows via WSL2).
- Instalação: Primeiros passos + Pareamento.
- Gateway: Runbook + Configuração.
- Protocolos: Protocolo do Gateway (nós + plano de controle).
Controle do sistema
O controle do sistema (launchd/systemd) fica no host do Gateway. Consulte Gateway.Runbook de conexão
Aplicativo de nó Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway O Android se conecta diretamente ao WebSocket do Gateway e usa pareamento de dispositivo (role: node).
Para hosts Tailscale ou públicos, o Android exige um endpoint seguro:
- Preferencial: Tailscale Serve / Funnel com
https://<magicdns>/wss://<magicdns> - Também compatível: qualquer outra URL de Gateway
wss://com um endpoint TLS real ws://em texto claro continua compatível em endereços de LAN privada / hosts.local, além delocalhost,127.0.0.1e a ponte do emulador Android (10.0.2.2)
Pré-requisitos
- Você consegue executar o Gateway na máquina “mestre”.
- O dispositivo/emulador Android consegue acessar o WebSocket do gateway:
- Mesma LAN com mDNS/NSD, ou
- Mesma tailnet Tailscale usando Bonjour de longa distância / DNS-SD unicast (veja abaixo), ou
- Host/porta do gateway manual (fallback)
- O pareamento móvel por tailnet/público não usa endpoints de IP tailnet bruto
ws://. Use Tailscale Serve ou outra URLwss://. - Você consegue executar a CLI (
openclaw) na máquina do gateway (ou via SSH).
1) Inicie o Gateway
listening on ws://0.0.0.0:18789
wss:// / https://. Uma configuração simples gateway.bind: "tailnet" não basta para o primeiro pareamento remoto do Android, a menos que você também encerre TLS separadamente.
2) Verifique a descoberta (opcional)
A partir da máquina do gateway:local. mais o domínio de longa distância configurado em uma única passagem e usa o endpoint
de serviço resolvido em vez de apenas dicas TXT.
Descoberta por tailnet (Viena ⇄ Londres) via DNS-SD unicast
A descoberta NSD/mDNS do Android não atravessa redes. Se seu nó Android e o gateway estão em redes diferentes, mas conectados via Tailscale, use Bonjour de longa distância / DNS-SD unicast. A descoberta por si só não é suficiente para pareamento Android por tailnet/público. A rota descoberta ainda precisa de um endpoint seguro (wss:// ou Tailscale Serve):
- Configure uma zona DNS-SD (exemplo
openclaw.internal.) no host do gateway e publique registros_openclaw-gw._tcp. - Configure DNS dividido do Tailscale para o domínio escolhido apontando para esse servidor DNS.
3) Conecte pelo Android
No aplicativo Android:- O aplicativo mantém sua conexão com o gateway ativa por meio de um serviço em primeiro plano (notificação persistente).
- Abra a aba Conectar.
- Use o modo Código de configuração ou Manual.
- Se a descoberta estiver bloqueada, use host/porta manual em Controles avançados. Para hosts de LAN privada,
ws://ainda funciona. Para hosts Tailscale/públicos, ative TLS e use um endpointwss:/// Tailscale Serve.
- Endpoint manual (se ativado), caso contrário
- O último gateway descoberto (melhor esforço).
Beacons de presença ativa
Depois que a sessão de nó autenticada se conecta, e quando o aplicativo vai para segundo plano enquanto o serviço em primeiro plano ainda está conectado, o Android chamanode.event com
event: "node.presence.alive". O gateway registra isso como lastSeenAtMs/lastSeenReason nos
metadados do nó/dispositivo pareado somente depois que a identidade do dispositivo de nó autenticado é conhecida.
O aplicativo conta o beacon como registrado com sucesso somente quando a resposta do gateway inclui
handled: true. Gateways mais antigos podem confirmar node.event com { "ok": true }; essa resposta é
compatível, mas não conta como uma atualização durável de último visto.
4) Aprove o pareamento (CLI)
Na máquina do gateway:role: node
sem escopos solicitados. Pareamento de operador/navegador e qualquer alteração de função, escopo, metadados ou
chave pública ainda exigem aprovação manual.
5) Verifique se o nó está conectado
-
Via status de nós:
-
Via Gateway:
6) Chat + histórico
A aba Chat do Android oferece seleção de sessão (padrãomain, além de outras sessões existentes):
- Histórico:
chat.history(normalizado para exibição; tags de diretiva inline são removidas do texto visível, payloads XML de chamadas de ferramenta em texto simples (incluindo<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>e blocos truncados de chamadas de ferramenta) e tokens de controle de modelo ASCII/largura total vazados são removidos, linhas puras de assistente com tokens silenciosos, como exatamenteNO_REPLY/no_reply, são omitidas, e linhas grandes demais podem ser substituídas por placeholders) - Enviar:
chat.send - Atualizações push (melhor esforço):
chat.subscribe→event:"chat"
7) Canvas + câmera
Host de Canvas do Gateway (recomendado para conteúdo web)
Se você quiser que o nó mostre HTML/CSS/JS real que o agente possa editar no disco, aponte o nó para o host de canvas do Gateway.Os nós carregam o canvas a partir do servidor HTTP do Gateway (mesma porta que
gateway.port, padrão 18789).-
Crie
~/.openclaw/workspace/canvas/index.htmlno host do gateway. - Navegue o nó até ele (LAN):
.local, por exemplo, http://<gateway-magicdns>:18789/__openclaw__/canvas/.
Esse servidor injeta um cliente de recarregamento ao vivo no HTML e recarrega quando arquivos mudam.
O host A2UI fica em http://<gateway-host>:18789/__openclaw__/a2ui/.
Comandos de canvas (somente em primeiro plano):
canvas.eval,canvas.snapshot,canvas.navigate(use{"url":""}ou{"url":"/"}para voltar ao scaffold padrão).canvas.snapshotretorna{ format, base64 }(padrãoformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLalias legado)
camera.snap(jpg)camera.clip(mp4)
8) Voz + superfície expandida de comandos Android
- Aba Voz: o Android tem dois modos explícitos de captura. Mic é uma sessão manual da aba Voz que envia cada pausa como uma rodada de chat e para quando o aplicativo sai do primeiro plano ou o usuário sai da aba Voz. Talk é o Modo Talk contínuo e continua ouvindo até ser desativado ou o nó se desconectar.
- O Modo Talk promove o serviço em primeiro plano existente de
dataSyncparadataSync|microphoneantes do início da captura e depois o rebaixa quando o Modo Talk para. Android 14+ exige a declaraçãoFOREGROUND_SERVICE_MICROPHONE, a concessão em runtimeRECORD_AUDIOe o tipo de serviço de microfone em runtime. - Respostas faladas usam
talk.speakpor meio do provedor Talk configurado no gateway. TTS local do sistema é usado somente quandotalk.speaknão está disponível. - A ativação por voz permanece desativada na UX/runtime do Android.
- Famílias adicionais de comandos Android (a disponibilidade depende do dispositivo + permissões):
device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actions(consulte Encaminhamento de notificações abaixo)photos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
Pontos de entrada do assistente
O Android é compatível com iniciar o OpenClaw a partir do gatilho de assistente do sistema (Google Assistant). Quando configurado, manter o botão de início pressionado ou dizer “Hey Google, ask OpenClaw…” abre o aplicativo e entrega o prompt ao compositor de chat. Isso usa metadados de App Actions do Android declarados no manifesto do aplicativo. Nenhuma configuração extra é necessária no lado do gateway — a intenção do assistente é tratada inteiramente pelo aplicativo Android e encaminhada como uma mensagem de chat normal.A disponibilidade de App Actions depende do dispositivo, da versão do Google Play Services
e de o usuário ter definido o OpenClaw como o aplicativo assistente padrão.
Encaminhamento de notificações
O Android pode encaminhar notificações do dispositivo para o gateway como eventos. Vários controles permitem delimitar quais notificações são encaminhadas e quando.| Chave | Tipo | Descrição |
|---|---|---|
notifications.allowPackages | string[] | Encaminha somente notificações desses nomes de pacote. Se definido, todos os outros pacotes são ignorados. |
notifications.denyPackages | string[] | Nunca encaminha notificações desses nomes de pacote. Aplicado depois de allowPackages. |
notifications.quietHours.start | string (HH:mm) | Início da janela de horas silenciosas (hora local do dispositivo). Notificações são suprimidas durante essa janela. |
notifications.quietHours.end | string (HH:mm) | Fim da janela de horas silenciosas. |
notifications.rateLimit | number | Máximo de notificações encaminhadas por pacote por minuto. Notificações excedentes são descartadas. |
O encaminhamento de notificações exige a permissão Android Notification Listener. O aplicativo solicita isso durante a configuração.