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

# Autenticar el CLI

> Configura el CLI de mka1 con tu clave API usando flags, variables de entorno, el llavero del sistema operativo o un archivo de configuración — y adjunta X-On-Behalf-Of para integraciones multiusuario.

El CLI resuelve las credenciales desde cuatro fuentes, en este orden:

| Prioridad    | Fuente                        | Dónde se encuentra                                                       |
| ------------ | ----------------------------- | ------------------------------------------------------------------------ |
| 1 (más alta) | Flag de línea de comandos     | `--bearer-auth` en cualquier comando                                     |
| 2            | Variable de entorno           | `MKA1_BEARER_AUTH` en tu shell                                           |
| 3            | Llavero del sistema operativo | Keychain de macOS, GNOME Keyring / KWallet, Credential Locker de Windows |
| 4 (más baja) | Archivo de configuración      | `~/.config/mka1/config.yaml`                                             |

Las fuentes de mayor prioridad prevalecen cuando hay más de una configurada. Usa flags para comandos puntuales, variables de entorno para CI y el llavero para tu estación de trabajo.

## 1. Flag de línea de comandos

Pasa las credenciales directamente en cualquier comando:

```bash theme={null}
mka1 --bearer-auth 'Bearer <mka1-api-key>' llm models list
```

## 2. Variable de entorno

Configura el token una vez en tu shell (o en un trabajo de CI):

```bash theme={null}
export MKA1_BEARER_AUTH="Bearer <mka1-api-key>"

mka1 llm responses create --model meetkai:functionary-es-mini --input '"Hello"'
```

`mka1 auth whoami` etiquetará el valor como `[env]` para que puedas ver de dónde proviene.

## 3. Llavero del sistema operativo (recomendado para estaciones de trabajo)

Ejecuta el inicio de sesión interactivo una vez. El CLI solicitará tu clave API y la guardará en el almacén de secretos de tu sistema operativo:

```bash theme={null}
mka1 auth login
```

Los secretos se almacenan en:

* **macOS**: Keychain
* **Linux**: GNOME Keyring o KWallet (vía D-Bus Secret Service)
* **Windows**: Credential Locker

Si no hay un llavero disponible — por ejemplo, en un runner de CI sin interfaz gráfica — el CLI recurre automáticamente al archivo de configuración. En ese entorno, es preferible usar variables de entorno.

`mka1 configure` es equivalente a `mka1 auth login` y además solicita preferencias no secretas como la URL del servidor por defecto.

## 4. Archivo de configuración

Los valores predeterminados no secretos (como `server-url`) se almacenan en `~/.config/mka1/config.yaml`.
Cuando no hay llavero disponible, el token también se escribe allí. Protege el archivo con permisos de sistema de archivos si dependes de ese mecanismo.

## Inspecciona la configuración activa

`mka1 auth whoami` (o el alias de nivel superior `mka1 whoami`) imprime cada configuración resuelta y su fuente, con los valores secretos enmascarados:

```bash theme={null}
mka1 auth whoami
```

Etiquetas de fuente:

* `[flag]` — pasado en la línea de comandos.
* `[env]` — leído de una variable de entorno `MKA1_*`.
* `[keyring]` — almacenado por `auth login` o `configure`.
* `[config]` — leído de `~/.config/mka1/config.yaml`.
* `[unset]` — no configurado.

## Borra las credenciales almacenadas

Elimina todas las credenciales tanto del llavero como del archivo de configuración:

```bash theme={null}
mka1 auth logout
```

Esto no afecta a las variables de entorno — elimínalas con `unset MKA1_BEARER_AUTH`.

## Actúa en nombre de un usuario final

El gateway acepta un encabezado opcional `X-On-Behalf-Of: <external-user-id>` para que una sola clave API del lado del servidor pueda atribuir el tráfico y aplicar autorización por usuario. Envíalo con `-H` en cualquier comando:

```bash theme={null}
mka1 llm responses create \
  --model meetkai:functionary-es-mini \
  --input '"Summarize the support queue for the past 24 hours."' \
  -H 'X-On-Behalf-Of: user-abc456'
```

Omite el encabezado cuando estés llamando a la API como la cuenta propietaria y no como un usuario final específico.

Consulta la [guía de autenticación](/es/docs/authentication) y el [análisis en profundidad](/es/docs/authentication-deep-dive) para conocer todas las reglas de propagación de encabezados, incluyendo cómo el gateway emite y valida JWTs de intercambio.

## Intercambia una clave API por un JWT

Si tus sistemas posteriores esperan un JWT bearer en lugar de una clave API sin procesar, intercambia la clave en tiempo de ejecución:

```bash theme={null}
mka1 auth api-keys exchange-token \
  --bearer-auth 'Bearer <mka1-api-key>' \
  --audience https://my-service.example.com \
  --external-user-id user_123
```

La respuesta contiene el JWT de corta duración que puedes reenviar a otros servicios.

## Próximos pasos

* [Comandos](/es/docs/cli/commands) — ejecuta tus primeros flujos de trabajo una vez autenticado.
* [Depura e inspecciona](/es/docs/cli/diagnostics) — usa `--dry-run` para confirmar qué credenciales y encabezados se enviarían.
