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

# Rede e certificados do Devin air-gapped

> Configure o Devin Desktop e a CLI air-gapped para a sua rede: confie em uma CA privada com DEVIN_CA_BUNDLE, use um proxy e resolva os códigos NET e CFG004.

> [!NOTE]
>
> Esta documentação se aplica às implantações federais do Devin. [Voltar para a Documentação do Devin](/pt-BR/get-started/devin-intro)

A CLI e o Desktop air-gapped se conectam aos endpoints de modelo definidos no seu [arquivo de modelos](/pt-BR/federal/air-gapped/models-file), ao emissor do provedor de identidade definido no seu [arquivo de autenticação](/pt-BR/federal/air-gapped/sso) e a quaisquer servidores MCP que você configurar localmente. Esta página explica o que essas conexões exigem da sua rede: confiança TLS, um proxy opcional e os códigos exibidos quando uma conexão falha.

***

## Requisitos de TLS

* Todo `base_url` de modelo e o `issuer` de SSO devem usar `https://`. O `http://` simples só é aceito para hosts de loopback (`localhost`, `127.0.0.0/8`, `[::1]`).
* Os certificados são verificados com o repositório de confiança do sistema operacional (Security.framework no macOS e o repositório de CAs do sistema no Linux). Se seus endpoints forem assinados por uma CA já instalada na estação de trabalho, nenhuma configuração adicional será necessária.
* Se seus endpoints forem assinados por uma CA privada que *não* esteja no repositório de confiança do sistema operacional, adicione-a com `DEVIN_CA_BUNDLE`, conforme descrito abaixo. A CLI nunca desativa a verificação de certificados.

## Confiar em uma CA privada com `DEVIN_CA_BUNDLE`

`DEVIN_CA_BUNDLE` aponta para um arquivo PEM cujos certificados são considerados confiáveis **além do** repositório de confiança do sistema operacional. Ele se aplica às requisições de inferência, às verificações do `devin airgap doctor` e a todas as requisições que a CLI faz ao seu IdP durante o login e a revalidação via SSO (Single Sign-On).

**1. Monte o pacote**

Coloque os certificados raiz (e os intermediários, se houver) da sua CA privada em um único arquivo PEM. O arquivo pode conter vários blocos `-----BEGIN CERTIFICATE-----`.

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

Seus endpoints não precisam compartilhar o mesmo certificado nem a mesma CA. Há um único pacote para todo o processo do agente, e ele vale para todas as conexões. Portanto, se endpoints diferentes forem assinados por CAs privadas diferentes, concatene todas essas CAs no mesmo arquivo:

```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
```

Com esse pacote, `https://vllm.corp.example` (assinado por `corp-root-ca`), `https://models.ml.example` (assinado por `ml-platform-ca`) e seu IdP (assinado por `idp-root-ca`) passam a ser confiáveis. Endpoints assinados por uma CA que já está no repositório de confiança do sistema operacional não precisam de entrada. O arquivo de modelos não tem campos de certificado ou TLS por modelo, e não há suporte a um pacote separado por endpoint.

**2. Exporte a variável no ambiente do agente**

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

