Saltar al contenido principal

Remote Sessions

Al habilitar Remote Sessions puedes acceder a la misma sesión desde la web o el móvil mediante Mission Control de GitHub. Al activarlo, cada sesión se conecta a Mission Control y se emite una URL que puedes compartir como enlace o código QR. Si lo que quieres es ejecutar la propia sesión en el entorno hospedado por GitHub en lugar de en local o en un servidor propio, usa Cloud Sessions.

Requisitos previos

  • El usuario está autenticado (token de GitHub o usuario ya logueado)
  • workingDirectory es un repositorio de GitHub

Habilitar a nivel de cliente (siempre ON)

Si habilitas remote: true, se emite automáticamente una URL remota para todas las sesiones dentro del repositorio de GitHub. En lugar de añadirlo de forma fija en config/copilot.php, resulta más manejable activarlo con useStdio() solo para los procesos que lo necesiten.
La opción remote solo es efectiva cuando el SDK arranca el proceso CLI. Es decir, solo funciona en modo stdio. Se ignora cuando te conectas a un servidor externo, por ejemplo con 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);

Habilitar por sesión (bajo demanda)

Si quieres iniciar el compartido remoto a mitad de camino, cambia el estado vía RPC. Equivale a los comandos /remote on y /remote off del CLI.
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;
    }

    // Detener el compartido
    $session->rpc()->remote()->disable();
});

Generar códigos QR

Puedes convertir la URL remota obtenida en un código QR y pasársela al móvil. Puedes usar BaconQrCode, que también usa Laravel Fortify.
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 ?? '');

Consideraciones

  • La opción remote solo es efectiva cuando el SDK arranca el proceso CLI. Se ignora al conectar con un servidor externo, por ejemplo con useTcp().
  • Si workingDirectory no es un repositorio de GitHub, en el modo siempre ON se salta la configuración remota. Con la activación bajo demanda (remote()->enable()) puede producirse un error.
  • Configura correctamente las credenciales (github_token o use_logged_in_user).

Referencias

Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 13 de julio de 2026