메인 콘텐츠로 건너뛰기

Remote Sessions

Remote Sessions를 활성화하면 GitHub의 Mission Control을 통해 웹이나 모바일에서 같은 세션에 접근할 수 있습니다. 활성화하면 각 세션이 Mission Control에 접속되고, 링크나 QR 코드로 공유할 수 있는 URL이 발급됩니다. 로컬이나 자체 서버가 아닌 GitHub 호스트 환경에서 세션 자체를 실행하려면 Cloud Sessions를 사용합니다.

사전 조건

  • 사용자가 인증되어 있을 것(GitHub 토큰 또는 로그인된 사용자)
  • workingDirectory가 GitHub 저장소일 것

클라이언트 레벨에서 활성화(상시 ON)

remote: true를 활성화하면 GitHub 저장소 내의 모든 세션에서 자동으로 원격 URL이 발급됩니다. config/copilot.php에 고정으로 추가하기보다는, 필요한 처리만 useStdio()remote: true를 활성화하는 사용법이 다루기 쉽습니다.
remote 옵션은 SDK가 CLI 프로세스를 기동하는 경우에만 유효합니다. 즉 stdio 모드 전용입니다. useTcp() 등 외부 서버로 접속할 경우 무시됩니다.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Support\PermissionHandler;
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Types\SessionEvent;

$config = new SessionConfig(
    workingDirectory: '/path/to/github-repo',
    onPermissionRequest: PermissionHandler::approveAll(),
);

$stdioConfig = config('copilot');
$stdioConfig['remote'] = true;

Copilot::useStdio($stdioConfig)->start(function (CopilotSession $session): void {
    $session->on(SessionEventType::SESSION_INFO, function (SessionEvent $event): void {
        if ($event->data('infoType') === 'remote') {
            echo 'Remote URL: '.$event->data('url').PHP_EOL;
        }
    });
}, config: $config);

세션별로 활성화(온디맨드)

도중부터 원격 공유를 시작하려면 RPC로 전환합니다. CLI의 /remote on/remote off 명령과 동등한 조작입니다.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

Copilot::start(function (CopilotSession $session): void {
    $result = $session->rpc()->remote()->enable();

    if ($result->url !== null) {
        echo 'Remote URL: '.$result->url.PHP_EOL;
    }

    // 공유 중지
    $session->rpc()->remote()->disable();
});

QR 코드 생성

취득한 원격 URL은 QR 코드로 만들어 모바일에 전달할 수 있습니다. Laravel Fortify에서도 사용되는 BaconQrCode를 사용할 수 있습니다.
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;

$writer = new Writer(
    new ImageRenderer(
        new RendererStyle(256),
        new SvgImageBackEnd(),
    ),
);

$svg = $writer->writeString($result->url ?? '');

주의점

  • remote 옵션은 SDK가 CLI 프로세스를 기동하는 경우에만 유효합니다. useTcp() 등 외부 서버 접속 시에는 무시됩니다.
  • workingDirectory가 GitHub 저장소가 아닌 경우, 상시 ON 모드에서는 원격 설정이 스킵됩니다. 온디맨드 활성화(remote()->enable())에서는 에러가 발생할 수 있습니다.
  • 인증 정보(github_token 또는 use_logged_in_user)를 적절히 설정하세요.

참고

최신 정보는 GitHub 저장소를 참고하세요.
마지막 수정일 2026년 7월 13일