> ## 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.

# Red y certificados de Devin aislado de la red

> Configura Devin Desktop y la CLI aislados de la red para tu entorno: confía en una CA privada con DEVIN_CA_BUNDLE, usa un proxy y resuelve los códigos NET y CFG004.

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

La CLI y Desktop aislados de la red se conectan a los endpoints de modelos definidos en tu [archivo de modelos](/es/federal/air-gapped/models-file), al emisor del proveedor de identidad indicado en tu [archivo de autenticación](/es/federal/air-gapped/sso) y a cualquier servidor MCP que configures localmente. En esta página se explica qué necesitan esas conexiones de tu red: confianza TLS, un proxy opcional y los códigos que aparecen cuando falla una conexión.

***

## Requisitos de TLS

* Cada `base_url` de modelo y el `issuer` de SSO deben usar `https://`. Solo se acepta `http://` sin cifrar para hosts de loopback (`localhost`, `127.0.0.0/8`, `[::1]`).
* Los certificados se verifican con el almacén de confianza del sistema operativo (Security.framework en macOS y el almacén de CA del sistema en Linux). Si tus endpoints están firmados por una CA que ya está instalada en la estación de trabajo, no hace falta ninguna configuración adicional.
* Si tus endpoints están firmados por una CA privada que *no* está en el almacén de confianza del sistema operativo, agrégala con `DEVIN_CA_BUNDLE` como se describe a continuación. La CLI nunca desactiva la verificación de certificados.

## Confiar en una CA privada con `DEVIN_CA_BUNDLE`

`DEVIN_CA_BUNDLE` indica un archivo PEM cuyos certificados se consideran de confianza **además del** almacén de confianza del sistema operativo. Se aplica a las solicitudes de inferencia, a los sondeos de `devin airgap doctor` y a todas las solicitudes que la CLI envía a tu IdP durante el inicio de sesión y la revalidación con SSO (inicio de sesión único).

**1. Preparar el paquete**

Reúne en un único archivo PEM los certificados raíz (y, si los usas, los intermedios) de tu CA privada. El archivo puede contener varios bloques `-----BEGIN CERTIFICATE-----`.

```sh theme={null}
sudo install -m 0644 ./corp-root-ca.pem /etc/devin/ca-bundle.pem
```

Tus endpoints no tienen por qué compartir certificado ni CA. Hay un único paquete para todo el proceso del agente y se aplica a todas las conexiones; por tanto, si distintos endpoints están firmados por distintas CA privadas, concatena todas esas CA en el mismo archivo:

```sh theme={null}
cat ./corp-root-ca.pem ./ml-platform-ca.pem ./idp-root-ca.pem | sudo tee /etc/devin/ca-bundle.pem > /dev/null
sudo chmod 0644 /etc/devin/ca-bundle.pem
```

Con ese paquete, `https://vllm.corp.example` (firmado por `corp-root-ca`), `https://models.ml.example` (firmado por `ml-platform-ca`) y tu IdP (firmado por `idp-root-ca`) pasan a ser de confianza. Los endpoints firmados por una CA que ya está en el almacén de confianza del sistema operativo no necesitan ninguna entrada. El archivo de modelos no tiene campos de certificado ni de TLS por modelo, y no se admite un paquete independiente por endpoint.

**2. Exportar la variable en el entorno del agente**

```sh theme={null}
export DEVIN_CA_BUNDLE=/etc/devin/ca-bundle.pem
```

