コンテンツにスキップ

チャットと Web UI

Reyn には 2 つのインターフェースがあります: TUI(ターミナル)と Web UI(ブラウザ)です。両者は同じエージェントに接続し、同じセッションを共有します。自由に行き来できます。


TUI を起動する

reyn chat

TUI は > プロンプトを提供します。リクエストを入力すると、応答がインラインで表示されます。最も手早く始められる方法です。


Web UI を起動する

2 つ目のターミナルで:

reyn web

そして任意のブラウザで http://localhost:8080 を開きます。

Web UI は会話履歴、実行中のワークフローの状態、よりリッチな出力レンダリング(テーブル、コードブロック、markdown)を表示します。読みやすいビューが欲しいときや画面を共有するときに使ってください。

ホストとポートのカスタマイズ

reyn web --port 9000            # ポートを変更
reyn web --host 0.0.0.0         # 他のマシン (LAN) からの接続を受け付ける

セキュリティ注記: デフォルトの 127.0.0.1 バインドは localhost からの接続のみを受け付けます。非 loopback バインド(--host 0.0.0.0 など)はベアラートークン(reyn.yamlgateway.auth.token)が設定されていないと起動を拒否します — ゲートウェイは未認証のままネットワークに公開されることはありません。


リモートシンクライアント (reyn chat --connect)

reyn chat --connect は、誰か(または以前の自分)が起動している reyn web サーバーに薄いターミナルクライアントをアタッチします — セッションはサーバー側が保持し、ターミナルは会話をストリームして入力を中継するだけです。

サーバーを起動する

reyn web --host 0.0.0.0 --port 8080