A variável precisa estar visível para o processo que executa o agente. Para a CLI no terminal, defina-a no perfil do shell de cada usuário. Para o Desktop, defina-a da mesma forma que as variáveis de chave de API dos modelos (consulte [Variáveis de ambiente de chave de API](/pt-BR/federal/air-gapped/models-file#api-key-environment-variables)): adicione-a à configuração `devin.acp.agentEnv` ou, no macOS, use `launchctl setenv DEVIN_CA_BUNDLE /etc/devin/ca-bundle.pem` (o `open` não repassa o ambiente do seu shell para o app).

**3. Confirme com o 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)
…
```

O sufixo `trusted only via DEVIN_CA_BUNDLE` confirma que é o pacote que torna o endpoint confiável: o doctor testa novamente cada endpoint acessível usando apenas o repositório de confiança do sistema operacional e informa se essa tentativa falha no TLS. Sem a variável definida, a linha do pacote de CA exibe `not configured (OS trust store only; set DEVIN_CA_BUNDLE to add a private CA)`.

Se o arquivo não puder ser lido, contiver uma seção PEM inválida ou não tiver nenhum certificado, o doctor reprova a verificação **CA bundle** com `CFG004` e a mensagem do parser (por exemplo, `failed to read CA bundle '/etc/devin/ca-bundle.pem': No such file or directory`). Em tempo de execução, a mesma condição não é fatal: a CLI exibe uma linha `warning: ignoring DEVIN_CA_BUNDLE: …` e passa a usar o repositório de confiança do sistema operacional. Assim, um erro de digitação no caminho aparece como falhas de TLS `NET003` nos seus endpoints, e não como um erro de inicialização. Corrija o pacote e execute o doctor novamente.

## Proxy

A CLI air-gapped usa o mesmo tratamento de proxy de saída que a Devin CLI padrão. Por padrão (`"mode": "system"`), ela respeita as variáveis de ambiente `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` e `NO_PROXY`, além das configurações de PAC/proxy automático do sistema operacional. Para forçar um proxy específico ou ignorar totalmente os proxies, adicione um bloco `proxy` ao arquivo de configuração do usuário (`config.json` no diretório de configuração compartilhado do Devin; consulte [Formatos em disco](/pt-BR/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` | Comportamento |
| - | - |
| `"system"` (padrão) | Usa as variáveis de ambiente de proxy e as configurações PAC da plataforma. |
| `"manual"` | Envia todo o tráfego por `url` (`http://`, `https://` ou `socks5://`). Proxies definidos em variáveis de ambiente são ignorados. |
| `"off"` | Conecta diretamente, ignorando todas as configurações de proxy. |

`no_proxy` vale em todos os modos e usa a mesma sintaxe da variável de ambiente `NO_PROXY`. Para definir o proxy para todos os usuários de um host, coloque o mesmo bloco `proxy` no arquivo de políticas machine-wide `system.json` (`/etc/devin/system.json` no Linux, `/Library/Application Support/Devin/system.json` no macOS, `C:\ProgramData\Devin\system.json` no Windows). Se os dois arquivos definirem `proxy`, a CLI não inicia até que você remova a cópia do usuário. A referência completa das opções está na [referência do arquivo de configuração da CLI](/pt-BR/cli/reference/configuration/config-file#proxy).

Um proxy que encerra o TLS e assina novamente o tráfego com a própria CA conta como uma CA privada: adicione o certificado dele a `DEVIN_CA_BUNDLE`. As conexões continuam indo apenas para os destinos listados no início desta página; o proxy muda o caminho, não o conjunto de destinos.

## Tempos limite

| Conexão | Tempo limite |
| - | - |
| Verificações do `devin airgap doctor` (conexão e total) | 10 segundos por requisição |
| Requisições de SSO ao IdP (descoberta, token, JWKS) | 30 segundos por requisição |
| Requisições de inferência | 30 segundos para conectar; 300 segundos sem receber dados antes de a leitura ser abandonada |

Uma verificação que excede o tempo limite é reportada como `NET005`.

## Códigos NET

O `devin airgap doctor` anexa um destes códigos a cada verificação de endpoint que falha. Esses também são os códigos que você verá em solicitações de suporte. O catálogo completo está na página [Códigos de erro](/pt-BR/federal/air-gapped/error-codes).

| Código | Significado | O que fazer |
| - | - | - |
| `NET001` | A resolução DNS do host do endpoint falhou. | Verifique o nome do host no arquivo de modelos ou de autenticação e se o resolvedor da estação de trabalho consegue resolvê-lo (`getent hosts <host>` ou `dig <host>`). |
| `NET002` | Não foi possível estabelecer a conexão TCP (recusada, redefinida ou sem rota). | Verifique se a porta está acessível a partir da estação de trabalho e se algum firewall ou proxy permite o tráfego. |
| `NET003` | O handshake TLS falhou (certificado não confiável, expirado ou incompatível). Quando consegue obtê-lo, o doctor acrescenta o certificado apresentado pelo servidor (`subject`, `issuer`, `expires`) e informa se `DEVIN_CA_BUNDLE` estava em vigor. | Se o emissor for sua CA privada, defina ou corrija `DEVIN_CA_BUNDLE`. Se o certificado estiver expirado ou o nome dele não corresponder à URL, corrija o certificado do servidor. |
| `NET004` | O endpoint retornou um status HTTP de erro diferente de 401/403. Um `404` em `GET {base_url}/models` é apenas um aviso, pois alguns servidores compatíveis com OpenAI não implementam `/models`. | Verifique se `base_url` inclui o prefixo correto (geralmente `/v1`) e se o servidor está íntegro. |
| `NET005` | A requisição excedeu o tempo limite. | Verifique a latência da rede e se o endpoint não está sobrecarregado; a verificação de `/models` deve responder em até 10 segundos. |
| `NET006` | O endpoint rejeitou as credenciais configuradas (HTTP 401/403). | Verifique o valor da variável de ambiente indicada em `api_key.env` do modelo. |

## Códigos CFG relacionados

| Código | Significado | O que fazer |
| - | - | - |
| `CFG002` | A variável de ambiente indicada em `api_key.env` de um modelo não está definida no ambiente do agente. O Doctor pula as verificações de rede desse modelo. | Exporte a variável no ambiente em que o agente é iniciado; consulte [Arquivo de modelos](/pt-BR/federal/air-gapped/models-file#api-key-environment-variables). |
| `CFG004` | O arquivo `DEVIN_CA_BUNDLE` está ausente, não pode ser lido ou não contém certificados PEM válidos. | Corrija o caminho ou o conteúdo do arquivo; a mensagem indica o erro de análise. |


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