@leg3ndy/otto-bridge
v0.8.5
Published
Local companion for Otto Bridge device pairing and WebSocket runtime.
Maintainers
Readme
Otto Bridge
Companion local do Otto para:
- reivindicar um codigo de pareamento gerado pela web
- armazenar o
device_tokendo dispositivo - manter um WebSocket persistente com o backend
- executar jobs locais com executor proprio do Otto no macOS,
mockouclawd-cursor
Guia de uso
Para um passo a passo de instalacao, pareamento, uso, desconexao e desinstalacao, veja USER_GUIDE.md.
Para o estado atual da arquitetura, capacidades entregues, limitacoes e roadmap do Otto Bridge, veja leg3ndy-ai-backend/docs/OTTO_BRIDGE_ARCHITECTURE.md.
Distribuicao
Fluxo recomendado agora:
- publicar como pacote npm privado/publico para time interno e beta testers
- validar pareamento, atualizacao e telemetria em ambiente real
- depois empacotar em
.dmg/.pkgno macOS e.msino Windows
O pacote ja esta estruturado para install via CLI:
npm install -g @leg3ndy/otto-bridge
otto-bridge status
otto-bridge versionEnquanto o pacote nao estiver publicado, voce pode gerar um tarball local:
npm pack
npm install -g ./leg3ndy-otto-bridge-0.7.4.tgzNo 0.7.4, playwright segue como dependencia obrigatoria no otto-bridge. O primeiro npm install -g @leg3ndy/otto-bridge pode demorar mais porque instala o browser persistente usado pelo WhatsApp Web e pelos fluxos web em background do bridge.
No macOS, o 0.7.4 usa o provider macos-helper, um helper WKWebView sem Dock para o WhatsApp Web. O helper sobe com user-agent de Chrome moderno para evitar o bloqueio do WhatsApp ao detectar Safari/WebKit. O runtime antigo com Chromium/Playwright fica disponivel apenas como override explicito via OTTO_BRIDGE_WHATSAPP_RUNTIME_PROVIDER=embedded-playwright.
Publicacao
Checklist de release:
npm whoami
npm install
npm run release:check
npm publish --access publicO publish exige permissao no scope @leg3ndy.
Se o seu npm local estiver com cache travado por permissao, rode com cache temporario:
npm_config_cache=/tmp/otto-npm-cache npm run release:check
npm_config_cache=/tmp/otto-npm-cache npm publish --access publicComandos
Listar ajuda
otto-bridge help
otto-bridge --helpParear o dispositivo
otto-bridge pair --api http://localhost:8000 --code ABC123Opcoes suportadas:
--name: nome amigavel do dispositivo--timeout-seconds: limite de espera pela aprovacao web--poll-interval-ms: intervalo de polling do claim--executor:native-macos,mockouclawd-cursor--clawd-url: base URL da API local doclawd-cursor--clawd-poll-interval-ms: polling do status/logs doclawd-cursor
No macOS, o caminho recomendado agora e o executor nativo do Otto Bridge. Se nenhum --executor for informado, o pair usa native-macos por padrao no Mac.
Rodar o bridge
otto-bridge runSe o executor estiver salvo no config.json, o run usa essa configuracao por padrao.
Para forcar o executor nativo no macOS sem reparar:
otto-bridge run --executor native-macosO adapter clawd-cursor continua disponivel como override opcional:
otto-bridge run --executor clawd-cursor --clawd-url http://127.0.0.1:3847WhatsApp Web em background
Fluxo recomendado no 0.7.4:
otto-bridge extensions --install whatsappweb
otto-bridge extensions --setup whatsappweb
otto-bridge extensions --status whatsappwebO setup agora abre o login do WhatsApp Web no helper/background browser do proprio bridge. Depois do QR code, o Otto usa a sessao local em background, sem depender de aba visivel no Safari.
Contrato do 0.7.4:
otto-bridge extensions --setup whatsappweb: autentica a sessao uma vezotto-bridge run: mantem o browser persistente do WhatsApp vivo em background enquanto o runtime estiver ativo, sem depender de uma aba aberta no Safari- ao parar o
otto-bridge run: o browser em background e desligado, mas a sessao local fica lembrada para o proximo boot
Handoff rapido do 0.7.4
Ja fechado no codigo:
- provider
macos-helperdockless no macOS como runtime padrao do WhatsApp - user-agent do helper ajustado para evitar bloqueio do WhatsApp por detecao de Safari/WebKit
- resultado final dos
device_jobagora e persistido como contexto mais forte para o proximo turno do Otto - prompt bridge-aware no chat normal para ajudar o Otto a responder com base no que realmente aconteceu no device
Ainda precisa reteste em campo:
- fluxo completo do WhatsApp no helper
macos-helper - confirmacao de que o helper realmente passa do gate de compatibilidade do WhatsApp
- perguntas de follow-up como
o que voce mandou?depois de uma acao local de mensagem
Ver estado local
otto-bridge statusVer versao instalada
otto-bridge version
otto-bridge --versionAtualizar o pacote
Atualizacao automatica via npm:
otto-bridge updatePara apenas ver qual comando sera executado:
otto-bridge update --dry-runPara instalar manualmente:
npm install -g @leg3ndy/otto-bridge@latestRemover pareamento local
otto-bridge unpairVariaveis de ambiente
OTTO_API_BASE_URLOTTO_BRIDGE_HOMEOTTO_BRIDGE_NAMEOTTO_BRIDGE_EXECUTOROTTO_CLAWD_BASE_URLOTTO_CLAWD_POLL_INTERVAL_MS
Payload esperado para jobs desktop
Os executores locais do Otto Bridge procuram a tarefa em uma destas chaves, nessa ordem:
taskpromptinstructioninstructionsmessage
O executor nativo do macOS tambem aceita payload estruturado em actions[], por exemplo:
{
"job_type": "desktop_actions",
"payload": {
"actions": [
{ "type": "open_app", "app": "Safari" },
{ "type": "open_url", "url": "https://www.youtube.com", "app": "Safari" }
]
}
}Exemplo:
{
"job_type": "desktop_task",
"payload": {
"task": "Abra o Safari e pesquise Otto AI"
}
}