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

# Lizenzdatei für Air-Gapped Devin

> Installieren, prüfen und erneuern Sie die Offline-Lizenzdatei, die Air-Gapped Devin Desktop und CLI beim Start validieren, inklusive erwarteter Schlüssel-IDs und LIC-Fehlercodes.

> [!NOTE]
>
> Diese Dokumentation gilt für föderale Deployments von Devin. [Zurück zur Devin-Dokumentation](/de/get-started/devin-intro)

Air-Gapped-Builds von Devin Desktop und der Devin CLI haben keine Cloud-Anmeldung. Der Zugriff wird stattdessen über eine **signierte Lizenzdatei** gesteuert, die das Produkt bei jedem Start vollständig offline validiert. Jede Lizenz wird über das Portal für genau einen Sitzplatzinhaber ausgestellt und belegt einen Sitzplatz der Air-Gapped-Berechtigung Ihres Teams.

## Speicherort der Lizenz

| | |
| - | - |
| Standardpfad | `/etc/devin/license.devin-onprem-license` |
| Standardpfad (Windows) | `C:\ProgramData\Devin\license.devin-onprem-license` |
| Überschreibung | `DEVIN_LICENSE_FILE=<path>` |

Der mitgelieferte Desktop-Agent und die eigenständige CLI lesen dieselbe Datei. Installieren Sie sie vor dem ersten Start; siehe [Installation → Schritt 4](/de/federal/air-gapped/install#step-4-place-the-license-and-models-file). Desktop-Nutzer können eine Lizenz auch in den Devin-Einstellungen installieren: Der mitgelieferte Agent validiert die Datei offline, überschreibt keine Datei, die einem anderen Nutzer gehört, und protokolliert ein `license_installed`-Audit-Ereignis. Gehört die Lizenzdatei unter Windows einem Administrator, kann ein Standardnutzer sie nicht über die Desktop-App ersetzen (die Installation wird mit `LIC001` abgelehnt); ein Administrator hingegen schon. [Sichern Sie `C:\ProgramData\Devin\` ab](/de/federal/air-gapped/install#windows-lock-down-the-configuration-folder), bevor Sie die Datei ablegen.

## Lizenz über das Portal ausstellen

1. Melden Sie sich im Portal an und öffnen Sie Ihre **Team**-Seite. Im Abschnitt **Air-gapped licenses** sehen Sie, wie viele Sitzplätze belegt sind, den Berechtigungszeitraum und die Standard-Lizenzdauer.
2. Klicken Sie auf **Generate license**.
3. Geben Sie ein **Label** (zum Beispiel den Hostnamen oder den Namen des Nutzers), die **E-Mail-Adresse der zugewiesenen Person** und die **Dauer in Tagen** ein. Standardmäßig wird die Standarddauer Ihrer Berechtigung übernommen. Die Dauer ist sowohl durch das Maximum Ihrer Berechtigung als auch durch das Ende des Berechtigungszeitraums begrenzt; im Review-Schritt wird das voraussichtliche Ablaufdatum angezeigt.
4. Bestätigen Sie Ihre Eingaben. Das Portal meldet **License generated** und bietet **Download license file** an. Dabei handelt es sich um die signierte Datei `.devin-onprem-license`. Übertragen Sie sie gemäß Ihrem freigegebenen Verfahren für Datenträger auf den air-gapped Host.

Die Tabelle **Issued licenses** führt alle Lizenzen mit ihrem Status auf (**Active**, **Expiring soon**, **Expired**, **Revoked**). Aktive Lizenzen können Sie über diese Tabelle erneut herunterladen. Das Widerrufen oder erneute Ausstellen einer Lizenz sowie das Freigeben eines Sitzplatzes, wenn alle Sitzplätze belegt sind, übernimmt Ihr Support-Team.

## Inhalt der Datei

Die Datei besteht aus einem einzelnen JSON Web Token in kompakter Form (`header.payload.signature`), signiert mit EdDSA (Ed25519). Das Feld `kid` im Header gibt den öffentlichen Schlüssel an, mit dem das Token signiert wurde. Das Produkt liefert die öffentlichen Schlüssel aller Umgebungen mit, sodass bei der Validierung nichts abgerufen werden muss. Claims:

| Claim | Bedeutung |
| - | - |
| `license_id` | Eindeutige ID dieser Lizenz |
| `account_id` | Ihr Konto |
| `seat_label` | Inhaber des Sitzplatzes, in der Regel eine E-Mail-Adresse |
| `iat` / `nbf` | Beginn der Gültigkeit (Unix-Sekunden) |
| `exp` | Ende der Gültigkeit (Unix-Sekunden) |
| `product` | Immer `devin-onprem` |
| `entitlements` | Liste von Berechtigungs-Strings; kann leer sein |

Bei der Validierung werden die Signatur anhand des über `kid` ausgewählten eingebetteten Schlüssels, das Zeitfenster `nbf`/`exp` mit einer Toleranz für Uhrenabweichungen von 24 Stunden in beide Richtungen sowie der Claim `product` geprüft.

## Lizenz prüfen

### Schlüssel-ID prüfen

Dekodieren Sie den JWT-header und lesen Sie `kid` aus. Dieser Einzeiler funktioniert sowohl unter Linux als auch unter macOS: Er wandelt base64url in base64 um und ergänzt das Padding, da das mit macOS ausgelieferte BSD-`base64` Eingaben ohne Padding stillschweigend abschneidet.

```sh theme={null}
h=$(cut -d. -f1 < /etc/devin/license.devin-onprem-license | tr '_-' '/+')
while [ $(( ${#h} % 4 )) -ne 0 ]; do h="$h="; done
printf '%s' "$h" | base64 -d | jq -r .kid
```

```text theme={null}
fedstart-key-1
```

Erwartete Werte:

| Portal-Umgebung | Erwarteter `kid` |
| - | - |
| FedStart-Produktion (`windsurf.fedstart.com`) | `fedstart-key-1` |
| FedStart-Staging | `fedstart-staging-key-1` |

Ein abweichender `kid` oder ein leeres Ergebnis bedeutet, dass die Datei entweder keine für dieses Produkt ausgestellte Lizenz ist oder bei der Übertragung beschädigt wurde.

### Sitzplatz, Konto und Ablaufdatum prüfen

`devin auth status` funktioniert auch dann, wenn die Lizenz fehlt oder ungültig ist. Daher können Sie den Befehl zur Fehlerdiagnose verwenden:

```sh theme={null}
devin auth status
```

```text theme={null}
Air-gapped build: access is license-based.
  License file:  /etc/devin/license.devin-onprem-license
  Identity:      alice <alice@example.gov>
  Seat:          alice@example.gov
  Account:       acme
  Expires:       2027-03-01 (340 day(s) left)
```

`Identity` ist die lokale Identität für die Urheberangabe (OS-Benutzername plus `git config user.email`); sie wird im Audit-Protokoll aufgezeichnet und ist unabhängig von der Lizenz. Kann die Datei nicht validiert werden, lautet die letzte Zeile stattdessen `License:       INVALID — LIC00X: <reason>`.

Die `license`-Prüfung in `devin airgap doctor` meldet denselben Sitzplatz, dasselbe Konto und dasselbe Ablaufdatum und springt in den letzten 30 Tagen vor Ablauf auf `warn` um.

## Verhalten beim Start und bei der erneuten Validierung

* Bei jedem Start validiert die CLI die Lizenz und gibt eine Zeile auf stderr aus:

  ```text theme={null}
  Devin on-prem license: seat alice@example.gov (account acme), expires 2027-03-01. Local user: alice <alice@example.gov>.
  ```

  Läuft die Lizenz innerhalb der nächsten 30 Tage ab, folgt eine Zeile `Warning: license expires in N day(s)`.
* Langlaufende Prozesse (der in Desktop gebündelte Agent, die CLI-REPL) prüfen die Datei höchstens einmal pro Stunde erneut, und zwar **vor dem Start einer neuen Sitzung oder Eingabe**. Laufende Vorgänge werden nie unterbrochen.
* Ist eine Lizenz seit mehr als 24 Stunden abgelaufen, werden neue Sitzungen und Eingaben blockiert. In Desktop zeigt der Chat-Bereich den ACP-Fehler `-32019 license_invalid` an; die genaue Ursache (`LIC00X`) finden Sie unter **View → Output → Devin ACP**.
* Fehlschläge werden nicht zwischengespeichert: Eine erneuerte Datei wird nach der Installation ab der nächsten Eingabe wirksam, ganz ohne Neustart.
* Einige Befehle funktionieren auch ohne gültige Lizenz, damit Sie einen Host reparieren können: `devin auth status`, `devin airgap doctor`, `devin doctor`, `devin diagnostics`, `devin models validate` und `devin version`.

## Lizenz verlängern oder ersetzen

1. Generieren Sie im Portal eine neue Lizenz für denselben Sitzplatzinhaber (siehe oben). Wenn der Sitzplatz bereits belegt ist, bitten Sie Ihr Support-Team, zuerst die alte Lizenz zu widerrufen.
2. Überschreiben Sie die vorhandene Datei unter `/etc/devin/license.devin-onprem-license` (oder unter dem in `DEVIN_LICENSE_FILE` angegebenen Pfad) mit der neuen Datei. Die Datei muss weiterhin dem Konto gehören, unter dem Devin ausgeführt wird, oder Root gehören und für dieses Konto lesbar sein. Unter Windows lautet der Standardpfad `C:\ProgramData\Devin\license.devin-onprem-license`; ersetzen Sie die Datei in einer Sitzung mit erhöhten Rechten.
3. Überprüfen Sie das Ergebnis:

   ```sh theme={null}
   devin auth status | grep Expires
   ```

   ```text theme={null}
     Expires:       2028-03-01 (705 day(s) left)
   ```

Ein Neustart ist nicht erforderlich – die neue Datei wird ab der nächsten Sitzung oder Eingabe verwendet.

## Fehlercodes

Alle Lizenzfehler werden als `LIC00X: <message>` ausgegeben, gefolgt vom geprüften Pfad und einem Hinweis, wie Sie ihn überschreiben können.

| Code | Bedeutung | Vorgehensweise |
| - | - | - |
| `LIC001` | Lizenzdatei fehlt oder ist nicht lesbar | Legen Sie die Datei unter dem Standardpfad ab oder setzen Sie `DEVIN_LICENSE_FILE`; prüfen Sie die Dateiberechtigungen für den Nutzer, unter dem Devin ausgeführt wird |
| `LIC002` | Fehlerhafte Datei: kein gültiges EdDSA-JWT oder kein `kid` im header | Laden Sie die Lizenz erneut aus dem Portal herunter; stellen Sie sicher, dass die Datei unverändert übertragen wurde (kein angehängter Zeilenumbruch, kein Zeilenumbruch im Inhalt, keine geänderte Kodierung) |
| `LIC003` | Signaturprüfung fehlgeschlagen | Die Nutzdaten wurden nach dem Signieren verändert. Laden Sie die Lizenz erneut herunter |
| `LIC004` | Unbekannter `kid` (kein passender eingebetteter öffentlicher Schlüssel) | Prüfen Sie den `kid` wie oben beschrieben. Entweder wurde die Lizenz von einer anderen Umgebung ausgestellt, oder Ihr build ist älter als eine Schlüsselrotation; installieren Sie das aktuelle release |
| `LIC005` | Abgelaufen und Kulanzfrist von 24 Stunden überschritten | Erneuern Sie die Lizenz |
| `LIC006` | Noch nicht gültig (Ausstellungszeitpunkt liegt mehr als 24 Stunden in der Zukunft) | Prüfen Sie die Systemuhr des Hosts; falls sie korrekt ist, wenden Sie sich an Ihr Support-Team |
| `LIC007` | Falscher `product`-Claim (nicht `devin-onprem`) | Die Datei ist keine air-gapped Devin-Lizenz. Laden Sie sie erneut aus dem Portal herunter |

Den vollständigen Katalog für alle Namespaces finden Sie unter [Fehlercodes](/de/federal/air-gapped/error-codes).


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