Skip to main content
Esta documentação é destinada às implantações federais do Devin. Voltar para a Documentação do Devin
Os builds air-gapped do Devin Desktop e da Devin CLI não usam login na nuvem. O acesso é controlado por um arquivo de licença assinado, que o produto valida de forma totalmente offline a cada inicialização. Cada licença é emitida pelo portal para um único titular da licença e consome uma licença do direito de uso air-gapped da sua equipe.

Onde a licença fica armazenada

O agente incluído no Desktop e a CLI independente leem o mesmo arquivo. Instale-o antes da primeira inicialização; consulte Instalação → Etapa 4. Usuários do Desktop também podem instalar uma licença nas configurações do Devin: o agente incluído valida o arquivo offline, não sobrescreve um arquivo pertencente a outro usuário e registra um evento de auditoria license_installed. No Windows, quando o arquivo de licença pertence a um administrador, um usuário padrão não consegue substituí-lo pelo Desktop (a instalação é recusada com LIC001), mas um administrador consegue. Restrinja o acesso a C:\ProgramData\Devin\ antes de colocar o arquivo.

Emitir uma licença pelo portal

  1. Faça login no portal e abra a página Team. A seção Air-gapped licenses mostra quantas licenças estão em uso, o período de direito de uso e a duração padrão das licenças.
  2. Clique em Generate license.
  3. Informe um rótulo (por exemplo, o nome do host ou o nome do usuário), o e-mail do responsável e a duração em dias. Por padrão, a duração corresponde ao valor padrão do seu direito de uso e é limitada tanto pelo máximo permitido quanto pelo fim do período de direito de uso. A etapa de revisão mostra a data de expiração prevista.
  4. Confirme. O portal exibe License generated e oferece a opção Download license file. O arquivo baixado é o .devin-onprem-license assinado. Transfira-o para o host air-gapped usando o processo de mídia aprovado pela sua organização.
A tabela Issued licenses lista todas as licenças com o respectivo status (Active, Expiring soon, Expired, Revoked). Nessa tabela, você pode baixar novamente uma licença ativa. A revogação ou reemissão de uma licença, assim como a liberação de uma licença quando todas estiverem em uso, fica a cargo da sua equipe de suporte.

O que o arquivo contém

O arquivo é um único JSON Web Token em formato compacto (header.payload.signature), assinado com EdDSA (Ed25519). O kid do cabeçalho identifica a chave pública usada na assinatura. Como o produto já inclui a chave pública de cada ambiente, nada é buscado no momento da validação. Claims: A validação confere a assinatura usando a chave incorporada selecionada pelo kid, verifica a janela nbf/exp com uma franquia de 24 horas para diferença de relógio em cada direção e checa a claim product.

Inspecionar uma licença

Verifique o ID da chave

Decodifique o cabeçalho do JWT e leia o campo kid. Este comando de uma linha funciona tanto no Linux quanto no macOS: ele converte base64url em base64 e adiciona o preenchimento, já que o base64 BSD incluído no macOS trunca silenciosamente entradas sem preenchimento.
Valores esperados: Um kid diferente ou um resultado vazio indica que o arquivo não é uma licença emitida para este produto ou que foi corrompido durante a transferência.

Verifique a licença, a conta e a data de expiração

O devin auth status funciona mesmo quando a licença está ausente ou é inválida, então você pode usá-lo para diagnosticar o problema:
Identity é a identidade local de atribuição de autoria (nome de usuário do sistema operacional mais git config user.email); ela consta no registro de auditoria e não depende da licença. Se o arquivo não puder ser validado, a última linha passa a ser License: INVALID — LIC00X: <reason>. A verificação license em devin airgap doctor informa a mesma licença, conta e data de expiração, e muda para warn quando faltam 30 dias ou menos para a expiração.

Comportamento na inicialização e na revalidação

  • A cada inicialização, a CLI valida a licença e imprime uma linha no stderr:
    Se a licença expirar em até 30 dias, uma linha Warning: license expires in N day(s) é exibida logo em seguida.
  • Processos de longa duração (o agente incluído no pacote do Desktop e o REPL da CLI) verificam o arquivo novamente no máximo uma vez por hora, antes de iniciar uma nova sessão ou um novo turno. O trabalho em andamento nunca é interrompido.
  • Uma licença expirada há mais de 24 horas bloqueia novas sessões e novos turnos. No Desktop, o painel de chat exibe o erro ACP -32019 license_invalid; a causa específica (LIC00X) pode ser consultada em View → Output → Devin ACP.
  • As falhas não ficam em cache: um arquivo renovado passa a valer no próximo turno, sem necessidade de reiniciar.
  • Alguns comandos podem ser executados sem uma licença válida, para que você consiga reparar um host: devin auth status, devin airgap doctor, devin doctor, devin diagnostics, devin models validate e devin version.

Renovar ou substituir uma licença

  1. Gere uma nova licença no portal para o mesmo titular da licença (veja acima). Se a licença já estiver ocupada, peça à sua equipe de suporte que revogue a licença antiga primeiro.
  2. Substitua o arquivo existente em /etc/devin/license.devin-onprem-license (ou no caminho definido em DEVIN_LICENSE_FILE) pelo novo arquivo. Mantenha o arquivo como propriedade da conta que executa o Devin ou do root, com permissão de leitura para essa conta. No Windows, o caminho padrão é C:\ProgramData\Devin\license.devin-onprem-license; substitua o arquivo em uma sessão com privilégios elevados.
  3. Confirme:
Não é necessário reiniciar: a próxima sessão ou o próximo turno já usará o novo arquivo.

Códigos de erro

Todas as falhas de licença são exibidas como LIC00X: <message>, seguidas do caminho verificado e de como alterá-lo. O catálogo completo de todos os namespaces está em Códigos de erro.