Terminal web multisesi Claude CLI yang tetap berjalan meski laptop ditutup
(github.com/kimtaeyeong1229)Saya membuat terminal web yang menjalankan beberapa sesi Claude CLI sekaligus lewat tab browser.
Sesi berjalan sebagai PTY di server dan browser hanya menampilkan layarnya, jadi pekerjaan tetap berjalan meski browser ditutup atau laptop ditutup. Bahkan setelah PC dimatikan lalu dinyalakan lagi, sesi dipulihkan secara otomatis dengan --resume.
Fitur utama
- Multisession — beralih dan mengelola N Claude CLI di satu layar dengan UI tab/sidebar
- Persistensi sesi — otomatis disimpan di
~/.claude-web-terminal/sessions.json, lalu dipulihkan otomatis saat server/PC di-restart - Kontainer Docker — memilih folder di dalam kontainer yang sedang berjalan, bukan hanya host, lalu menjalankan Claude di dalamnya (
docker exec -it -w <path> <container> claude) - Deteksi proses Claude eksternal — terhubung ke proses
claudeyang sudah berjalan di terminal lain (Linux/proc) - Pemulihan scrollback saat reconnect — buffer 200KB
- Frontend satu berkas — Vanilla HTML/CSS/JS, XTerm.js + sekitar 2.400 baris
- Backend satu berkas — Python aiohttp + PTY + WebSocket, sekitar 500 baris
Stack
- Backend: Python 3.10+ / aiohttp / PTY / WebSocket
- Frontend: Vanilla HTML·CSS·JS, XTerm.js 5.5, FitAddon, WebLinksAddon
- Autentikasi: tidak ada — disarankan bind ke 127.0.0.1 (jika diekspos ke LAN, gunakan reverse proxy + basic auth)
Jalankan otomatis
- macOS: LaunchAgent plist (template disertakan di README)
- Linux: systemd user service +
loginctl enable-linger
Instalasi satu baris
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
Di browser, buka http://127.0.0.1:8080.
Alasan membuatnya
- Saya suka Claude CLI dan sering memakainya, tetapi membuka N jendela terminal terasa merepotkan
- Tidak suka sesi mati saat laptop ditutup atau koneksi ssh terputus → dipisahkan ke PTY sisi server
- Setiap kali harus masuk ke lingkungan Docker lalu menjalankan
claudedengandocker exec -itterasa merepotkan → diintegrasikan ke UI
Keterbatasan
- Tidak ada autentikasi — diasumsikan untuk lokal/jaringan tepercaya
- Deteksi proses eksternal hanya di Linux (macOS tidak punya
/proc) - Tidak ada pemisahan multi-user/akun — alat untuk satu pengguna
Masukan/issue sangat diterima.
1 komentar
Fitur ini memang yang saya butuhkan, jadi sepertinya bagus sekali! haha