remorch-agent
v0.2.19
Published
Remote orchestration agent for AI CLI tools (Claude, Gemini, etc.)
Maintainers
Readme
RemOrch Agent
AI CLIツール(Claude Code、Gemini CLI等)のセッション管理エージェント。
npm: npx remorch-agent
バージョン: 0.2.10
特徴
- ゼロ設定:
npx remorch-agent wrap claudeだけで動作 - ネイティブ体験維持: ターミナルの機能を一切破壊しない
- リモート監視: iOSアプリからセッションを監視・操作
- 軽量: 必要最小限の機能のみ実装
クイックスタート
# Claude Codeをラップして起動(サーバーは自動起動)
npx remorch-agent wrap claude
# 別のターミナルから状態確認
npx remorch-agent list
npx remorch-agent read -id claude -renderインストール
npx(推奨)
npx remorch-agent wrap claudeグローバルインストール
npm install -g remorch-agent
remorch-agent wrap claudeソースからビルド
git clone https://github.com/koshikawa/remorch-agent
cd remorch-agent
go build -o remorch-agent ./cmd/remorch-agent使い方
wrap コマンド(推奨)
# 基本的な使い方
remorch-agent wrap claude
# カスタムセッションID
remorch-agent wrap -id my-claude claude
# 引数付き
remorch-agent wrap -id project1 claude --dangerously-skip-permissionswrapコマンドは:
- サーバーが未起動なら自動起動
- セッションを自動登録
- 終了時にカーソル状態を復元
- iOSアプリからのリモート入力に対応
セッション操作
# セッション一覧
remorch-agent list
# 出力取得(VTerm経由でレンダリング)
remorch-agent read -id claude -render
# 出力取得(幅指定)
remorch-agent read -id claude -render -cols 80
# 入力送信
remorch-agent write -id claude -input "yes"
# セッション終了
remorch-agent kill -id claude
# サーバー疎通確認
remorch-agent pingアーキテクチャ
┌─────────────────────────────────────────────────────────┐
│ User's Terminal │
│ ┌───────────────────────────────────────────────────┐ │
│ │ remorch-agent wrap claude │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ PTY (Client-side) │ │ │
│ │ │ - ネイティブ入出力 │ │ │
│ │ │ - サーバーへ出力を転送 (feed) │ │ │
│ │ │ - リモート入力をポーリング (getinput) │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────┘ │
│ │ │
│ Unix Socket │
│ (~/.remorch/agent.sock) │
│ │ │
│ ┌───────────────────────▼───────────────────────────┐ │
│ │ remorch-agent serve │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ VTerm (Virtual Terminal) │ │ │
│ │ │ - 500行スクロールバック │ │ │
│ │ │ - ANSI属性保持(色、dim、bold等) │ │ │
│ │ │ - リモート用レンダリング │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
SSH Tunnel
│
┌──────────────────────────▼──────────────────────────────┐
│ RemOrch iOS App │
│ - セッション一覧表示 │
│ - リアルタイム出力監視 │
│ - リモート入力送信 │
│ - ANSI色・dim属性表示 │
└─────────────────────────────────────────────────────────┘プロトコル
JSON-RPC風のシンプルなプロトコル(改行区切り)。
メソッド一覧
| メソッド | 説明 |
|---------|------|
| ping | 疎通確認 |
| list | セッション一覧 |
| register | リモートセッション登録 |
| feed | 出力データ送信(wrap→server) |
| getinput | リモート入力取得(server→wrap) |
| unregister | セッション登録解除 |
| read | 出力取得 |
| write | 入力送信 |
| kill | セッション終了 |
| create | サーバーサイドPTYセッション作成 |
| resize | PTYサイズ変更 |
リクエスト/レスポンス例
// セッション一覧
{"method": "list"}
{"result": {"sessions": [{"id": "claude", "command": "claude", "pid": 0, "running": true}]}}
// 出力取得(VTermレンダリング)
{"method": "read", "params": {"id": "claude", "render": true, "cols": 80}}
{"result": {"output": "...", "bytes": 1234}}
// 入力送信
{"method": "write", "params": {"id": "claude", "input": "yes\n"}}
{"result": {"ok": true}}VTerm機能
仮想ターミナル(VTerm)により、TUIアプリの出力を正しくレンダリング:
- スクロールバック: 500行の履歴保持
- ANSI色: 256色パレット対応
- テキスト属性: bold, dim, italic, underline, inverse, strikethrough
- カーソル制御: 位置移動、画面クリア
- 動的幅:
colsパラメータでレンダリング幅指定
tmuxを使わない理由
tmuxには以下の問題があり、独自実装を選択:
| 項目 | tmux | RemOrch Agent | |------|------|---------------| | マウス選択 | 乗っ取る | ネイティブ維持 | | スクロール | 独自バッファ | ネイティブ維持 | | カーソル形状 | 変化する場合あり | ネイティブ維持 | | True Color | 設定必要 | ネイティブ維持 | | Escapeキー遅延 | 500ms | なし | | クリップボード | 独自バッファ | ネイティブ維持 |
対応環境
- macOS (arm64, x86_64)
- Linux (arm64, x86_64)
- Windows WSL2
今後の予定(iOS側)
- [ ] マルチ画面表示での表示追従
- [ ] ダブルタップでズームリセット(100%)
- [ ] スワイプでセッション切り替え
- [ ] プッシュ通知(出力検知時)
- [ ] サムネイル一覧表示
ライセンス
MIT License
開発
# ビルド
go build -o bin/remorch-agent ./cmd/remorch-agent
# テスト
./bin/remorch-agent serve &
./bin/remorch-agent wrap bash
# npm公開
npm version patch
npm publishRemOrch - AI開発を、指揮する。
