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

# Archivo de licencia de Devin aislado de la red

> Instala, inspecciona y renueva el archivo de licencia sin conexión que Devin Desktop y la CLI aislados de la red validan al iniciarse, con los ID de clave esperados y los códigos de error LIC.

> [!NOTE]
>
> Esta documentación corresponde a los despliegues federales de Devin. [Volver a la documentación de Devin](/es/get-started/devin-intro)

Las compilaciones aisladas de la red de Devin Desktop y de la Devin CLI no requieren iniciar sesión en la nube. El acceso se controla mediante un **archivo de licencia firmado** que el producto valida completamente sin conexión cada vez que se inicia. Cada licencia se emite desde el portal para un único usuario titular y consume una de las licencias aisladas de la red contratadas por tu equipo.

## Dónde se encuentra la licencia

| | |
| - | - |
| Ruta predeterminada | `/etc/devin/license.devin-onprem-license` |
| Ruta predeterminada (Windows) | `C:\ProgramData\Devin\license.devin-onprem-license` |
| Anulación | `DEVIN_LICENSE_FILE=<path>` |

El agente integrado de Desktop y la CLI independiente leen el mismo archivo. Instálelo antes de iniciar la aplicación por primera vez; consulte [Instalación → Paso 4](/es/federal/air-gapped/install#step-4-place-the-license-and-models-file). Los usuarios de Desktop también pueden instalar una licencia desde la configuración de Devin: el agente integrado valida el archivo sin conexión, no permite sobrescribir un archivo que pertenezca a otro usuario y registra un evento de auditoría `license_installed`. En Windows, si el archivo de licencia pertenece a un administrador, un usuario estándar no puede reemplazarlo desde Desktop (la instalación se rechaza con `LIC001`), pero un administrador sí. [Restrinja el acceso a `C:\ProgramData\Devin\`](/es/federal/air-gapped/install#windows-lock-down-the-configuration-folder) antes de colocar el archivo.

## Emitir una licencia desde el portal

1. Inicia sesión en el portal y abre la página de tu **Team**. En la sección **Air-gapped licenses** se muestra cuántas licencias están en uso, el periodo de vigencia de tu contrato y la duración predeterminada de las licencias.
2. Haz clic en **Generate license**.
3. Introduce una **etiqueta** (por ejemplo, el nombre de host o el nombre del usuario), el **correo electrónico de la persona asignada** y la **duración en días**. De forma predeterminada, la duración es la definida en tu contrato, y no puede superar ni el máximo permitido por este ni la fecha de finalización del periodo contratado. En el paso de revisión se muestra la fecha de vencimiento prevista.
4. Confirma. El portal muestra **License generated** y ofrece la opción **Download license file**. Lo que se descarga es el archivo firmado `.devin-onprem-license`; transfiérelo al host aislado de la red siguiendo el proceso de medios extraíbles aprobado por tu organización.

La tabla **Issued licenses** muestra todas las licencias junto con su estado (**Active**, **Expiring soon**, **Expired**, **Revoked**). Desde esta tabla puedes volver a descargar cualquier licencia activa. Para revocar o volver a emitir una licencia, o para liberar una licencia cuando todas estén en uso, contacta con tu equipo de soporte.

## Qué contiene el archivo

El archivo es un único JSON Web Token en formato compacto (`header.payload.signature`), firmado con EdDSA (Ed25519). El campo `kid` del encabezado identifica la clave pública con la que se firmó; el producto incluye la clave pública de cada entorno, por lo que no es necesario descargar nada durante la validación. Reclamaciones:

| Reclamación | Significado |
| - | - |
| `license_id` | ID único de esta licencia |
| `account_id` | Tu cuenta |
| `seat_label` | El titular de la licencia, normalmente una dirección de correo electrónico |
| `iat` / `nbf` | Inicio de la validez (segundos Unix) |
| `exp` | Fin de la validez (segundos Unix) |
| `product` | Siempre `devin-onprem` |
| `entitlements` | Lista de cadenas de derechos de uso; puede estar vacía |

La validación comprueba la firma con la clave incrustada que indica `kid`, el intervalo `nbf`/`exp` con una tolerancia de desfase de reloj de 24 horas en ambos sentidos, y la reclamación `product`.

## Consultar una licencia

### Comprobar el ID de clave

Decodifica el encabezado del JWT y lee `kid`. Este comando de una sola línea funciona tanto en Linux como en macOS: convierte base64url a base64 y agrega el relleno, ya que el `base64` de BSD que incluye macOS trunca sin avisar la entrada que no tiene relleno.

```sh theme={null}
h=$(cut -d. -f1 < /etc/devin/license.devin-onprem-license | tr '_-' '/+')
while [ $(( ${#h} % 4 )) -ne 0 ]; do h="$h="; done
printf '%s' "$h" | base64 -d | jq -r .kid
```

```text theme={null}
fedstart-key-1
```

Valores esperados:

| Entorno del portal | `kid` esperado |
| - | - |
| Producción de FedStart (`windsurf.fedstart.com`) | `fedstart-key-1` |
| Preproducción de FedStart | `fedstart-staging-key-1` |

Si obtienes un `kid` distinto o un resultado vacío, el archivo no es una licencia emitida para este producto o se dañó durante la transferencia.

### Comprueba la licencia, la cuenta y la fecha de caducidad

`devin auth status` funciona aunque falte la licencia o no sea válida, así que puedes usarlo para diagnosticar problemas:

```sh theme={null}
devin auth status
```

```text theme={null}
Air-gapped build: access is license-based.
  License file:  /etc/devin/license.devin-onprem-license
  Identity:      alice <alice@example.gov>
  Seat:          alice@example.gov
  Account:       acme
  Expires:       2027-03-01 (340 day(s) left)
```

`Identity` es la identidad de atribución local (nombre de usuario del sistema operativo más `git config user.email`); queda registrada en el registro de auditoría y es independiente de la licencia. Si el archivo no se puede validar, la última línea será, en su lugar, `License:       INVALID — LIC00X: <reason>`.

La comprobación `license` de `devin airgap doctor` muestra la misma licencia, cuenta y fecha de vencimiento, y cambia a `warn` cuando faltan 30 días o menos para el vencimiento.

## Comportamiento al iniciar y al revalidar

* En cada inicio, la CLI valida la licencia e imprime una línea en stderr:

  ```text theme={null}
  Devin on-prem license: seat alice@example.gov (account acme), expires 2027-03-01. Local user: alice <alice@example.gov>.
  ```

  Si la licencia vence en los próximos 30 días, a continuación aparece una línea `Warning: license expires in N day(s)`.
* Los procesos de larga duración (el agente integrado de Desktop, el REPL de la CLI) vuelven a verificar el archivo como máximo una vez por hora, **antes de iniciar una nueva sesión o un nuevo turno**. El trabajo en curso nunca se interrumpe.
* Si la licencia lleva más de 24 horas vencida, se bloquean las nuevas sesiones y los nuevos turnos. En Desktop, el panel de chat muestra el error de ACP `-32019 license_invalid`; la causa específica (`LIC00X`) aparece en **View → Output → Devin ACP**.
* Los fallos no se almacenan en caché: al instalar un archivo renovado, el cambio se aplica en el siguiente turno sin necesidad de reiniciar.
* Algunos comandos se pueden ejecutar sin una licencia válida para que puedas reparar un host: `devin auth status`, `devin airgap doctor`, `devin doctor`, `devin diagnostics`, `devin models validate` y `devin version`.

## Renovar o reemplazar una licencia

1. Genera una nueva licencia para el mismo titular de la licencia desde el portal (consulta la sección anterior). Si la licencia ya está en uso, pide a tu equipo de soporte que revoque primero la licencia anterior.
2. Sobrescribe el archivo existente en `/etc/devin/license.devin-onprem-license` (o en la ruta indicada en `DEVIN_LICENSE_FILE`) con el nuevo. El archivo debe seguir siendo propiedad de la cuenta que ejecuta Devin, o bien de root con permiso de lectura para esa cuenta. En Windows, la ruta predeterminada es `C:\ProgramData\Devin\license.devin-onprem-license`; reemplaza el archivo desde una sesión con privilegios elevados.
3. Comprueba el resultado:

   ```sh theme={null}
   devin auth status | grep Expires
   ```

   ```text theme={null}
     Expires:       2028-03-01 (705 day(s) left)
   ```

No es necesario reiniciar: el nuevo archivo se cargará en la siguiente sesión o en el siguiente turno.

## Códigos de error

Todos los fallos de licencia se muestran como `LIC00X: <message>`, seguidos de la ruta comprobada y de cómo anularla.

| Código | Significado | Qué hacer |
| - | - | - |
| `LIC001` | Falta el archivo de licencia o no se puede leer | Instala el archivo en la ruta predeterminada o define `DEVIN_LICENSE_FILE`; comprueba los permisos del archivo para el usuario que ejecuta Devin |
| `LIC002` | Archivo con formato incorrecto: no es un JWT EdDSA válido o falta el `kid` en el encabezado | Vuelve a descargar la licencia desde el portal; asegúrate de que el archivo se transfirió sin modificaciones (sin saltos de línea añadidos, ajustes de línea ni cambios de codificación) |
| `LIC003` | Falló la verificación de la firma | La carga útil se modificó después de firmarse. Vuelve a descargar la licencia |
| `LIC004` | `kid` desconocido (ninguna clave pública integrada coincide) | Comprueba el `kid` como se indica arriba. La licencia la emitió otro entorno o tu compilación es anterior a una rotación de claves; instala la versión actual |
| `LIC005` | Caducada y fuera del período de gracia de 24 horas | Renueva la licencia |
| `LIC006` | Aún no es válida (fecha de emisión más de 24 horas en el futuro) | Comprueba el reloj del host; si es correcto, contacta con tu equipo de soporte |
| `LIC007` | Reclamación `product` incorrecta (no es `devin-onprem`) | El archivo no es una licencia de Devin aislada de la red. Vuelve a descargarla desde el portal |

El catálogo completo de todos los espacios de nombres se encuentra en [Códigos de error](/es/federal/air-gapped/error-codes).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.