Skip to main content
Questa documentazione riguarda le distribuzioni di Devin per il governo federale. Torna alla documentazione di Devin
Le build air-gapped di Devin Desktop e della Devin CLI non prevedono il login tramite cloud. L’accesso è regolato da un file di licenza firmato, che il prodotto convalida interamente offline a ogni avvio. Ogni licenza viene emessa dal portale a un singolo titolare di postazione e consuma una postazione del diritto di licenza air-gapped del tuo team.

Dove si trova la licenza

L’agente incluso nel bundle di Desktop e la CLI standalone leggono lo stesso file. Installalo prima del primo avvio; consulta Installazione → Passaggio 4. Gli utenti di Desktop possono anche installare una licenza dalle impostazioni di Devin: l’agente incluso nel bundle convalida il file offline, non sovrascrive un file di proprietà di un altro utente e registra un evento di audit license_installed. Su Windows, se il file di licenza è di proprietà di un amministratore, un utente standard non può sostituirlo da Desktop (l’installazione viene rifiutata con LIC001), mentre un amministratore sì. Limita l’accesso a C:\ProgramData\Devin\ prima di copiarvi il file.

Emettere una licenza dal portale

  1. Accedi al portale e apri la pagina Team. La sezione Air-gapped licenses mostra quante postazioni sono in uso, il periodo del diritto di licenza e la durata predefinita delle licenze.
  2. Fai clic su Generate license.
  3. Inserisci un’etichetta (ad esempio l’hostname o il nome dell’utente), l’email dell’assegnatario e la durata in giorni. Per impostazione predefinita, la durata corrisponde al valore predefinito del tuo diritto di licenza e non può superare né la durata massima prevista dal diritto di licenza né la fine del relativo periodo; il passaggio di revisione mostra la data di scadenza prevista.
  4. Conferma. Il portale mostra il messaggio License generated e propone l’opzione Download license file. Il file scaricato è il file firmato .devin-onprem-license; trasferiscilo sull’host air-gapped tramite la procedura approvata per i supporti fisici.
La tabella Issued licenses elenca tutte le licenze con il relativo stato (Active, Expiring soon, Expired, Revoked). Da questa tabella puoi scaricare di nuovo una licenza attiva. La revoca o la riemissione di una licenza, così come la liberazione di una postazione quando sono tutte occupate, sono gestite dal tuo team di supporto.

Contenuto del file

Il file è un singolo JSON Web Token in forma compatta (header.payload.signature), firmato con EdDSA (Ed25519). Il campo kid dell’intestazione identifica la chiave pubblica usata per la firma; il prodotto include le chiavi pubbliche di tutti gli ambienti, quindi in fase di convalida non viene recuperato nulla. Claim: I controlli di convalida verificano la firma con la chiave incorporata selezionata tramite kid, l’intervallo nbf/exp (con una tolleranza di 24 ore in entrambe le direzioni per lo sfasamento dell’orologio) e il claim product.

Esaminare una licenza

Verificare l’ID della chiave

Decodifica l’intestazione del JWT e leggi il campo kid. Questo comando su una sola riga funziona sia su Linux sia su macOS: converte base64url in base64 e aggiunge il padding, perché la versione BSD di base64 inclusa in macOS tronca senza alcun avviso l’input privo di padding.
Valori previsti: Se il kid è diverso o il risultato è vuoto, il file non è una licenza emessa per questo prodotto oppure si è danneggiato durante il trasferimento.

Verifica la postazione, l’account e la scadenza

devin auth status funziona anche quando la licenza manca o non è valida, quindi puoi usarlo per diagnosticare il problema:
Identity è l’identità di attribuzione locale (nome utente del sistema operativo più git config user.email); viene registrata nel registro di audit ed è indipendente dalla licenza. Se non è possibile convalidare il file, l’ultima riga diventa invece License: INVALID — LIC00X: <reason>. Il controllo license di devin airgap doctor riporta gli stessi dati di postazione, account e scadenza, e passa a warn nei 30 giorni che precedono la scadenza.

Comportamento all’avvio e alla riconvalida

  • A ogni avvio, la CLI convalida la licenza e stampa una riga su stderr:
    Se la licenza scade entro 30 giorni, viene stampata anche una riga Warning: license expires in N day(s).
  • I processi di lunga durata (l’agente incluso nel bundle di Desktop, la REPL della CLI) verificano nuovamente il file al massimo una volta all’ora, prima di avviare una nuova sessione o un nuovo turn. Il lavoro in corso non viene mai interrotto.
  • Una licenza scaduta da più di 24 ore blocca l’avvio di nuove sessioni e nuovi turn. In Desktop, il pannello della chat mostra l’errore ACP -32019 license_invalid; la causa specifica (LIC00X) è riportata in View → Output → Devin ACP.
  • Gli errori non vengono memorizzati nella cache: un file rinnovato, una volta installato, ha effetto dal turn successivo senza bisogno di riavviare.
  • Alcuni comandi funzionano anche senza una licenza valida, così da poter ripristinare un host: devin auth status, devin airgap doctor, devin doctor, devin diagnostics, devin models validate e devin version.

Rinnovare o sostituire una licenza

  1. Genera dal portale una nuova licenza per lo stesso titolare della postazione (vedi sopra). Se la postazione è già in uso, chiedi prima al tuo team di supporto di revocare la vecchia licenza.
  2. Sovrascrivi il file esistente in /etc/devin/license.devin-onprem-license (o nel percorso indicato in DEVIN_LICENSE_FILE) con quello nuovo. Il file deve restare di proprietà dell’account che esegue Devin, oppure di root con accesso in lettura per tale account. Su Windows il percorso predefinito è C:\ProgramData\Devin\license.devin-onprem-license; sostituisci il file da una sessione con privilegi elevati.
  3. Verifica:
Non è necessario alcun riavvio: il nuovo file viene rilevato alla sessione o al turn successivo.

Codici di errore

Tutti gli errori di licenza vengono visualizzati nel formato LIC00X: <message>, seguiti dal percorso verificato e dalle istruzioni per sovrascriverlo. Il catalogo completo per tutti i namespace è disponibile in Codici di errore.