1 Punkte von kimtaeyeong1229 3 시간 전 | 1 Kommentare | Auf WhatsApp teilen

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 -it in eine Docker-Umgebung zu gehen, um claude zu 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

 
thnet88 3 시간 전

Das war genau die Funktion, die ich gebraucht habe – gefällt mir richtig gut! haha