1 poin oleh kimtaeyeong1229 4 jam lalu | 1 komentar | Bagikan ke WhatsApp

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 claude yang 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 claude dengan docker exec -it terasa 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

 
thnet88 3 jam lalu

Fitur ini memang yang saya butuhkan, jadi sepertinya bagus sekali! haha