1 pontos por kimtaeyeong1229 3 시간 전 | 1 comentários | Compartilhar no WhatsApp

Criei um terminal web em que várias sessões do Claude CLI rodam ao mesmo tempo em abas do navegador.

As sessões ficam ativas no servidor via PTY, e o navegador apenas exibe a tela, então o trabalho continua mesmo se você fechar o navegador ou a tampa do notebook. Mesmo que o PC seja desligado e ligado novamente, as sessões são restauradas automaticamente com --resume.

Principais recursos

  • Multi-sessão — UI com abas/barra lateral para alternar e gerenciar N instâncias do Claude CLI em uma única tela
  • Persistência de sessão — salva automaticamente em ~/.claude-web-terminal/sessions.json, com restauração automática ao reiniciar o servidor/PC
  • Contêineres Docker — além do host, você pode escolher uma pasta dentro de um contêiner em execução e rodar o Claude ali (docker exec -it -w <path> <container> claude)
  • Detecção de processos externos do Claude — conecta a instâncias de claude já em execução em outros terminais (Linux /proc)
  • Restauração de scrollback ao reconectar — buffer de 200 KB
  • Frontend em arquivo único — Vanilla HTML/CSS/JS, XTerm.js + cerca de 2.400 linhas
  • Backend em arquivo único — Python aiohttp + PTY + WebSocket, cerca de 500 linhas

Stack

  • Backend: Python 3.10+ / aiohttp / PTY / WebSocket
  • Frontend: Vanilla HTML·CSS·JS, XTerm.js 5.5, FitAddon, WebLinksAddon
  • Autenticação: nenhuma — recomendado bind em 127.0.0.1 (se exposto na LAN, use reverse proxy + basic auth)

Inicialização automática

  • macOS: LaunchAgent plist (template incluído no README)
  • Linux: service de usuário systemd + loginctl enable-linger

Instalação em uma linha

git clone https://github.com/kimtaeyeong1229/claude-web-terminal  
cd claude-web-terminal && pip install -r requirements.txt  
python3 server.py --host 127.0.0.1 --port 8080  

No navegador, acesse http://127.0.0.1:8080.

Motivação para criar

  • Gosto do Claude CLI e uso com frequência, mas é incômodo abrir N janelas de terminal
  • Não gosto que a sessão morra ao fechar a tampa do notebook ou que caia quando a conexão SSH é interrompida → separei isso com PTY no lado do servidor
  • Entrar no ambiente Docker e fazer docker exec -it para iniciar o claude toda vez era cansativo → integrei isso à UI

Limitações

  • Sem autenticação — pressupõe uso local ou em rede confiável
  • A detecção de processos externos funciona apenas no Linux (o macOS não tem /proc)
  • Sem multiusuário/separação de contas — ferramenta para usuário único

Feedbacks/issues são bem-vindos.

1 comentários

 
thnet88 3 시간 전

Era exatamente a funcionalidade de que eu precisava, então acho muito bom! hahaha