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_URL(cli_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년 7월 13일