# Configuración predeterminada (CLI agrupada)

Los SDK de Node.js y .NET incluyen la CLI de Copilot como dependencia: la aplicación se distribuye con todo lo que necesita, sin necesidad de instalación ni configuración adicionales.

<!-- markdownlint-disable GHD046 GHD005 -->

<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->

El SDK de Python recomienda un paso de descarga único después de la instalación:

```bash
python -m copilot download-runtime
```

Esto descarga el tiempo de ejecución coincidente y lo almacena en caché localmente. Si omite este paso, el SDK intentará descargarlo automáticamente la primera vez que se utilice como alternativa.

**Lo mejor para:** La mayoría de las aplicaciones: aplicaciones de escritorio, herramientas independientes, utilidades de la CLI, prototipos y mucho más.

## Cómo funciona

Al instalar el SDK, el entorno de ejecución de Copilot se incluye automáticamente (Node.js, .NET) o se descarga a través `python -m copilot download-runtime` de (Python). El SDK lo inicia como un proceso secundario y se comunica a través de stdio. No hay nada adicional para configurar.

![Diagrama: Diagrama de flujo que muestra el proceso descrito.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-0.png)

**Características principales:**

* El binario de la CLI se incluye con el SDK: no se necesita ninguna instalación independiente.
* El SDK administra la versión de la CLI para garantizar la compatibilidad.
* Los usuarios se autentican a través de la aplicación (o usan env vars/BYOK)
* Las sesiones se administran por usuario en su máquina

## Inicio rápido

<div class="ghd-codetabs">
<div class="ghd-codetab" data-lang="typescript" data-label="TypeScript"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">TypeScript</div>

```typescript
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();

const session = await client.createSession({ model: "gpt-5.4" });
const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);

await client.stop();
```

</div>

<div class="ghd-codetab" data-lang="python" data-label="Python"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Python</div>

```python
from copilot import CopilotClient
from copilot.session import PermissionHandler

client = CopilotClient()
await client.start()

session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model="gpt-5.4")
response = await session.send_and_wait("Hello!")
print(response.data.content)

await client.stop()
```

</div>

<div class="ghd-codetab" data-lang="go" data-label="Go"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Go</div>

> \[!NOTE]
> A diferencia de Node.js, Python y .NET, el SDK de Go no incluye una CLI como una dependencia automática. Sin una ruta explícita, `NewClient(nil)` usa una CLI integrada cuando está disponible y, en caso contrario, recurre a `copilot` en `PATH`. Para insertar una CLI, ejecute la [herramienta bundler](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) en tiempo de compilación. También puede configurar `COPILOT_CLI_PATH` o hacer que `Connection` apunte a un binario existente. Consulte [Configuración de la CLI local](/es/copilot/how-tos/copilot-sdk/setup/local-cli) para obtener más información.

```golang
client := copilot.NewClient(nil)
if err := client.Start(ctx); err != nil {
    log.Fatal(err)
}
defer client.Stop()

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: "gpt-5.4"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
    fmt.Println(d.Content)
}
```

</div>

<div class="ghd-codetab" data-lang="dotnet" data-label=".NET"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">.NET</div>

```csharp
await using var client = new CopilotClient();
await using var session = await client.CreateSessionAsync(
    new SessionConfig { Model = "gpt-5.4" });

var response = await session.SendAndWaitAsync(
    new MessageOptions { Prompt = "Hello!" });
Console.WriteLine(response?.Data.Content);
```

</div>

<div class="ghd-codetab" data-lang="java" data-label="Java"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Java</div>

> \[!NOTE]
> El SDK de Java no agrupa ni inserta la CLI de Copilot. Instale la CLI por separado y haga que `copilot` esté disponible en su `PATH` o establezca su ubicación con `setCliPath(...)` (o conéctese a un servidor CLI en ejecución con `setCliUrl(...)`).

```java
import com.github.copilot.CopilotClient;
import com.github.copilot.rpc.*;

var client = new CopilotClient(new CopilotClientOptions()
    // Point to the CLI binary installed on the system
    .setCliPath("/path/to/vendor/copilot")
);
client.start().get();

var session = client.createSession(new SessionConfig()
    .setModel("gpt-5.4")
    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
).get();

var response = session.sendAndWait(new MessageOptions()
    .setPrompt("Hello!")).get();
System.out.println(response.getData().content());

client.stop().get();
```

</div>

</div>

## Estrategias de autenticación

Debe decidir cómo se autenticarán los usuarios. Estos son los patrones comunes:

![Diagrama: Diagrama de flujo que muestra el proceso descrito.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-1.png)

### Opción A: credenciales de inicio de sesión del usuario (más sencilla)

El usuario inicia sesión en la CLI una vez y la aplicación usa esas credenciales. No se necesita código adicional: este es el comportamiento predeterminado.

```typescript
const client = new CopilotClient();
// Default: uses signed-in user credentials
```

### Opción B: testigo mediante una variable de entorno

Envíe la aplicación con instrucciones para establecer un token o establecerla mediante programación:

```typescript
const client = new CopilotClient({
    env: {
        COPILOT_GITHUB_TOKEN: getUserToken(),  // Your app provides the token
    },
});
```

### Opción C: BYOK (sin autenticación GitHub necesaria)

Si gestionas tus propias claves de proveedor de modelos, los usuarios no necesitan cuentas de GitHub en absoluto:

```typescript
const client = new CopilotClient();

const session = await client.createSession({
    model: "gpt-5.4",
    provider: {
        type: "openai",
        baseUrl: "https://api.openai.com/v1",
        apiKey: process.env.OPENAI_API_KEY,
    },
});
```

Consulte **[BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)** para obtener más información.

## Administración de sesiones

Las aplicaciones suelen querer sesiones con nombre para que los usuarios puedan reanudar conversaciones:

```typescript
const client = new CopilotClient();

// Create a session tied to the user's project
const sessionId = `project-${projectName}`;
const session = await client.createSession({
    sessionId,
    model: "gpt-5.4",
});

// User closes app...
// Later, resume where they left off
const resumed = await client.resumeSession(sessionId);
```

El estado de sesión persiste en `~/.copilot/session-state/{sessionId}/`.

## Cuándo seguir adelante

| Requisito                                                                                     | Guía siguiente |
| --------------------------------------------------------------------------------------------- | -------------- |
| Usuarios que inician sesión con cuentas de GitHub                                             |                |
| [Configuración de OAuth de GitHub](/es/copilot/how-tos/copilot-sdk/setup/github-oauth)        |                |
| Ejecución en un servidor en lugar de máquinas de usuario                                      |                |
| [Configuración de servicios back-end](/es/copilot/how-tos/copilot-sdk/setup/backend-services) |                |
| Usa tus propias claves del modelo                                                             |                |
| [BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)                    |                |

## Pasos siguientes

* **[BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)**: Usa las claves de tu proveedor de modelos
* **[Reanudación y persistencia de sesión](/es/copilot/how-tos/copilot-sdk/features/session-persistence)**: Administración avanzada de sesiones
* **[Crea tu primera aplicación con tecnología Copilot](/es/copilot/how-tos/copilot-sdk/getting-started)**: Compilación de una aplicación completa