04. ACP, Web e acesso remoto¶
🎯 Objetivo¶
Integrar o OpenCode a editores via ACP, acessá-lo pelo navegador e expô-lo remotamente com segurança.
🖥️ ACP (Agent Client Protocol)¶
O OpenCode expõe um servidor ACP sobre stdin/stdout para integração com editores:
opencode acp
Ele roda até o cliente fechar a conexão. Editores que suportam o protocolo conectam nesse processo.
🌐 Interface web¶
opencode pair
Mostra URLs de uso único (mais um QR do primeiro link) para assinar um navegador ou app no servidor. Os links expiram em 5 minutos e funcionam uma vez.
opencode pair --url https://dev.example.com
🌍 Acesso remoto¶
opencode pair --remote
Expõe o servidor à internet via endereço remoto (OpenTunnel). Na primeira vez, explica a exposição e pede aceite. Para automação sem prompt:
opencode pair --remote --yes
Você também pode servir a API/web e gerenciar o serviço de fundo:
opencode serve --hostname 0.0.0.0 --port 4096 --cors https://app.example.com
opencode service status | start | stop | restart
🔒 Segurança do acesso remoto¶
--remoteexpõe o servidor à internet — aceite só quando necessário- Restrinja
--corsaos domínios que realmente usam o app - Links de pareamento são de uso único e curtos por design
- Prefira TLS (proxy reverso) e autenticação nos deploys expostos
🔄 Rede e proxy¶
Se sua rede exige proxy, o serviço local precisa excluir loopback:
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
export NO_PROXY=localhost,127.0.0.1,::1
opencode
Persista para o serviço de fundo e valide:
opencode service set env HTTPS_PROXY http://proxy.example.com:8080
opencode service set env NO_PROXY localhost,127.0.0.1,::1
opencode service start
opencode api get /api/info
Ca corporativo privado: NODE_EXTRA_CA_CERTS=/etc/company/ca.pem.
❓ Desafio prático¶
- Abra o ACP e conecte um editor compatível
- Gere um link de pareamento com
opencode paire acesse pelo navegador - Configure proxy com
NO_PROXYde loopback e valide comopencode api get /api/info - Explore
opencode pair --remoteem um ambiente controlado
📚 Fonte oficial¶
Próximo passo: Módulo 06 — Operação · Voltar ao módulo