La variable debe estar disponible para el proceso que ejecuta el agente. Para la CLI de terminal, defínela en el perfil de shell de cada usuario. Para Desktop, defínela del mismo modo que las variables de clave de API de los modelos (consulta [Variables de entorno de clave de API](/es/federal/air-gapped/models-file#api-key-environment-variables)): agrégala a la configuración `devin.acp.agentEnv` o, en macOS, usa `launchctl setenv DEVIN_CA_BUNDLE /etc/devin/ca-bundle.pem` (`open` no transmite el entorno de tu shell a la aplicación).

**3. Confirmar con doctor**

```sh theme={null}
devin airgap doctor
```

```text theme={null}
…
pass  CA bundle                                 /etc/devin/ca-bundle.pem (3 certificate(s))
pass  model 'llama-3.3-70b': endpoint reachability  GET https://vllm.corp.example/v1/models -> 200 OK (trusted only via DEVIN_CA_BUNDLE — the OS trust store alone rejects this endpoint's certificate)
pass  model 'qwen3-vl-32b': endpoint reachability  GET https://models.ml.example/v1/models -> 200 OK (trusted only via DEVIN_CA_BUNDLE — the OS trust store alone rejects this endpoint's certificate)
…
```

El sufijo `trusted only via DEVIN_CA_BUNDLE` confirma que es el paquete lo que hace que el endpoint sea de confianza: doctor vuelve a probar cada endpoint accesible usando solo el almacén de confianza del sistema operativo e indica si ese intento falla por TLS. Si la variable no está definida, la fila del paquete de CA muestra `not configured (OS trust store only; set DEVIN_CA_BUNDLE to add a private CA)`.

Si el archivo no se puede leer, contiene una sección PEM no válida o no contiene certificados, doctor marca como fallida la comprobación **CA bundle** con `CFG004` y el mensaje del analizador (por ejemplo, `failed to read CA bundle '/etc/devin/ca-bundle.pem': No such file or directory`). En tiempo de ejecución, esta misma situación no es fatal: la CLI muestra una línea `warning: ignoring DEVIN_CA_BUNDLE: …` y recurre al almacén de confianza del sistema operativo, de modo que un error tipográfico en la ruta aparece como fallos de TLS `NET003` al conectar con tus endpoints, y no como un error de inicio. Corrige el paquete y vuelve a ejecutar doctor.

## Proxy

La CLI aislada de la red gestiona el proxy saliente de la misma forma que la Devin CLI estándar. De forma predeterminada (`"mode": "system"`), respeta las variables de entorno `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` y `NO_PROXY`, así como la configuración de PAC/proxy automático del sistema operativo. Para forzar un proxy específico u omitir por completo los proxies, agregue un bloque `proxy` al archivo de configuración de usuario (`config.json` en el directorio de configuración compartido de Devin; consulte [Formatos en disco](/es/federal/air-gapped/on-disk-formats)):

```json theme={null}
{
  "proxy": {
    "mode": "manual",
    "url": "http://proxy.corp.example:8080",
    "no_proxy": "localhost,127.0.0.1,.corp.example"
  }
}
```

| `mode` | Comportamiento |
| - | - |
| `"system"` (predeterminado) | Usa las variables de entorno de proxy y la configuración PAC de la plataforma. |
| `"manual"` | Envía todo el tráfico a través de `url` (`http://`, `https://` o `socks5://`). Se ignoran los proxies definidos en variables de entorno. |
| `"off"` | Se conecta directamente e ignora toda la configuración del proxy. |

`no_proxy` se aplica en todos los modos y usa la misma sintaxis que la variable de entorno `NO_PROXY`. Para configurar el proxy para todos los usuarios de un host, coloca el mismo bloque `proxy` en el archivo de políticas machine-wide `system.json` (`/etc/devin/system.json` en Linux, `/Library/Application Support/Devin/system.json` en macOS, `C:\ProgramData\Devin\system.json` en Windows). Si ambos archivos definen `proxy`, la CLI no se iniciará hasta que elimines la copia del usuario. Consulta la referencia completa de opciones en la [referencia del archivo de configuración de la CLI](/es/cli/reference/configuration/config-file#proxy).

Un proxy que termina TLS y vuelve a firmar el tráfico con su propia CA cuenta como una CA privada: agrega su certificado a `DEVIN_CA_BUNDLE`. Las conexiones siguen dirigiéndose únicamente a los destinos indicados al principio de esta página; el proxy cambia la ruta, no el conjunto de destinos.

## Tiempos de espera

| Conexión | Tiempo de espera |
| - | - |
| Sondeos de `devin airgap doctor` (conexión y total) | 10 segundos por solicitud |
| Solicitudes de SSO al IdP (descubrimiento, token, JWKS) | 30 segundos por solicitud |
| Solicitudes de inferencia | 30 segundos para establecer la conexión; la lectura se abandona tras 300 segundos sin recibir datos |

Los sondeos que superan su tiempo de espera se notifican como `NET005`.

## Códigos NET

`devin airgap doctor` adjunta uno de estos códigos a cada sondeo de endpoint fallido. Son también los códigos que verás en las solicitudes de soporte. El catálogo completo está en la página [Códigos de error](/es/federal/air-gapped/error-codes).

| Código | Significado | Qué hacer |
| - | - | - |
| `NET001` | Falló la resolución DNS del host del endpoint. | Comprueba el nombre de host en el archivo de modelos o de autenticación y que el resolvedor de la estación de trabajo pueda resolverlo (`getent hosts <host>` o `dig <host>`). |
| `NET002` | No se pudo establecer la conexión TCP (rechazada, restablecida o sin ruta). | Comprueba que el puerto esté abierto desde la estación de trabajo y que ningún firewall o proxy lo bloquee. |
| `NET003` | Falló el handshake TLS (certificado no confiable, caducado o que no coincide). Doctor añade el certificado que presentó el servidor (`subject`, `issuer`, `expires`) cuando puede obtenerlo e indica si `DEVIN_CA_BUNDLE` estaba activo. | Si el emisor es tu CA privada, define o corrige `DEVIN_CA_BUNDLE`. Si el certificado ha caducado o su nombre no coincide con la URL, corrige el certificado del servidor. |
| `NET004` | El endpoint devolvió un estado HTTP de error distinto de 401/403. Un `404` en `GET {base_url}/models` es solo una advertencia, ya que algunos servidores compatibles con OpenAI no implementan `/models`. | Comprueba que `base_url` incluya el prefijo correcto (normalmente `/v1`) y que el servidor funcione correctamente. |
| `NET005` | Se agotó el tiempo de espera de la solicitud. | Comprueba la latencia de la red y que el endpoint no esté sobrecargado; el sondeo de `/models` debería responder en menos de 10 segundos. |
| `NET006` | El endpoint rechazó las credenciales configuradas (HTTP 401/403). | Comprueba el valor de la variable de entorno indicada en el campo `api_key.env` del modelo. |

## Códigos CFG relacionados

| Código | Significado | Qué hacer |
| - | - | - |
| `CFG002` | La variable de entorno indicada en el campo `api_key.env` de un modelo no está definida en el entorno del agente. Doctor omite los sondeos de red de ese modelo. | Exporte la variable en el entorno desde el que se inicia el agente; consulte [Archivo de modelos](/es/federal/air-gapped/models-file#api-key-environment-variables). |
| `CFG004` | El archivo `DEVIN_CA_BUNDLE` no existe, no se puede leer o no contiene certificados PEM válidos. | Corrija la ruta o el contenido del archivo; el mensaje indica el error de análisis. |


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