> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Remote Sessions

> Explica cómo habilitar sesiones remotas en Laravel Copilot SDK y acceder a la misma sesión desde web o móvil vía Mission Control de GitHub.

## 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](/es/packages/laravel-copilot-sdk/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.

<Info>
  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()`.
</Info>

```php theme={null}
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.

```php theme={null}
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](https://github.com/Bacon/BaconQRCode), que también usa Laravel Fortify.

```php theme={null}
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

* [Cloud Sessions](/es/packages/laravel-copilot-sdk/cloud-sessions)
* [RPC](/es/packages/laravel-copilot-sdk/rpc)
* [Modo TCP](/es/packages/laravel-copilot-sdk/tcp-mode)

<Info>
  Consulta la información más reciente en el [repositorio de GitHub](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Cloud Sessions](/es/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Eventos de streaming](/es/packages/laravel-copilot-sdk/streaming-events.md)
- [RPC (Remote Procedure Call)](/es/packages/laravel-copilot-sdk/rpc.md)
- [Instalar PHP, Composer y Node.js con WSL (Windows)](/es/blog/windows-setup.md)
- [Laravel Sentinel — Investigación del middleware de protección de rutas](/es/blog/sentinel-introduction.md)
