Terminal web multi-sessão para Claude CLI que não morre nem quando você fecha a tampa do notebook
(github.com/kimtaeyeong1229)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
claudejá 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 -itpara iniciar oclaudetoda 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
Era exatamente a funcionalidade de que eu precisava, então acho muito bom! hahaha