A sessão no bolso,
a execução no lugar certo.
O mobile do MVCode é um thin client deliberado: o celular controla sessões que rodam em uma máquina de verdade — aprovações, acompanhamento, review e notificações. Execução local em telefone não é o objetivo.
01Arquitetura: thin remote client
Rodar o stack completo do agente em iOS ou Android exigiria PTY local, ripgrep, LSPs e semântica de workspace que não fazem sentido num telefone. A decisão de arquitetura é explícita:
- Execução permanece remota — numa instância
mvcodesua (desktop, servidor, VPS) ou ambiente hospedado. - O mobile consome as superfícies existentes — HTTP, eventos SSE, PTY e o SDK gerado. Capacidade nova entra no contrato compartilhado, nunca num backend só de mobile.
- Conectividade intermitente é assumida — streams retomáveis e recuperação de sessão fazem parte do contrato.
02O que você faz do celular Em rollout
03PWA — a porta de entrada
A interface web embarcada é instalável como PWA: abra o endereço do seu servidor no navegador do celular e adicione à tela inicial. É o caminho de maior alcance hoje — e permanece como fallback universal.
MVCODE_SERVER_PASSWORD=segredo mvcode serve --hostname 0.0.0.0 --port 4096 # no celular: https://seu-host:4096 → Adicionar à tela inicial
Uma VPN mesh como Tailscale é o caminho recomendado para alcançar seu runtime de fora de casa — sem abrir portas públicas. Veja também rede e ambientes restritos.
04Push notifications Em rollout
A entrega de push está implementada e guardada pela flag MVCODE_ENABLE_MOBILE_PUSH (desligada por padrão). Rotas suportadas: APNs (iOS), FCM (Android) e webhook local (desktop e web — o mesmo contrato de eventos alimenta as notificações nativas do app).
Pareamento do dispositivo
- Inicie o pareamentohttp
POST /api/push/pair/start - Complete com o código de uso únicohttp
POST /api/push/pair/complete { "platform": "ios", "token": "…", "name": "iPhone da Ana" }
- Confira o registrohttp
GET /api/push/device
Eventos que notificam
| Evento | Quando dispara |
|---|---|
| session.idle | O agente terminou e espera você. |
| session.error | A sessão falhou e precisa de atenção. |
| permission.v2.asked | Uma permissão aguarda decisão. |
| question.v2.asked | O agente fez uma pergunta. |
| task.background.result.delivered | Um subagente em background entregou resultado. |
Credenciais de push (APNs/FCM) são provisionadas por variáveis MVCODE_PUSH_* no servidor — nunca em git. Transportes não configurados são pulados e contabilizados como não aceitos.
05Apps nativos Planejado
Os shells nativos iOS/Android (distribuição via lojas, integração profunda de notificações) estão planejados sobre a mesma camada thin-client já pronta. O que existe hoje — PWA + push + pareamento — é a fundação deles, não um atalho provisório.