デフォルトの loopback バインド(127.0.0.1)では、reyn が起動トークンを生成し、起動 URL に埋め込んで表示します(http://127.0.0.1:8080/?token=...)。非 loopback バインドでは、reyn.yamlgateway.auth.token を設定していないと起動を拒否します — 他所から接続する前にそのトークン(またはURL)をコピーしてください。

接続する

pip install reyn[web]   # 一度だけ、httpx クライアント依存のため
reyn chat --connect http://<host>:8080 --token <secret> [agent_name]
  • agent_name はオプションで、サーバー上のどの agent にアタッチするかを選びます(ローカルの reyn chat <agent_name> と同様)。
  • 環境変数 REYN_WEB_AUTH_TOKEN が設定済みなら --token は省略できます。
  • 接続はプレーンな HTTP + Server-Sent Events(AG-UI)です — 開いたり転送したりする必要があるのはこのポートだけです。

何ができるか

返信、ツールの活動状況、ステータスがサーバー側で発生した通りにストリームされます。human-in-the-loop プロンプト(許可確認や確認質問)はローカルと全く同じようにリモートのターミナルから応答できます — 応答は id 指定でサーバーに届けられるため、同じ agent に他のクライアントがアタッチしていても正しく届きます。

複数クライアントは互いのターンを見られます。 ローカルの reyn chat と 1 つ以上の --connect ターミナル、あるいは複数の --connect ターミナルが同じ agent にアタッチしている場合、全員が会話全体を見られます — agent の返信だけではありません。誰かがメッセージを入力するか human-in-the-loop プロンプトに応答すると、他のすべてのアタッチ済みクライアントにもその行が表示され、複数のアイデンティティがアタッチしているときは誰の発言かのタグが付きます(例: user [alice]:)。アタッチしているクライアントが 1 つだけの場合はタグなしのプレーンな行のままです。

ローカルの reyn chat との違い

  • TTY であってもプレーンコンソール描画。 --connect は常に reyn chat --cui と同じプレーンな出力スタイルです — インラインステータスバー(ローカルセッションの model / agent / cost / context チップ)もフローティングのスラッシュ補完メニューもありません。スラッシュコマンドの入力自体は動作します、入力中に候補が出ないだけです。
  • /rewind はピッカーでなくテキストリスト。 ローカルでは /rewind がインタラクティブな ↑↓ リージョンピッカーを開きますが、--connect 経由では同じチェックポイントをプレーンな番号付きリストとして表示します。
  • ローカルファイルへのアクセス無し。 --connect は純粋なトランスポートクライアントです — ローカルのセッション・ワークスペース・ツールには一切触れません。すべてサーバー側のマシンで実行されます。

セキュリティ注記

  • 同一マシンでのシンクライアント用途には、トークンの代わりに UNIX ドメインソケットを推奨します: reyn web --uds /path/to/socket — 接続は OS のピア資格情報で認証され、トークンは不要です。
  • loopback 以外のネットワークバインドは常に gateway.auth.token を必要とし、TLS 上で動作します(デフォルトは自己署名。reyn が初回接続時にピン留め用の証明書フィンガープリントを表示します)。
  • 表示されたトークン/URL はパスワードと同様に扱ってください — それを持つ人は誰でも operator として振る舞えます。

TUI と Web UI を並べて使う

両インターフェースは同じエージェントと通信します。TUI でタスクを開始し、それをブラウザで眺めることもできます。ワークフローの実行に合わせて両方のビューが更新されます。

Terminal A          Terminal B          Browser
──────────────      ──────────────      ──────────────────
$ reyn chat         $ reyn web          http://localhost:8080
> write a report    (serving...)        [live progress view]

停止する

  • TUI: Ctrl+D または /quit
  • Web サーバー: reyn web を実行しているターミナルで Ctrl+C

2 つのプロセスは独立しています。一方を停止しても、もう一方には影響しません。


TUI のキーボードショートカット

デフォルトのインタラクティブ reyn chat(任意の TTY)はインライン CUI です — 会話はターミナル自身のスクロールバックに表示され、その下にステータスバーと入力ボックスがあります。切り替えるための別パネルはありません。ステータスバーのチップ(modelagenttaskcostctx、そして tool/mcp/skill/pipe/hook/cron 用の more チップ)は常に表示され、その場でドリルダウンします。

入力

キー アクション
Enter 現在のプロンプトを送信 — 常に。補完メニューが開いていても送信で、候補を勝手に確定することはありません
Shift+Enter 改行を挿入
Ctrl+J 改行を挿入 — どのターミナルでも確実に動作するフォールバック。貼り付けや複数行プロンプトの入力に
先頭行では保留中の質問(なければ送信済みキュー)にフォーカス。それ以外はカーソルを上に移動
最終行では入力欄の下のメニュー行にフォーカス。それ以外はカーソルを下に移動
F2 音声入力の開始/停止 — 変換したテキストはカーソル位置に挿入され、自動送信はされません。pip install "reyn[voice]" が必要。詳細はコンセプト: 音声入力を参照

/ コマンドと : スキルの補完

入力の先頭で / を打つとコマンドメニューが開き、同じく入力の先頭で : を打つとスキルメニューが開きます — どちらも 1 文字も続けずに全件が並びます。行の途中: は単語の先頭で 2 文字以上続けたときだけ開くので、ふつうの 12:30http://x でメニューが出ることはありません。コマンド名がスペースで確定すると、メニューはそのコマンドの引数の補完に切り替わります — /model なら設定済みの model クラス、/image なら該当するファイルが並びます。

メニューが開いている間、矢印キーはメニューが受け取ります:

キー アクション
/ ハイライトされた候補を移動
Tab ハイライトされた候補を確定
Esc メニューを閉じる。同じ単語を打ち続けている間は閉じたままで、新しい / / : の単語を始めると再び開きます
Enter 打った内容をそのまま送信(候補は確定しません)

メニューが閉じているときの / / Tab / Esc は上の表のとおりです。--connect 経由では / コマンド名の補完は動作しますが(コマンドレジストリはどのクライアントも持っています)、引数と : スキルの補完は候補を出しません — どちらもワイヤーに乗らないセッションローカルな状態を読むためです。

ステータスバー

空の入力から を押すとステータスバーにフォーカスします。その状態で:

キー アクション
/ チップ間を移動(more が開いているときはサブバーのチップ間)
Enter フォーカス中のチップの詳細ビューを開く(model のようなアクション可能なチップでは選択行を適用)
/ 開いた詳細ビュー内の行を移動。最上部で を押すと詳細ビューを閉じて入力へフォーカスを戻す
Esc 開いた詳細ビュー / サブバーを閉じる

ターン制御

キー アクション
Ctrl+C 実行中のターンをキャンセル(2 回目の Ctrl+C で終了)
Ctrl+D / Ctrl+Q 終了(/quit も同じ)

スラッシュコマンドは reyn chat リファレンス に記載されています。


A2A エンドポイント(上級)

Web サーバーは、プログラムからのアクセスとエージェント間通信のための A2A JSON-RPC エンドポイントも公開します:

POST http://localhost:8080/a2a/agents/<agent-name>

スクリプティング、CI パイプライン、または Reyn を別のエージェントシステムに接続する際に便利です。プロトコルの詳細は concepts/a2a を参照してください。


トラブルシューティング

ポートがすでに使用中

ERROR: [Errno 48] Address already in use

別のプロセスがポート 8080 を使っています。--port で別のポートを選んでください:

reyn web --port 8081

別のデバイスから接続できない

デフォルトではサーバーは 127.0.0.1(localhost のみ)にバインドします。LAN 接続を受け付けるには --host 0.0.0.0 で実行し、先に reyn.yamlgateway.auth.token を設定してください — 非 loopback バインドはトークン無しでは起動を拒否します。

--connect が「authentication required / rejected by the server」と表示する

--token <secret>(reyn web が起動時に表示したトークン、または設定済みの gateway.auth.token)を渡すか、環境変数 REYN_WEB_AUTH_TOKEN を設定してください。


関連情報