Skip to main content
Cette documentation concerne les déploiements fédéraux de Devin. Retour à la documentation de Devin
Les builds en air gap de Devin Desktop et de la Devin CLI ne nécessitent aucune connexion au cloud. L’accès est contrôlé par un fichier de licence signé, que le produit valide entièrement hors ligne à chaque démarrage. Chaque licence est attribuée depuis le portail à un seul utilisateur et consomme une licence du quota en air gap de votre équipe.

Emplacement de la licence

L’agent intégré à Desktop et la CLI autonome lisent le même fichier. Installez-le avant le premier lancement ; voir Installation → Étape 4. Les utilisateurs de Desktop peuvent également installer une licence depuis les paramètres de Devin : l’agent intégré valide alors le fichier hors ligne, refuse d’écraser un fichier appartenant à un autre utilisateur et consigne un événement d’audit license_installed. Sous Windows, si le fichier de licence appartient à un administrateur, un utilisateur standard ne peut pas le remplacer depuis Desktop (l’installation est refusée avec l’erreur LIC001), contrairement à un administrateur. Verrouillez C:\ProgramData\Devin\ avant d’y placer le fichier.

Émettre une licence depuis le portail

  1. Connectez-vous au portail et ouvrez votre page Team. La section Air-gapped licenses indique le nombre de licences utilisées, la période de droits et la durée de licence par défaut.
  2. Cliquez sur Generate license.
  3. Saisissez un libellé (par exemple le hostname ou le nom de l’utilisateur), l’e-mail du responsable et la durée en jours. Par défaut, la durée correspond à celle définie dans vos droits ; elle est plafonnée à la fois par la durée maximale autorisée par vos droits et par la fin de la période de droits. L’étape de revue affiche la date d’expiration prévue.
  4. Confirmez. Le portail affiche License generated et propose Download license file. Le fichier téléchargé est le fichier signé .devin-onprem-license ; transférez-le vers l’hôte en air gap via votre procédure approuvée de transfert sur support amovible.
Le tableau Issued licenses répertorie toutes les licences avec leur statut (Active, Expiring soon, Expired, Revoked). Vous pouvez retélécharger une licence active depuis ce tableau. La révocation ou la réémission d’une licence, ainsi que la libération d’une licence lorsque toutes les licences sont occupées, sont prises en charge par votre équipe d’assistance.

Contenu du fichier

Le fichier contient un unique JSON Web Token au format compact (header.payload.signature), signé avec EdDSA (Ed25519). Le champ kid de l’en-tête identifie la clé publique ayant servi à la signature ; le produit embarque la clé publique de chaque environnement, si bien qu’aucune clé n’est récupérée au moment de la validation. Revendications : La validation vérifie la signature à l’aide de la clé embarquée désignée par kid, la fenêtre nbf/exp (avec une tolérance de décalage d’horloge de 24 heures dans chaque sens) ainsi que la revendication product.

Inspecter une licence

Vérifier l’identifiant de la clé

Décodez l’en-tête du JWT et lisez la valeur kid. Cette commande d’une ligne fonctionne aussi bien sous Linux que sous macOS : elle convertit le base64url en base64 et ajoute le remplissage nécessaire, car la version BSD de base64 fournie avec macOS tronque sans avertissement les entrées dépourvues de remplissage.
Valeurs attendues : Si le kid est différent ou si le résultat est vide, le fichier n’est pas une licence émise pour ce produit, ou il a été corrompu lors du transfert.

Vérifier la licence, le compte et la date d’expiration

devin auth status fonctionne même lorsque la licence est absente ou invalide : vous pouvez donc l’utiliser pour diagnostiquer le problème :
Identity correspond à l’identité locale utilisée pour la mention d’auteur (nom d’utilisateur du système d’exploitation et git config user.email) ; elle est enregistrée dans le journal d’audit et ne dépend pas de la licence. Si le fichier ne peut pas être validé, la dernière ligne est remplacée par License: INVALID — LIC00X: <reason>. La vérification license de devin airgap doctor affiche la même licence, le même compte et la même date d’expiration, et passe à warn dans les 30 jours précédant l’expiration.

Comportement au démarrage et lors de la revalidation

  • À chaque démarrage, la CLI valide la licence et affiche une ligne sur stderr :
    Si la licence expire dans les 30 jours, une ligne Warning: license expires in N day(s) s’affiche à la suite.
  • Les processus de longue durée (l’agent fourni avec Desktop, le REPL de la CLI) revérifient le fichier au plus une fois par heure, avant de démarrer une nouvelle session ou un nouveau tour. Le travail en cours n’est jamais interrompu.
  • Une licence expirée depuis plus de 24 heures bloque les nouvelles sessions et les nouveaux tours. Dans Desktop, le panneau de chat affiche l’erreur ACP -32019 license_invalid ; la cause précise (LIC00X) est indiquée dans View → Output → Devin ACP.
  • Les échecs ne sont pas mis en cache : un fichier renouvelé prend effet dès le tour suivant, sans redémarrage.
  • Quelques commandes fonctionnent sans licence valide afin de vous permettre de réparer un hôte : devin auth status, devin airgap doctor, devin doctor, devin diagnostics, devin models validate et devin version.

Renouveler ou remplacer une licence

  1. Générez depuis le portail une nouvelle licence pour le même titulaire de licence (voir ci-dessus). Si la licence est déjà utilisée, demandez d’abord à votre équipe d’assistance de révoquer l’ancienne.
  2. Remplacez le fichier existant par le nouveau à l’emplacement /etc/devin/license.devin-onprem-license (ou au chemin défini dans DEVIN_LICENSE_FILE). Le fichier doit appartenir au compte qui exécute Devin, ou à root avec un accès en lecture pour ce compte. Sous Windows, le chemin par défaut est C:\ProgramData\Devin\license.devin-onprem-license ; remplacez le fichier depuis une session avec privilèges élevés.
  3. Vérifiez :
Aucun redémarrage n’est nécessaire : le nouveau fichier est pris en compte dès la prochaine session ou le prochain tour.

Codes d’erreur

Tous les échecs liés à la licence s’affichent sous la forme LIC00X: <message>, suivis du chemin vérifié et de la manière de le remplacer. Le catalogue complet, tous espaces de noms confondus, est disponible dans Codes d’erreur.