1 ポイント 投稿者 kimtaeyeong1229 4 시간 전 | 1件のコメント | WhatsAppで共有

ブラウザタブで 複数の Claude CLI セッションを同時に回せる Webターミナルを作りました。

セッションはサーバー上で PTY として動いていて、ブラウザはその画面を表示するだけなので、ブラウザを閉じてもノートPCを閉じても作業は続きます。PC を再起動しても自動 --resume によってセッションが復元されます。

主な特徴

  • マルチセッション — タブ/サイドバー UI で N 個の Claude CLI を1画面で切り替え・管理
  • セッション永続化~/.claude-web-terminal/sessions.json に自動保存され、サーバー/PC 再起動時に自動復元
  • Docker コンテナ — ホストだけでなく実行中のコンテナ内のフォルダを選んで、その中で Claude を実行 (docker exec -it -w <path> <container> claude)
  • 外部 Claude プロセス検出 — すでに起動している別ターミナルの claude に接続 (Linux /proc)
  • 再接続時のスクロールバック復元 — 200KB バッファ
  • 単一ファイルのフロント — Vanilla HTML/CSS/JS, XTerm.js + 約 2,400 行
  • 単一ファイルのバックエンド — Python aiohttp + PTY + WebSocket, 約 500 行

スタック

  • バックエンド: Python 3.10+ / aiohttp / PTY / WebSocket
  • フロント: Vanilla HTML・CSS・JS, XTerm.js 5.5, FitAddon, WebLinksAddon
  • 認証: なし — 127.0.0.1 へのバインド推奨 (LAN に公開する場合は reverse proxy + basic auth)

自動起動

  • macOS: LaunchAgent plist (README にテンプレート同梱)
  • Linux: systemd user service + loginctl enable-linger

ワンライナーインストール

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  

ブラウザで http://127.0.0.1:8080.

作った動機

  • Claude CLI が気に入っていてよく使うが、ターミナルウィンドウを N 個開くのが面倒
  • ノートPCを閉じると落ちたり、ssh が切れるとセッションが切れたりするのが嫌だった → サーバーサイド PTY に分離
  • Docker 環境に入って claude を起動するために毎回 docker exec -it する手順が面倒 → UI に統合

制限

  • 認証なし — ローカル/信頼できるネットワーク前提
  • 外部プロセス検出は Linux のみ (macOS には /proc がない)
  • マルチユーザー/アカウント分離なし — 単一ユーザー向けツール

フィードバック/イシュー歓迎です。

1件のコメント

 
thnet88 3 시간 전

まさに必要だった機能なので、良いと思います! haha