Claude CLI Multi-Session-Webterminal, das nicht stirbt, wenn man den Laptop zuklappt
(github.com/kimtaeyeong1229)Ich habe ein Webterminal gebaut, mit dem sich mehrere Claude-CLI-Sitzungen gleichzeitig in Browser-Tabs betreiben lassen.
Die Sitzungen laufen serverseitig als PTY, und der Browser zeigt nur deren Bildschirmausgabe an. Deshalb läuft die Arbeit weiter, auch wenn man den Browser schließt oder den Laptop zuklappt. Selbst nach dem Aus- und Wiedereinschalten des PCs werden die Sitzungen mit automatischem --resume wiederhergestellt.
Hauptmerkmale
- Multi-Session — Mehrere Claude-CLI-Instanzen über Tab-/Sidebar-UI auf einem Bildschirm umschalten und verwalten
- Sitzungspersistenz — Automatisches Speichern in
~/.claude-web-terminal/sessions.json, automatische Wiederherstellung bei Server-/PC-Neustart - Docker-Container — Nicht nur auf dem Host, sondern auch in einem laufenden Container einen Ordner auswählen und Claude dort ausführen (
docker exec -it -w <path> <container> claude) - Erkennung externer Claude-Prozesse — Verbindung zu bereits laufenden
claude-Prozessen in anderen Terminals (Linux/proc) - Scrollback-Wiederherstellung bei Reconnect — 200-KB-Puffer
- Single-File-Frontend — Vanilla HTML/CSS/JS, XTerm.js + ca. 2.400 Zeilen
- Single-File-Backend — Python aiohttp + PTY + WebSocket, ca. 500 Zeilen
Stack
- Backend: Python 3.10+ / aiohttp / PTY / WebSocket
- Frontend: Vanilla HTML·CSS·JS, XTerm.js 5.5, FitAddon, WebLinksAddon
- Authentifizierung: keine — Binding an 127.0.0.1 empfohlen (bei Freigabe ins LAN Reverse Proxy + Basic Auth)
Autostart
- macOS: LaunchAgent-plist (Vorlage im README enthalten)
- Linux: systemd User Service +
loginctl enable-linger
Installation in einer Zeile
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
Im Browser http://127.0.0.1:8080.
Motivation
- Ich nutze Claude CLI gern und häufig, aber es ist umständlich, N Terminalfenster offen zu haben
- Ich wollte nicht, dass Sitzungen sterben, wenn man den Laptop zuklappt oder die SSH-Verbindung abreißt → daher serverseitig entkoppelt mit PTY
- Es war lästig, jedes Mal per
docker exec -itin eine Docker-Umgebung zu gehen, umclaudezu starten → deshalb in die UI integriert
Einschränkungen
- Keine Authentifizierung — setzt ein lokales bzw. vertrauenswürdiges Netzwerk voraus
- Erkennung externer Prozesse nur unter Linux (macOS hat kein
/proc) - Keine Trennung für mehrere Nutzer/Konten — Tool für Einzelnutzer
Feedback/Issues sind willkommen.
1 Kommentare
Das war genau die Funktion, die ich gebraucht habe – gefällt mir richtig gut! haha