CLI-Referenz
Alle Befehle von aictl mit Optionen, Standardwerten und Beispielen, gruppiert wie in aictl --help. Für die meisten Aufgaben brauchst du nur wenige davon.
25 Min. Lesezeit Kapitel 19
Allgemeines#
Hilfe und Tippfehler#
aictl --helpzeigt alle Befehle, gruppiert nach Aufgabe.aictl <befehl> --helpzeigt Optionen und Beispiele eines Befehls, zum Beispielaictl extension install --help.aictlohne Befehl zeigt ebenfalls die Hilfe.- Vertippst du dich, schlägt
aictlden passenden Befehl vor:
$ aictl statuss
error: unknown command "statuss" for "aictl"
Did you mean this?
status
- Bei einer unbekannten Option weist
aictlaufaictl --helphin. aictl --versiongibt dasselbe aus wieaictl version, ohne die Liste der Erweiterungen.- Ein Befehl
completionfür die Befehlsergänzung in der Shell existiert, wird in der Hilfe aber nicht aufgeführt.
Kurzformen#
Viele Befehle haben eine zweite Schreibweise:
| Befehl | Kurzform |
|---|---|
ls |
list |
rm |
remove (bei extension umgekehrt: remove und rm) |
model install |
model pull |
doctor |
diagnose |
Wann du sudo brauchst#
Auf dem Hauptserver brauchen fast alle Befehle Administratorrechte. aictl prüft das vor dem Start und schlägt den passenden Aufruf vor:
error: this command must run as root — …
try: sudo aictl status
| Befehle | sudo nötig? |
|---|---|
aictl --help, help, version, extension lint |
nein |
status, license info, license check, auth info, brand show, update status, spec show, extension override lint |
nein für die Person, die install mit sudo aufgerufen hat und dabei freigeschaltet wurde (siehe unten), sonst ja |
alle anderen, auch reine Anzeigen wie model ls, node ls, extension ls, logs, doctor |
ja |
Am Ende von install erhält die Person, die den Befehl mit sudo aufgerufen hat, über eine Systemgruppe Lesezugriff auf die oben genannten Befehle. Damit das wirkt, musst du dich neu am Server anmelden. Diese Freigabe ist gleichwertig mit Administratorrechten und gilt dauerhaft. Rückgängig machst du sie mit sudo gpasswd -d <benutzer> <gruppe>, die Gruppe nennt die Ausgabe von install.
Ausgabe#
- Fortschrittsmeldungen erscheinen auf der Fehlerausgabe (stderr):
==>für einen Schritt, eingerückte Zeilen für Details,[ ok ],[warn]underror:. - Berichte wie
status,doctor, Tabellen und JSON erscheinen auf der Standardausgabe (stdout). So kannst du sie in Dateien umleiten oder weiterverarbeiten. - Farben gibt es nur, wenn die Ausgabe ein Terminal ist. Mit der Umgebungsvariable
NO_COLORschaltest du sie ganz ab.
Exit-Codes#
| Code | Bedeutung |
|---|---|
0 |
Erfolg. Warnungen ([warn]) ändern daran nichts. |
1 |
Fehler, fehlgeschlagene Prüfung oder abgebrochene Eingabe. Andere Codes gibt es nicht. |
Rückfragen und der Betrieb ohne Terminal#
Rückfragen lesen direkt vom Terminal, nicht von der Standardeingabe. Eine umgeleitete Eingabe (< /dev/null) unterdrückt sie deshalb nicht, nur das Fehlen eines Terminals, etwa in einem Skript, einem geplanten Task oder einer automatischen Einrichtung.
Ohne Terminal gilt:
| Situation | Verhalten |
|---|---|
Lizenzschlüssel bei install |
Fehler, ausser --license ist angegeben oder der Server ist bereits aktiviert. |
| Name des Hauptservers | local |
| Domain und Zertifikat | nicht eingerichtet, Zugriff nur direkt auf dem Server |
| E-Mail des ersten Administrators | [email protected] |
| Branding | bleibt leer |
| Fehlende DNS-Einträge (nur Cloudflare mit hinterlegtem Schlüssel) | werden automatisch angelegt |
extension install, extension update |
laufen ohne Bestätigung, empfohlene Modelle werden installiert, der Rechner wird automatisch gewählt, Zugangsdaten werden nicht abgefragt |
restore, uninstall, extension remove, extension prune |
Fehler, ausser --yes bzw. -y ist angegeben |
Esc oder Ctrl+C in einer Rückfrage bricht den Befehl ab. Bereits erledigte Schritte bleiben erhalten, alle Befehle lassen sich gefahrlos wiederholen.
Gleichzeitige Befehle#
Befehle, die etwas verändern, sperren die Installation, solange sie laufen. Ein zweiter solcher Befehl wartet und nennt, worauf er wartet:
==> Waiting for `aictl update` (pid 1234, running for 3m) to finish…
Brichst du das Warten mit Ctrl+C ab, wurde nichts verändert. In den Tabellen unten steht bei jedem Befehl, ob er sperrt.
Auch eine geplante Aufgabe einer Erweiterung kann der Grund fürs Warten sein. Sie hält nur ihre eigene Erweiterung auf: Befehle, die Erweiterungen verändern oder die Plattform anhalten, warten, bis sie fertig ist. restore, uninstall und extension remove warten nicht, sondern brechen die laufende Aufgabe ab.
Lizenz-Sperre#
Ist die Lizenz eingeschränkt, abgelaufen oder ungültig, verweigern Befehle, die etwas Neues einspielen, den Dienst. Die laufende Plattform bleibt davon unberührt. Betroffen sind update, apply, model install, extension install, extension update sowie start und restart, wenn sie fehlende Teile neu aufbauen müssen. Mehr dazu unter Lizenz.
Einrichten und Lebenszyklus#
install#
Installiert die Plattform oder bringt eine bestehende Installation in Ordnung. Beliebig oft wiederholbar: Ein erneuter Aufruf übernimmt die gespeicherten Einstellungen, und jede angegebene Option ändert nur genau diesen Wert.
sudo aictl install [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--license <schlüssel> |
– | Lizenzschlüssel LIC-XXXX-XXXX-XXXX-XXXX, in Grossbuchstaben. Ohne Angabe wird der Schlüssel verwendet, mit dem der Server bereits aktiviert ist. Nur ein neuer Server fragt danach. |
--base-domain <domain> |
– | Domain, unter der die Plattform erreichbar ist, zum Beispiel ki.firma.ch. Ohne Domain nur direkter Zugriff auf dem Server. |
--internal |
aus | Betrieb nur im internen Netz. |
--external |
aus | Betrieb aus dem Internet erreichbar (Standard), nimmt --internal zurück. |
--tls-mode auto|provided |
– | auto: automatisches Zertifikat von Let's Encrypt. provided: eigenes Zertifikat, das du vorher mit proxy set-cert hinterlegst. |
--dns-provider <anbieter> |
– | DNS-Anbieter für automatische Zertifikate, zum Beispiel cloudflare. Den Zugangsschlüssel setzt du danach mit secret set. |
--acme-email <e-mail> |
– | Kontaktadresse für automatische Zertifikate. |
--auth-admin-email <e-mail> |
Rückfrage, sonst [email protected] |
Anmeldeadresse des ersten Administrators. Wirkt nur bei der allerersten Installation. |
--brand-name <name> |
Rückfrage | Firmenname auf der Anmeldeseite, im Chat und in den Erweiterungen. |
--brand-logo-url <url> |
Rückfrage | Öffentliche Adresse des Logos, PNG oder JPEG. |
--brand-favicon-url <url> |
Rückfrage | Öffentliche Adresse des Favicons, PNG oder JPEG. |
--node-name <name> |
Rückfrage, sonst local |
Name der Modell-Engine des Hauptservers. Kleinbuchstaben, Ziffern, Bindestriche. |
--bind-address <ip> |
127.0.0.1 |
Netzwerkadresse der direkten Zugänge zu den Bausteinen. 0.0.0.0 öffnet sie für alle Netze, ohne Anmeldung. Nur für Entwicklung. |
--spec <datei> |
– | Startet von einer Einstellungsdatei. Sie ersetzt die gespeicherten Einstellungen vollständig. Fehlen Domain oder installierte Erweiterungen, bricht die Installation ab. |
--health-wait <dauer> |
10m |
Wie lange auf den Start der Plattform gewartet wird. Die erste Installation braucht einige Minuten. |
- sudo: ja. Sperrt: ja. Lizenz: aktiviert die Lizenz bei jedem Aufruf. Ist der Lizenzserver nicht erreichbar, läuft eine erneute Installation mit der bestehenden, noch gültigen Aktivierung weiter. Eine erste Aktivierung braucht den Lizenzserver.
- Zwei weitere Optionen für Spezialfälle (Netzwerkadresse der Modell-Engine, Lesezugriff ohne sudo abschalten) zeigt
sudo aictl install --help. Erklärt sind sie in der Entwicklerdokumentation im Kapitel «Stack anpassen». - Gibst du eine der Optionen
--base-domain,--internal,--external,--tls-mode,--dns-provideroder--acme-emailan, entfallen alle Rückfragen zu Domain und Zertifikat. - Mit
-als Wert entfernst du eine Einstellung, zum Beispiel--base-domain -. Domain und DNS-Anbieter werden wie in der Rückfrage geprüft. - Ein leerer Wert wie
--base-domain ""löscht nichts. Um eine Domain zu entfernen, passt du die Einstellungsdatei an. - Am Ende zeigt
installeine Zusammenfassung mit den Adressen und dem Passwort des ersten Administrators. Bleibt eine Prüfung rot, endet der Befehl mit Code 1.
# Interaktiv, fragt nach dem Lizenzschlüssel
sudo aictl install
# Unbeaufsichtigt, mit Domain und automatischem Zertifikat
sudo aictl install --license LIC-XXXX-XXXX-XXXX-XXXX \
--base-domain ki.firma.ch --tls-mode auto --dns-provider cloudflare
Details: Installation.
update#
Prüft, ob es eine neue Version von aictl gibt, aktualisiert sich bei Bedarf selbst und bringt danach die Plattform auf den gewünschten Stand. Deine Daten bleiben erhalten.
sudo aictl update [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--dry-run |
aus | Zeigt nur, ob eine neue Version bereitsteht und welche Bausteine sich ändern würden. Ändert nichts. |
--force |
aus | Führt den vollständigen Abgleich auch dann aus, wenn es nichts Neues gibt. |
--pull |
aus | Lädt neue Fassungen der Plattform-Bestandteile vorab herunter. |
--spec <datei> |
gespeicherte Einstellungen | Übernimmt eine neue Einstellungsdatei. Sie ersetzt die gespeicherte vollständig: Was darin fehlt, fällt auf den Standard zurück. Fehlen Domain oder installierte Erweiterungen, bricht das Update ab. |
--health-wait <dauer> |
10m |
Wie lange auf den Start gewartet wird. |
- sudo: ja. Sperrt: ja, nach der Selbstaktualisierung. Lizenz: der Abgleich ist gesperrt, wenn die Lizenz eingeschränkt ist.
- Gibt es keine neue Version und haben sich die Einstellungen nicht geändert, meldet
update«nothing to do» und startet nichts neu.applygleicht in diesem Fall trotzdem ab,--forceebenso. - Erweiterungen bleiben auf ihrer Version. Neue Versionen holst du mit
extension update.
sudo aictl update --dry-run
sudo aictl update
update enable
Schaltet automatische Updates ein. Der Hintergrunddienst prüft im gewählten Rhythmus und führt bei einer neuen Version aictl update aus.
sudo aictl update enable [--interval <dauer>]
| Option | Standard | Bedeutung |
|---|---|---|
--interval <dauer> |
7d |
Prüfrhythmus, zum Beispiel 24h, 3d oder 2w. Mindestens 1h. |
Die erste Prüfung erfolgt kurz nach dem Einschalten. sudo: ja.
update disable
Schaltet automatische Updates aus. Die Plattform läuft unverändert weiter. sudo: ja.
update status
Zeigt, ob automatische Updates aktiv sind, wann zuletzt geprüft wurde und wann die nächste Prüfung fällig ist. sudo: ja.
backup#
Schreibt ein vollständiges Backup in einen Ordner. Plattform und Erweiterungen werden dafür kurz angehalten und danach wieder gestartet.
sudo aictl backup [--backup-dir <ordner>] [--keep <anzahl>] [--skip-space-check]
| Option | Standard | Bedeutung |
|---|---|---|
--backup-dir <ordner> |
~/aictl-backup-<zeitstempel> |
Zielordner. Mit sudo liegt ~ im Heimverzeichnis von root, also /root. Verwende immer einen neuen, leeren Ordner. |
--keep <anzahl> |
0 (alle behalten) |
Löscht danach ältere Backups dieses Servers im selben übergeordneten Ordner und behält die neuesten, das eben geschriebene eingerechnet. Details: Alte Backups aufräumen. |
--skip-space-check |
aus | Schreibt das Backup, auch wenn am Ziel weniger Platz frei ist als alle Daten unkomprimiert, der Datenbankexport und 1 GiB Reserve brauchen. |
- sudo: ja. Sperrt: ja.
- Am Ende steht der Befehl zum Wiederherstellen in der Ausgabe.
sudo aictl backup --backup-dir /mnt/backup/ki-$(date +%F)
Details: Backup und Wiederherstellung.
restore#
Stellt eine Installation aus einem Backup-Ordner wieder her. Überschreibt alle aktuellen Daten.
sudo aictl restore <backup-ordner> [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--skip-current-backup |
aus | Sichert den aktuellen Stand vorher nicht. |
--skip-space-check |
aus | Sichert den aktuellen Stand auch, wenn die Platzprüfung von backup es ablehnen würde. |
-y, --yes |
aus | Bestätigt ohne Rückfrage und sichert den aktuellen Stand ohne Rückfrage. |
--health-wait <dauer> |
10m |
Wie lange auf den Start gewartet wird. |
- sudo: ja. Sperrt: ja, nach der Bestätigung.
- Vor dem Überschreiben bietet
restoreein Backup des aktuellen Stands an. Dieses landet immer im Standardordner~/aictl-backup-<zeitstempel>. - Ein abgebrochenes
restorewiederholst du mit demselben Befehl.statusweist darauf hin.
sudo aictl restore /mnt/backup/ki-2026-10-01
uninstall#
Erstellt ein Backup und entfernt danach die Plattform. Ohne --keep-data werden alle Daten, die Einstellungen und die Lizenzaktivierung gelöscht.
sudo aictl uninstall [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--backup-dir <ordner> |
~/aictl-backup-<zeitstempel> |
Zielordner des Backups. Er darf nicht in /etc/aictl oder /var/lib/aictl liegen. |
--keep-data |
aus | Entfernt nur die laufenden Programme. Daten, Einstellungen und Lizenz bleiben. |
--skip-backup |
aus | Erstellt vorher kein Backup. |
--skip-space-check |
aus | Erstellt das Backup, auch wenn die Platzprüfung von backup es ablehnen würde. |
-y, --yes |
aus | Bestätigt ohne Rückfrage. |
- sudo: ja. Sperrt: ja.
- Nicht entfernt werden: das Programm
aictl, die Modell-Engine mit ihren Modellen und alle Backups. - Ohne
--keep-datagibt der Befehl die Lizenz auf dem Lizenzserver frei, damit du sie auf einem anderen Server aktivieren kannst. Schlägt das fehl, warnt er und entfernt die Plattform trotzdem. - Auf einem Modell-Rechner meldet
uninstallden Rechner beim Hauptserver ab, macht die Modell-Engine wieder nur auf dem Rechner selbst erreichbar und löscht die Einstellungen. Ein Backup gibt es dort nicht,--keep-dataist nicht erlaubt. Die Modell-Engine und ihre Modelle bleiben.
sudo aictl uninstall
sudo aictl uninstall --keep-data
Betrieb#
apply#
Übernimmt geänderte Einstellungen, zum Beispiel nach proxy hostname, secret set, proxy set-cert oder brand edit. Nur Bausteine, deren Konfiguration sich geändert hat, werden neu gestartet. Holt keine neue Version und übernimmt keine neue Einstellungsdatei.
sudo aictl apply [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--bind-address <ip> |
aktueller Wert | Ändert die Netzwerkadresse der direkten Zugänge: 127.0.0.1 nur lokal, 0.0.0.0 alle Netze. |
--health-wait <dauer> |
10m |
Wie lange auf den Start gewartet wird. |
- sudo: ja. Sperrt: ja. Lizenz: gesperrt, wenn die Lizenz eingeschränkt ist.
applybietet an, DNS-Einträge für neu veröffentlichte Adressen anzulegen.- Ein mit
stopangehaltener Betrieb wird durchapplywieder gestartet.
sudo aictl secret set MEIN_TOKEN
sudo aictl apply
start, stop, restart#
Startet, stoppt oder startet die Plattform neu, ohne etwas zu entfernen.
sudo aictl stop [dienst|erweiterung|erweiterung/dienst …]
sudo aictl start [dienst|erweiterung|erweiterung/dienst …]
sudo aictl restart [dienst|erweiterung|erweiterung/dienst …]
Ohne Namen betrifft der Befehl die ganze Plattform inklusive Erweiterungen:
stophält alles an und merkt sich das. Die Plattform bleibt auch über Neustarts des Servers hinweg aus, bis dustartausführst. Der Hintergrunddienst läuft weiter.starthebt den Stopp auf und startet alles wieder. Fehlen Teile, bautstartsie neu auf. Das ist dann lizenzgesperrt und dauert länger.restarthebt einen Stopp ebenfalls auf und startet alles neu.
Mit Namen betrifft der Befehl nur diese Dienste und gilt nur vorübergehend:
| Name | Bedeutung |
|---|---|
<dienst> |
ein Baustein der Plattform, mit dem Namen, den sudo aictl status im Abschnitt «Core services» anzeigt |
<erweiterung> |
alle Dienste einer Erweiterung, zum Beispiel protocol |
<erweiterung>/<dienst> |
ein Dienst einer Erweiterung, so wie status ihn anzeigt |
Ein unbekannter Name führt zu einer Fehlermeldung, die alle gültigen Namen auflistet.
- Ein einzeln gestoppter Dienst der Plattform läuft nach spätestens etwa 30 Sekunden wieder, weil der Hintergrunddienst ihn startet.
- Ein einzeln gestoppter Dienst einer Erweiterung bleibt aus, bis du
start,applyoderupdateausführst. - sudo: ja. Sperrt: ja.
sudo aictl restart protocol/worker
sudo aictl stop
sudo aictl start
serve#
Der Hintergrunddienst der Plattform. Er wird bei der Installation eingerichtet und läuft automatisch, du startest ihn normalerweise nicht von Hand.
sudo aictl serve [--reconcile-interval <dauer>]
| Option | Standard | Bedeutung |
|---|---|---|
--reconcile-interval <dauer> |
30s |
Wie oft der Dienst die Plattform abgleicht. Muss grösser als 0 sein. |
- Läuft der Dienst bereits, scheitert ein zweiter Aufruf, weil der Port 7700 belegt ist.
- Den eingerichteten Dienst steuerst du mit
sudo systemctl status|start|restart aictl, seine Meldungen siehst du mitjournalctl -u aictl.
Prüfen und Diagnose#
status#
Prüft alle Bausteine, die Erweiterungen, die Modell-Engine, die Anmeldung, die angehängten Rechner, Lizenz, Speicherplatz und Zertifikat. Endet mit Code 1, sobald eine Prüfung fehlschlägt. Warnungen ändern den Code nicht.
aictl status [--json]
| Option | Standard | Bedeutung |
|---|---|---|
--json |
aus | Gibt die Prüfungen als JSON aus. Der Exit-Code bleibt gleich. |
- sudo: nein für die bei
installfreigeschaltete Person, sonst ja. - Ist die Plattform mit
stopangehalten, meldetstatusnur das und endet mit Code 0. - JSON-Felder je Prüfung:
group(Abschnitt),name,ok,warn(nur bei Warnungen),detail.
aictl status
aictl status --json > status.json
doctor#
Prüft die Umgebung, von der die Plattform abhängt: Laufzeitumgebung, Hintergrunddienst, belegte Ports, freien Speicherplatz, Zugangsdaten für automatische Zertifikate, die Schlüssel der KI-Zentrale, die Modell-Engine und die Erreichbarkeit des Lizenzservers. Zu jedem Problem nennt doctor eine Lösung in einer Zeile fix:.
sudo aictl doctor
- Kurzform:
diagnose. sudo: ja. - Endet nur bei einem Fehler (
[FAIL]) mit Code 1, Warnungen nicht.
logs#
Zeigt die Meldungen der Plattform und ihrer Erweiterungen. status sagt, was nicht stimmt, logs sagt, warum.
sudo aictl logs [dienst|erweiterung|erweiterung/dienst …] [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
-f, --follow |
aus | Zeigt neue Meldungen live, bis Ctrl+C. |
-n, --tail <anzahl> |
200 |
Anzahl der letzten Zeilen pro Dienst, all für alle. |
--since <zeit> |
– | Nur Meldungen seit einem Zeitpunkt oder einer Dauer, zum Beispiel 10m oder 1h. |
- Ohne Namen erscheinen die Meldungen aller Dienste. Die Namen sind dieselben wie bei
start,stopundrestart. - Stammen die Meldungen aus mehreren Bereichen, beginnt jede Zeile mit
core/oder dem Namen der Erweiterung. - sudo: ja.
sudo aictl logs -f
sudo aictl logs protocol -n 50 --since 10m
sudo aictl logs protocol/worker
license#
Zeigt und prüft die Lizenz.
| Befehl | Bedeutung | sudo |
|---|---|---|
license check |
Fragt den aktuellen Stand direkt beim Lizenzserver ab. Ändert nichts. Endet mit einem Fehler, wenn die Lizenz nicht aktiv ist. | nein für die freigeschaltete Person |
license info |
Zeigt den auf dem Server gespeicherten Stand: Plan, Erweiterungen, Laufzeit, Update-Zeitraum, Benutzerlimit, Zustand. Funktioniert ohne Internet, die Werte können veraltet sein. aictl license ohne Unterbefehl zeigt dasselbe. |
nein für die freigeschaltete Person |
license renew |
Holt die Lizenz sofort neu, etwa nach dem Kauf einer Erweiterung, statt auf die nächste automatische Bestätigung (bis zu 12 Stunden) zu warten. Zeigt danach Plan, Erweiterungen, Laufzeit, Update-Zeitraum, Benutzerlimit und Schnittstelle. Meldet neu freigeschaltete Erweiterungen und verfügbare Updates, installiert aber nichts. | ja |
aictl license info
sudo aictl license renew
Den Lizenzschlüssel zeigen alle drei Befehle nur mit seinen letzten vier Zeichen.
Details: Lizenz.
spec show#
Zeigt die vollständige Konfiguration, mit der die Installation läuft: die Standardwerte von aictl zusammen mit deinen Einstellungen aus /etc/aictl/spec.yaml. Jeder Wert aus deiner Einstellungsdatei ist mit # set in spec.yaml markiert. Alle anderen sind Standardwerte und können sich mit dem nächsten aictl update ändern.
aictl spec show
- sudo: nein für die freigeschaltete Person.
- Ist die Einstellungsdatei fehlerhaft, nennt der Befehl den Fehler, statt etwas auszugeben.
- Gibt es noch keine Einstellungsdatei, zeigt er die Standardwerte.
version#
Zeigt Version, Build-Informationen, die neueste verfügbare Version von aictl und, mit sudo, die installierten Erweiterungen mit ihrem Zustand. Lege diese Ausgabe jeder Support-Anfrage bei.
aictl version
sudo aictl version
- sudo: nein. Die Liste der Erweiterungen erscheint nur mit sudo.
- Die Zeile «latest» fragt den Server höchstens 5 Sekunden lang. Ohne Antwort steht dort «unknown».
aictl --versionzeigt nur den Versionsblock, ohne Abfrage beim Server.
Mehrere Rechner#
join#
Macht einen weiteren Rechner zum Modell-Rechner. Wird auf dem neuen Rechner ausgeführt. Installiert dort nur die Modell-Engine und meldet den Rechner beim Hauptserver an.
sudo aictl join <adresse-des-hauptservers> --token <token> --fingerprint <fingerabdruck> --name <name> [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--name <name> |
– (Pflicht) | Eindeutiger Name, 1 bis 63 Zeichen aus Kleinbuchstaben, Ziffern und Bindestrichen. |
--token <token> |
– (Pflicht) | Beitritts-Token des Hauptservers, siehe node join-command. Gilt standardmässig eine Stunde. |
--fingerprint <wert> |
– (Pflicht) | Fingerabdruck des Hauptservers. join bricht ab, bevor es das Token sendet, wenn der Hauptserver einen anderen vorweist. |
--advertise <adresse> |
automatisch | Adresse, unter der der Hauptserver diesen Rechner erreicht, etwa eine VPN-Adresse. Ein anderer Port als 11434 braucht eine Weiterleitung auf 11434. |
- sudo: ja. Sperrt: ja.
- Eine weitere Option legt die Version der Modell-Engine fest, siehe
sudo aictl join --help. Eine bereits vorhandene Modell-Engine wird nie verändert. - Funktioniert nicht auf dem Hauptserver selbst.
- Am bequemsten erzeugst du den vollständigen Befehl auf dem Hauptserver mit
node join-command.
sudo aictl join https://10.0.0.5:7700 --token <token> --fingerprint sha256:<fingerabdruck> --name gpu-1
node#
Verwaltet die Modell-Rechner. Alle Befehle laufen auf dem Hauptserver und brauchen sudo.
| Befehl | Bedeutung | Sperrt |
|---|---|---|
node ls [--json] |
Zeigt alle Rechner mit Adresse, Zustand und Anzahl Modelle. Kurzform list. |
nein |
node join-command [name] [--host <adresse>] [--ttl <dauer>] |
Gibt den fertigen join-Befehl für einen neuen Rechner aus, mit Adresse, Fingerabdruck und einem neuen Token, das eine Stunde gilt. --ttl ändert die Dauer, höchstens 168h. Ohne Name bleibt ein Platzhalter <name> stehen. --host ersetzt die automatisch ermittelte Adresse des Hauptservers. |
nein |
node token [--ttl <dauer>] [--revoke-all] |
Erzeugt ein neues Beitritts-Token. --revoke-all macht stattdessen alle offenen Tokens ungültig. |
nein |
node drain <name> |
Nimmt einen Rechner aus der Verteilung, etwa für Wartung. Er bleibt angemeldet. | ja |
node undrain <name> |
Nimmt ihn wieder in die Verteilung auf. | ja |
node rm <name> |
Meldet einen Rechner ab. Die Modelle darauf werden nicht mehr verwendet, der Rechner selbst bleibt unverändert. Kurzform remove. |
ja |
- Der Hauptserver selbst (Standardname
local) lässt sich weder entfernen noch aus der Verteilung nehmen. node join-commandundnode tokengeben ein Geheimnis aus. Behandle die Ausgabe vertraulich.- JSON von
node ls:name,endpoint,reachable,version,drained,models.
sudo aictl node join-command gpu-1
sudo aictl node drain gpu-1
model#
Installiert, zeigt und entfernt Sprachmodelle. Alle Befehle brauchen sudo.
| Befehl | Bedeutung |
|---|---|
model install <modell> [--node <name>] |
Lädt ein Modell auf einen Rechner, standardmässig auf den Hauptserver, und stellt es bereit. Kurzform pull. Lizenzgesperrt. |
model ls [--json] |
Zeigt alle bereitgestellten Modelle und die Rechner, auf denen sie laufen. Kurzform list. |
model rm <modell> [--node <name>] |
Entfernt ein Modell von einem Rechner, standardmässig vom Hauptserver. Kurzform remove. Nie lizenzgesperrt, damit du immer Speicherplatz freigeben kannst. |
- Bricht ein Download fünf Minuten lang ohne Fortschritt ab, endet
model installmit einem Fehler. Wiederhole den Befehl später. - Ein Modell auf einem Rechner, der aus der Verteilung genommen ist, wird installiert, aber nicht verwendet, bis du
node undrainausführst. model lszeigt nur Modelle auf erreichbaren Rechnern in der Verteilung.
sudo aictl model install <modell>
sudo aictl model install <modell> --node gpu-1
sudo aictl model rm <modell> --node gpu-1
Details: Modelle und Rechner.
Erweiterungen und Einstellungen#
auth info#
Zeigt die Adresse der Benutzerverwaltung, das erste Administrationskonto, den Notzugang zur KI-Zentrale, den Zugang zum Wissensspeicher und wie jeder veröffentlichte Bereich geschützt ist.
sudo aictl auth info [--show-password]
| Option | Standard | Bedeutung |
|---|---|---|
--show-password |
aus | Zeigt zusätzlich die Passwörter des ersten Administrators (akadmin) und des Notzugangs zur KI-Zentrale (aictl-admin) sowie den Schlüssel des Wissensspeichers. Er öffnet alle Sammlungen, behandle ihn vertraulich. |
- sudo: ja.
- Das angezeigte Passwort von
akadminist das ursprüngliche. Hast du es in der Benutzerverwaltung geändert, gilt das neue.
brand#
Zeigt oder ändert Firmenname, Logo und Favicon. Beide Befehle brauchen sudo.
sudo aictl brand show
sudo aictl brand edit [optionen]
Option von brand edit |
Bedeutung |
|---|---|
--name <name> |
Firmenname. |
--logo-url <url> |
Öffentliche Adresse des Logos, PNG oder JPEG. Wird sofort heruntergeladen. |
--favicon-url <url> |
Öffentliche Adresse des Favicons, PNG oder JPEG. |
--clear-logo |
Entfernt das Logo. |
--clear-favicon |
Entfernt das Favicon. |
- Ohne Option fragt
brand editjeden Wert ab, vorausgefüllt mit dem aktuellen. Enter behält ihn, ein geleertes Feld entfernt ihn. - Mit Optionen ändert
brand editnur diese Werte. Sperrt: ja. - Danach mit
sudo aictl applyübernehmen. Details: Branding.
extension#
Verwaltet die Erweiterungen deiner Lizenz. Alle Befehle ausser extension lint und extension override lint brauchen sudo.
extension catalog
Zeigt alle Erweiterungen, die deine Lizenz freischaltet, und ob sie installiert sind. Funktioniert ohne Internet. Fehlt eine eben gekaufte Erweiterung, hole sie mit sudo aictl license renew.
extension install
Lädt eine Erweiterung, prüft sie und richtet sie ein.
sudo aictl extension install <name> [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--version <version> |
neueste erlaubte | Installiert genau diese Version, auch eine ältere. Mit allen drei Teilen schreiben, zum Beispiel 1.2.0. Ein v davor wird entfernt, andere Angaben lehnt der Befehl ab. |
--yes |
aus | Keine Rückfragen: fortfahren, alle empfohlenen Modelle installieren, optionale Zugangsdaten überspringen. Pflicht-Zugangsdaten setzt du vorher mit secret set. |
- Sperrt: ja, ausser während der Rückfragen. Lizenz: gesperrt, wenn die Lizenz eingeschränkt ist oder die Erweiterung nicht enthält.
- Vor dem Herunterladen müssen mindestens 6 GiB frei sein.
- Ist die Erweiterung schon installiert, wirkt
installwie ein Update. Ohne--versiongeht es nie auf eine ältere Version zurück.
extension ls
Zeigt die installierten Erweiterungen mit installierter und neuester Version sowie Zustand. Kurzform list.
sudo aictl extension ls [--json]
- Ist der Lizenzserver nicht erreichbar, steht bei der neuesten Version
unknown. - JSON-Felder:
name,installed,pinned,latest,updateAvailable,status.
extension update
Bringt eine oder alle Erweiterungen auf die neueste Version, die deine Lizenz erlaubt.
sudo aictl extension update [name] [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--force |
aus | Richtet die Erweiterung auch dann neu ein, wenn sie schon aktuell ist. Lädt dabei nichts neu herunter. |
--yes |
aus | Keine Rückfragen, wie bei install. |
- Eine aktuelle Erweiterung wird nicht angefasst, nichts wird neu gestartet.
- Ohne Name werden alle aktualisiert. Scheitert eine, laufen die anderen weiter, und der Befehl endet am Schluss mit Code 1.
- Sperrt: ja, ausser während der Rückfragen. Lizenz: gesperrt, wenn die Lizenz eingeschränkt ist.
extension remove
Entfernt eine Erweiterung. Daten, Zugangsdaten und Modelle bleiben erhalten, damit eine Neuinstallation sie wiederfindet. Kurzform rm.
sudo aictl extension remove <name> [optionen]
| Option | Standard | Bedeutung |
|---|---|---|
--purge |
aus | Löscht zusätzlich alle Daten und Zugangsdaten der Erweiterung endgültig. Modelle bleiben. |
--yes |
aus | Bestätigt ohne Rückfrage. |
--force |
aus | Entfernt die Erweiterung auch, wenn ihr Aufräumschritt vor dem Herunterfahren scheitert. |
- Die Rückfrage hat ohne
--purgedie Vorgabe Ja, mit--purgedie Vorgabe Nein. Lehnst du ab, endet der Befehl mit Code 0, ohne etwas zu entfernen. - Mit
--purgefunktioniert der Befehl auch für eine Erweiterung, die schon mit einem einfachenremoveentfernt wurde. Er löscht dann alles, was sie hinterlassen hat. - Sperrt: ja. Nicht lizenzgesperrt.
extension prune
Löscht Datenbereiche, die frühere Versionen einer Erweiterung hinterlassen haben und die kein Dienst mehr verwendet. Fragt vor dem Löschen.
sudo aictl extension prune [name] [--yes]
- Ohne Name werden alle installierten Erweiterungen geprüft. Der Name einer entfernten Erweiterung nimmt ihre zurückgelassenen Datenbereiche. Datenbank und Zugangsdaten löscht
extension remove <name> --purge. - Die Vorgabe der Rückfrage ist Nein. Gelöschte Daten sind endgültig weg.
- Sperrt: ja.
extension env
Zeigt pro Dienst einer installierten Erweiterung, welche Einstellungen sie von der Plattform erhält. Nur Namen, nie Werte.
sudo aictl extension env <name>
extension lint
Prüft ein Erweiterungspaket offline, ohne Lizenz und ohne sudo. Gedacht für Entwickler. Ohne Ordner wird der aktuelle geprüft. Endet bei jedem Problem mit Code 1.
aictl extension lint [ordner]
extension override lint
Prüft die eigene Anpassungsdatei einer installierten Erweiterung so, wie apply sie übernehmen würde, und listet jede Änderung auf. Ohne Name werden alle Anpassungsdateien geprüft. Endet bei jedem Problem mit Code 1.
aictl extension override lint [name]
Details: Erweiterungen verwalten.
proxy#
Verwaltet das Gateway: welche Bereiche unter welcher Adresse erreichbar sind und welches Zertifikat verwendet wird. Beide Befehle brauchen sudo.
proxy hostname
Legt fest, welche Bereiche veröffentlicht sind und unter welcher Subdomain. Ohne Option öffnet sich eine Auswahl im Terminal.
sudo aictl proxy hostname [--set <schlüssel>=<subdomain> …]
| Option | Bedeutung |
|---|---|
--set <schlüssel>=<subdomain> |
Veröffentlicht einen Bereich unter dieser Subdomain oder benennt ihn um. Mehrfach verwendbar. <schlüssel>=- oder <schlüssel>= nimmt ihn vom Netz. |
| Bereich | Standard |
|---|---|
| Firmen-Login | auth, veröffentlicht |
| Chat | chat, veröffentlicht |
| Automationen | eigene Subdomain, veröffentlicht |
| KI-Zentrale (Administration) | api, nicht veröffentlicht |
| Wissensspeicher | eigene Subdomain, nicht veröffentlicht |
| Websuche | search, nicht veröffentlicht |
| Bereich einer Erweiterung | wie von der Erweiterung vorgegeben, veröffentlicht |
- Den Schlüssel eines Bereichs für
--setzeigt die interaktive Auswahl in jeder Zeile. Für den Firmen-Login ist esauth, für den Chatchat, für Erweiterungen<erweiterung>/<dienst>. - Eine Subdomain ist ein einzelnes Wort aus Kleinbuchstaben, Ziffern und Bindestrichen, zum Beispiel
kiodernotizen. - Setzt eine Domain voraus, siehe
install --base-domain. Sperrt: ja. - Danach mit
sudo aictl applyübernehmen.
sudo aictl proxy hostname
sudo aictl proxy hostname --set chat=ki --set protocol/app=-
sudo aictl proxy hostname --set protocol/app=notizen
proxy set-cert
Hinterlegt ein eigenes Zertifikat für den Modus provided. Funktioniert auch vor der Installation.
sudo aictl proxy set-cert --cert <datei> [--key <datei>] [--ca <datei>] [passwort-option]
| Option | Bedeutung |
|---|---|
--cert <datei> |
Pflicht. Zertifikat im PEM-Format (Zertifikat, optional mit Kette) oder ein PFX/PKCS#12-Paket (.pfx, .p12). |
--key <datei> |
Privater Schlüssel im PEM-Format. Bei PFX weglassen. |
--ca <datei> |
Stammzertifikat einer eigenen Zertifizierungsstelle, wenn die Zertifikatsdatei es nicht enthält. PEM, DER oder PKCS#7. Zwischenzertifikate darin kommen in die ausgelieferte Kette. |
--password-stdin |
Liest das Passwort von der Standardeingabe. Empfohlen. |
--password-file <datei> |
Liest das Passwort aus einer Datei. |
--password <passwort> |
Passwort direkt. Bleibt im Verlauf der Shell sichtbar. |
- Nur für verschlüsselte Schlüssel und PFX nötig: genau eine Passwort-Option.
- Empfohlen ist ein Wildcard-Zertifikat
*.<domain>, damit jede Subdomain abgedeckt ist. - Lässt sich das Zertifikat nicht bis zu einem vertrauenswürdigen Stammzertifikat prüfen, lehnt
set-certes ab. - Danach mit
sudo aictl applyübernehmen.
printf %s "$PW" | sudo aictl proxy set-cert --cert fullchain.pem --key privkey.pem --password-stdin
sudo aictl proxy set-cert --cert firma.pfx --password-file pw.txt
Details: Domain und Zertifikate.
secret#
Verwaltet Zugangsdaten, die du für Erweiterungen oder automatische Zertifikate hinterlegst. Alle Befehle brauchen sudo.
secret set
Speichert einen Wert unter einem Namen wie MEIN_API_TOKEN.
sudo aictl secret set <NAME> [optionen]
| Option | Bedeutung |
|---|---|
| keine | Fragt den Wert verdeckt im Terminal ab. |
--from-file <datei> |
Liest den Wert aus einer Datei. Ein Zeilenumbruch am Ende wird entfernt. |
--stdin |
Liest den Wert von der Standardeingabe. Ein Zeilenumbruch am Ende wird entfernt. |
--from-env <variable> |
Übernimmt den Wert aus einer Umgebungsvariable. |
--value <wert> |
Wert direkt. Bleibt im Verlauf der Shell sichtbar. |
- Höchstens eine dieser Optionen.
- Namen bestehen aus Grossbuchstaben, Ziffern und Unterstrichen und beginnen nicht mit einer Ziffer.
- Werte müssen einzeilig sein. Mehrzeiliges wie einen PEM-Schlüssel kodierst du vorher in Base64.
- Namen, die mit
AICTL_oderAUTH_EXT_beginnen, erzeugt die Plattform selbst und lehnt sie ab. - Sperrt: ja, erst nach der Eingabe. Danach mit
sudo aictl applyübernehmen.
sudo aictl secret set MEIN_API_TOKEN
printf %s "$TOKEN" | sudo aictl secret set MEIN_API_TOKEN --stdin
secret ls
Zeigt die Namen aller gespeicherten Zugangsdaten, nie die Werte. Kurzform list. Die Spalte SET BY zeigt, ob du (you) oder die Plattform (aictl) den Wert gesetzt hat. STATUS zeigt empty, stored (noch nicht übernommen) oder applied.
secret rm
Entfernt einen oder mehrere gespeicherte Werte. Kurzform remove. Werte der Plattform lassen sich nicht entfernen. Sperrt: ja.
sudo aictl secret rm MEIN_API_TOKEN ALTER_TOKEN
sudo aictl apply
Details: Zugangsdaten.
Nicht gefunden, was du suchst?
Unser Support hilft dir gerne weiter.