Artigos

Streaming de terminais PTY remotos no navegador em tempo real com WebSocket

Rodar o Claude Code na nuvem exige um contêiner. Observá-lo do navegador exige conexão de saída da sandbox, contrapressão medida no socket do navegador e fechamento explícito.

Mover um agente para a nuvem é a parte fácil: um contêiner, uma imagem e uma CLI. A parte que decide se o produto é utilizável é a conexão com o navegador que o assiste.

A browser, a control plane and a sandbox. Output flows right to left; the congestion that starts at the browser has to be felt at the sandbox.browsercontrolsandboxoutputoutputslowholdreceive window closesstop writing
O fluxo vai da direita para a esquerda. O congestionamento começa no navegador e quem pode agir está na outra ponta.

O notebook deixa de ser o ambiente de execução

A razão para mover um agente para fora do computador não é desempenho, mas desvincular a execução do dispositivo físico.

Essa mudança coloca uma conexão de rede no centro da arquitetura, sujeita a lentidões e oscilações.

A sandbox inicia a conexão de saída

A máquina que executa os agentes não possui portas públicas. Ela abre uma conexão com o plano de controle e multiplexa todos os navegadores por ela.

Isso foca os desafios de engenharia no comportamento da conexão ativa quando há lentidão de rede.

Primeira falha silenciosa: medir o socket errado

Um agente compilando código verborrágico gera dados mais rápido do que o navegador pode renderizar.

Medir o socket local da sandbox é inútil, pois sua conexão com o plano de controle é rápida. O congestionamento real está no socket do navegador.

A detecção deve ocorrer no leitor lento e a contrapressão deve retroceder via TCP até a sandbox.

Pausar leituras no link compartilhado afeta outros usuários, logo as retenções devem durar apenas milissegundos.

Segunda falha silenciosa: ping que sempre responde

Pings de WebSocket recebem resposta automática da pilha de rede do sistema operacional, mascarando abas fechadas ou travadas.

O plano de controle deve notificar explicitamente a saída do usuário para que o terminal não continue transmitindo no vazio.

Por que isso não é secundário

Colocar uma CLI em um contêiner é trivial. A confiabilidade reside na gestão transparente do estado da conexão.

O quadro de reservas é tratado em um artigo próprio, e o isolamento de segredos em um terceiro.

Respostas diretas

O Claude Code continua rodando após eu fechar o notebook?

Sim, pois o processo do agente e o repositório ficam na máquina na nuvem. O navegador apenas envia teclas e desenha a saída.

Um agente na nuvem precisa de porta aberta na minha rede?

Não. A sandbox inicia uma conexão de saída com o plano de controle e a mantém aberta, sem portas públicas expostas.

O que acontece com a execução se o navegador desconectar?

A execução continua normalmente. O plano de controle notifica a sandbox explicitamente para evitar envio de dados sem destinatário.