# Die CLI beziehen

Nach dieser Anleitung liegt die Kommandozeile `szenera` gebaut auf Ihrem Rechner, und `szenera --help` zeigt alle Befehle. Sie erfahren zuerst, was es heute an Bezugswegen gibt — und was nicht.

> **Typ:** anleitung
> **Für wen:** Entwicklerinnen und Entwickler, die Vorgänge lieber mit einem Befehl als mit einem curl-Aufruf anstoßen
> **Voraussetzung:** Zugang zum Quellbaum der Plattform, Node ab Version 24 und pnpm; ohne Quellbaum genügt curl gegen dieselben Routen
> **Ort:** Kommandozeile

## Der Ist-Zustand

Die Kommandozeile ist das Paket `@szenera/cli` im Quellbaum der Plattform. Es trägt die Fassung `0.1.0`, ist nicht auf npm veröffentlicht und liegt keinem Release als Download bei — die Release-Abläufe der Plattform erzeugen Container-Abbilder und Geräte-Software, aber kein CLI-Artefakt. Wer den Quellbaum hat, baut die CLI daraus. Wer ihn nicht hat, arbeitet mit curl gegen dieselben Routen: Jeder Befehl ist ein API-Aufruf, und die Befehlsseiten nennen zu jedem Befehl die Route und das Recht, das er braucht. Über eine künftige Veröffentlichung sagt diese Seite nichts; sie beschreibt, was heute gilt.

Das Paket enthält die Befehle für Organisationen. Die Befehle des Plattformbetriebs gehören zu einem eigenen, internen Werkzeug und sind nicht Teil von `szenera`.

## Schritte

1. Installieren Sie die Abhängigkeiten des Quellbaums vollständig, nie nur für ein Teilpaket:

   ```bash
   pnpm install
   ```

2. Bauen Sie das Paket. Der Bau legt `dist/` samt der ausführbaren Datei `dist/main.js` an:

   ```bash
   pnpm --filter @szenera/cli build
   ```

3. Rufen Sie die gebaute Datei direkt auf. Ohne Befehl und mit `--help` zeigt sie die Übersicht aller Befehle aus dem Register:

   ```bash
   node packages/cli/dist/main.js --help
   ```

4. Verknüpfen Sie die Datei optional als `szenera`, damit die Beispiele der übrigen Seiten wörtlich gelten. Das Paket erklärt `szenera` als Programmnamen für `dist/main.js`; ein Symlink in ein Verzeichnis Ihres Suchpfads genügt:

   ```bash
   ln -s "$(pwd)/packages/cli/dist/main.js" ~/.local/bin/szenera
   szenera --help
   ```

## Optionen

**Zwei Aufrufformen im Überblick:**

```bash
node packages/cli/dist/main.js <befehl>    # gebaut
szenera <befehl>                            # verknüpft
```

Wer die Exit-Codes auswertet — in einem Skript, in der CI —, ruft die Datei direkt auf und nie über `pnpm run`: `pnpm run` verschluckt Exit-Codes und meldet jeden Fehlschlag als `1`.

## Ergebnis prüfen

- `szenera --help` (oder `node packages/cli/dist/main.js --help`) listet 136 Befehle in Gruppen wie `asset`, `scene`, `device`, `api` und endet mit dem Block „Überall gültig“ (`--help`, `--profile=<name>`, `--json`, `--table`, `--raw`).
- `szenera <befehl> --help` zeigt Stellungen, Flaggen und Beispiele eines Befehls. Beides kommt aus dem Register, nicht aus gepflegtem Text; `--help` meldet sich nie an und braucht kein Profil.
- In der Sitzungsliste der API gibt sich die CLI später als `szenera-cli/0.1.0` zu erkennen — das ist die Fassung, die auch in Fehlermeldungen zum Vertrag steht.

## Wenn etwas nicht klappt

| Symptom | Bedeutung | Lösung |
|---|---|---|
| `node packages/cli/dist/main.js` meldet, die Datei existiere nicht | Der Bau fehlt; `dist/` entsteht erst durch `pnpm --filter @szenera/cli build`. | Schritt 2 ausführen. |
| Der Aufruf bricht mit einem Syntax- oder Modulfehler ab, bevor ein Befehl läuft | Die Node-Version ist zu alt; der Quellbaum verlangt Node ab 24. | Node 24 oder neuer verwenden, dann neu bauen. |
| Ein Skript sieht bei jedem Fehler Exit `1` | Der Aufruf läuft über `pnpm run`, und das verschluckt die Codes. | Die Datei direkt über `node` aufrufen; siehe [Ausgabe als JSON und Exit-Codes](/de/cli/output-and-exit-codes). |
| `szenera health` endet mit „Keine Konfiguration gefunden" | Die CLI läuft, weiß aber nicht, mit welcher Umgebung sie sprechen soll. | Ein Profil anlegen oder `SZENERA_BASE_URL` setzen; siehe [Profile und Ausweis](/de/cli/profiles-and-credentials). |
| `szenera` kennt einen Befehl wie `tenant list` oder `incident create` nicht | Das ist ein Befehl des Plattformbetriebs; er gehört nicht zu `szenera`. | Siehe [Befehle für den Plattformbetrieb](/de/cli/commands-platform-operations). |

## Weiterführendes

- [Profile und Ausweis](/de/cli/profiles-and-credentials)
- [Der erste Aufruf mit curl](/de/getting-started/first-call)
- [Befehle für Ihre Organisation](/de/cli/commands-organization)
