Skip to main content

TCPモード

通常、SDK は各リクエストごとに新しい Copilot CLI プロセスを起動します(stdio モード)。 TCP モードを使うと、事前に起動した Copilot CLI サーバーへ接続できます。

TCPモードのメリット

  • パフォーマンス向上: プロセス起動オーバーヘッドがない
  • リソース共有: 複数の Laravel プロセスで同一 CLI サーバーを共有できる
  • プロセス管理: Laravel Forge / Laravel Cloud でバックグラウンドプロセスとして管理できる
  • デプロイ対応: デプロイ時の自動再起動に対応できる

使い方

1. Copilot CLIサーバーを起動

2. 環境変数を設定

これだけで、SDK は stdio モードから TCP モードに自動で切り替わります。
  • tcp:// は任意です。http:// やスキームなしでも動作します。
  • ポートだけの指定も可能です。その場合ホストは自動で 127.0.0.1 になります。
  • ホストだけの指定は 127.0.0.1localhost のみ有効です。その場合ポートはデフォルト 12345 になります。

設定ファイル

config/copilot.php で TCP 接続を設定できます。
COPILOT_URLcli_url)と COPILOT_CLI_PATH を両方設定した場合は TCP モードが優先されます。

実行時のモード切り替え

通常は設定ファイルに従って TCP モードか stdio モードかが自動で選ばれます。 コード内で明示的に切り替えることも可能です。
サーバーによっては TCP モードで正常に動作しないことがあります。 キュー処理は TCP モード、HTTP リクエスト内の処理は stdio モードのように使い分けることも可能です。

Laravel Forge / Laravel Cloudでの運用

Laravel Forge

  1. Daemon を作成: Forge 管理画面で Daemon を作成します。
  2. 環境変数を設定: .envCOPILOT_URL を追加します。
  3. デプロイ時に再起動: デプロイスクリプトで Daemon を再起動します。
現在の Forge 環境では不要な場合があります。

Laravel Cloud

Laravel Cloud のワーカー機能を使い、バックグラウンドプロセスとして実行できます。 詳しくは Laravel Cloudでの使い方 を参照してください。

注意事項

セキュリティ

TCPサーバーは可能な限りローカルバインド(127.0.0.1)を使ってください。 外部公開する場合はファイアウォール設定を適切に行ってください。

再接続

現在のバージョンには自動再接続機能がありません。接続が切れると例外がスローされます。

現在モードの確認

プログラム内でクライアントがどちらのモードか確認できます。

トラブルシューティング

接続できない

  1. Copilot CLI サーバーが起動しているか確認
  1. ポートが正しいか確認
  1. ファイアウォール設定を確認

タイムアウトエラー

config/copilot.phptimeout 値を増やしてください。
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年4月22日