Runabot CLI#
Das Kommandozeilenwerkzeug runabot bietet eine direkte, skriptfähige Schnittstelle zur ConnectRPC-API von Runabot. Es ist für Entwickler, CI/CD-Pipelines und autonome Coding-Agenten (wie Claude Code, Cursor, Codex, OpenClaw und Hermes) konzipiert.
1. Download & Installation#
Vorkompilierte Binärdateien für Linux, macOS und Windows (jeweils für amd64 und arm64) stehen direkt auf der Downloads-Seite zur Verfügung.
Schnellinstallation#
# Benutzerinstallation (installiert nach ~/.local/bin/):
curl -fsSL https://runa.bot/downloads/install.sh | sh
# Globale Systeminstallation (installiert nach /usr/local/bin/):
curl -fsSL https://runa.bot/downloads/install.sh | sudo shAlternativ können Sie die Datei manuell von der Downloads-Seite herunterladen und ausführbar machen:
chmod +x runabot
sudo mv runabot /usr/local/bin/2. Authentifizierung#
Interaktive Browser-Anmeldung#
Für die interaktive Anmeldung mittels OAuth2 (Authorization Code + PKCE gegen Hydra):
runabot auth login --base-url https://runa.botHierbei öffnet sich Ihr Standardbrowser zur Bestätigung. Die Sitzungsdaten werden lokal sicher gespeichert.
Geräte-Autorisierungs-Flow (Empfohlen für Headless / Remote)#
Für Remote-SSH-Sitzungen, Cloud-Workstations oder Umgebungen ohne lokalen Browser verwenden Sie den RFC 8628 Device Authorization Flow:
runabot auth login --deviceDie CLI gibt eine Bestätigungs-URL und einen 8-stelligen Benutzercode aus (z. B. WDJB-MJHT). Öffnen Sie die URL auf einem beliebigen Gerät, geben Sie den Code ein und bestätigen Sie. Die CLI empfängt die Token automatisch.
Manuelle PKCE-Code-Anmeldung#
Alternativ können Sie die Standard-PKCE-Autorisierung durchführen und den Code bzw. die Redirect-URL manuell einfügen:
runabot auth login --manualDirekte Token-Anmeldung#
runabot auth login --token "<ihr-zugriffstoken>"Agenten- & CI/CD-Modus (Umgebungsvariablen)#
Für automatisierte Coding-Agenten oder CI/CD-Pipelines können Zugriffstoken und Basis-URL über Umgebungsvariablen übergeben werden:
export RUNABOT_BASE_URL="https://runa.bot"
export RUNABOT_TOKEN="<ihr-zugriffstoken>"Anmeldestatus prüfen#
runabot auth whoami3. Befehlsübersicht#
Version & Build-Metadaten#
# Detaillierte Versions- und Build-Informationen (JSON, YAML oder Text) ausgeben
runabot version
runabot version -o json
runabot version -o table
# Nur die Versionsnummer ausgeben
runabot version --short
runabot --versionAusgabeformatierung#
Standardmäßig liefern alle Befehle strukturiertes Protobuf-JSON für die problemlose Verarbeitung durch KI-Agenten und Skripte. Für eine übersichtliche Konsolentabelle übergeben Sie -o table oder --output table:
runabot addon list -o table
runabot bot list -o tableBot-Verwaltung#
| Befehl | Beschreibung |
|---|---|
runabot bot list | Alle Bots im eigenen Account auflisten |
runabot bot status <name> [--namespace <ns>] | Detaillierten Status, Lifecycle, Helm-Status und Addon-Bindungen eines Bots anzeigen |
runabot bot create --name <name> --chart <chart> [--wait] [--timeout 5m] | Neue Bot-Instanz bereitstellen (z. B. openclaw oder ironclaw); optional auf Bereitschaft warten |
runabot bot wait <name> [--for ready|running|stopped|deleted] [--timeout 5m] | Synchron blockieren, bis ein Bot den gewünschten Zustand erreicht |
runabot bot events <name> [--namespace <ns>] | Kubernetes-Ereignisse eines Bots auflisten |
runabot bot shell <name> --namespace <ns> | Interaktives Terminal im Bot-Pod öffnen |
runabot bot upgrade <name> --namespace <ns> | Aktualisierung auf die neueste Chart-Version ausführen |
runabot bot delete <name> --namespace <ns> | Bot-Instanz löschen |
Deklarative Bereitstellung (apply)#
Bots und Addons deklarativ mittels YAML-Manifesten erstellen oder aktualisieren:
# Manifest (einzelnes oder mehrere Dokumente) anwenden
runabot apply -f workload.yaml
# Direkt über Standardeingabe übergeben (z. B. durch KI-Agenten generiert)
cat <<EOF | runabot apply -f -
apiVersion: runabot.runabot.de/v1
kind: BotInstance
metadata:
name: clawdius-dev
spec:
displayName: "Clawdius Developer Agent"
chartName: openclaw
---
apiVersion: runabot.runabot.de/v1
kind: Addon
metadata:
name: main-db
spec:
sourceRef: cnpg
displayName: "PostgreSQL Datenbank"
parameters:
storage_size: "10Gi"
EOFAddon-Verwaltung#
| Befehl | Beschreibung |
|---|---|
runabot addon source list | Verfügbare Addon-Quellen im Katalog auflisten |
runabot addon source describe <name> | Vollständige Parameter-Schemas (Typen, Standardwerte, Ressourcen-Referenzen) und UI-Features einsehen |
runabot addon list | Installierte Addons im Account anzeigen (sensible Zugangsdaten ausgeblendet) |
runabot addon create <source_ref> --param key=value | Addon installieren und konfigurieren |
runabot addon update <name> --param key=value | Parameter, Anzeigenamen oder Firewall-Freigaben aktualisieren |
runabot addon upgrade <name> | Installiertes Addon aktualisieren |
runabot addon delete <name> | Installiertes Addon entfernen |
runabot addon shell <name> [--namespace <ns>] | Interaktives WebSocket-Terminal in einem Addon-Pod öffnen oder Befehl ausführen |
Git-Proxy-Verwaltung#
Git Proxy bietet unter runabot addon git-proxy eine ressourcenorientierte CLI.
Jeder Befehl wählt die installierte Addon-Instanz ausdrücklich aus. Beim Lesen
von Zugangsdaten werden nur Metadaten zurückgegeben; Geheimnisse werden nur beim
Erstellen, Aktualisieren oder Rotieren angenommen.
| Befehlsgruppe | Zweck |
|---|---|
credential list / get / create / update / rotate / revoke | Upstream-Git-Zugangsdaten und deren schreibgeschützte Geheimnisse verwalten |
path-rule list / get / create / update / delete | Exakte oder reguläre Repository-Regeln und Profilfreigaben verwalten |
profile list / get / create / update / delete | Repository-Zugriffsprofile verwalten |
assignment assign / unassign | Einen Bot einem Profil zuweisen oder daraus entfernen |
access effective | Den effektiven Repository-Zugriff eines Bots anzeigen |
access check | Einen geplanten Lese- oder Schreibzugriff probeweise prüfen |
Aktualisierungen und Löschungen benötigen die aktuelle --version. Mit
--secret-action preserve, replace oder clear ist die Behandlung von
Geheimnissen eindeutig. Mutationen unterstützen außerdem die globalen Flags
--idempotency-key und --request-id.
Beachten Sie, dass access check den Repository-Pfad erwartet, wie ihn der Git Proxy sieht: <proxy-path-prefix>/<upstream-repository-path> (z. B. github_runabot/run-a-bot/mcpproxy-go). Bei exakten Pfadregeln wird direkt gegen das Pfadmuster der Regel geprüft; hängen Sie kein .git an, es sei denn, Ihr Regel-Muster enthält explizit .git.
MCPProxy-Verwaltung#
MCPProxy bietet unter runabot addon mcpproxy eine direkte Verwaltungs-CLI.
Jeder Befehl nennt ausdrücklich die installierte Addon-Instanz. Die CLI verwaltet
Upstream-Server, Tool-Freigaben, schreibgeschützte Geheimnisse, Zugriffsprofile,
begrenzte Tokens und Bot-Zuweisungen. Lesebefehle geben niemals Header-,
Umgebungs- oder Geheimniswerte zurück; neue und rotierte Tokenwerte werden
einmalig ausgegeben.
| Befehlsgruppe | Zweck |
|---|---|
upstream list / get / create / update / delete | stdio-, SSE-, HTTP- und Streamable-HTTP-Upstreams verwalten |
upstream enable / disable / restart / refresh / quarantine / unquarantine | Upstream-Status und Vertrauen steuern |
tool list / approve / block | Erkannte Tools anzeigen und prüfen |
secret list / put / delete | Geheimnisreferenzen verwalten; put liest nur aus einer privaten Datei oder stdin |
profile list / get / create / update / delete | Profile auf ausgewählte Upstreams und Tools begrenzen |
token list / get / create / rotate / revoke | Begrenzte MCPProxy-Tokens verwalten |
assign / unassign | Ein MCPProxy-Zugriffsprofil zum verwalteten Token eines Bots hinzufügen oder daraus entfernen; die Addon-Zuweisung erfolgt automatisch |
access effective / check | Effektiven Zugriff und Tool-Bereitschaft prüfen |
runabot addon mcpproxy upstream create mcpproxy-u1a1 docs \
--protocol streamable-http --url https://mcp.example.com/mcp
runabot addon mcpproxy profile create mcpproxy-u1a1 research \
--upstream docs --tool docs=search
runabot addon mcpproxy assign mcpproxy-u1a1 research bot-u1b1
runabot addon mcpproxy access effective mcpproxy-u1a1 bot-u1b1SSH-JumpHost-Verwaltung#
Der SSH JumpHost bietet unter runabot addon ssh eine ressourcenorientierte
CLI. Sie akzeptiert ausschließlich öffentliche OpenSSH-Schlüssel. Runabot nimmt
keine privaten Schlüssel an, erzeugt oder speichert sie nicht und gibt sie nicht
zurück.
| Befehl | Zweck |
|---|---|
key list / get / add / replace / remove | Benannte und versionierte externe öffentliche Schlüssel verwalten |
assignment assign / unassign | Die Erreichbarkeit eines Bots über den JumpHost freigeben oder entfernen |
reachable | Alle derzeit über eine Addon-Instanz erreichbaren Bots auflisten |
connection ADDON BOT_ID | ProxyJump-Befehl sowie Hinweise zur Host-Verifizierung für JumpHost und Ziel-Bot anzeigen |
Zum Ersetzen oder Entfernen eines Schlüssels ist dessen aktuelle --version
erforderlich. Beim Hinzufügen oder Ersetzen muss genau eines von --public-key
oder --public-key-file angegeben werden. Vergleichen Sie vor einem
unbeaufsichtigten Verbindungsaufbau einen Fingerprint aus connection mit dem
Schlüssel, den der zurückgegebene knownHostsCommand ermittelt.
runabot addon ssh key add ssh-u1a1 \
--name automation --public-key-file ~/.ssh/id_ed25519.pub
runabot addon ssh assignment assign ssh-u1a1 bot-u1b1
runabot addon ssh reachable ssh-u1a1
runabot addon ssh connection ssh-u1a1 bot-u1b1Sicherungen & Wiederherstellung#
| Befehl | Beschreibung |
|---|---|
runabot backup list | Velero-Sicherungen anzeigen |
runabot backup create --namespace <ns> | Snapshot-Sicherung eines Bot- oder Addon-Namespaces erstellen |
runabot backup delete <name> | Sicherung löschen |
Cluster & Administration#
| Befehl | Beschreibung |
|---|---|
runabot cluster info | Status der Cluster-Infrastruktur einsehen |
runabot admin users list | (Nur Administratoren) Registrierte Benutzer auflisten |
4. Idempotenz & Ausfallsichere Wiederholungen#
Autonome Agenten können bei Netzwerk-Timeouts fehlgeschlagene oder unterbrochene Operationen gefahrlos mit einem Idempotenz-Schlüssel wiederholen, ohne doppelte Ressourcen zu erzeugen:
# Sichere Wiederholung mit deterministischem Schlüssel
runabot bot create --name worker-agent --chart openclaw --idempotency-key "task-20260825-worker" --wait
runabot addon create openobserve --idempotency-key "task-20260825-logs"Wenn eine Operation mit demselben Idempotenz-Schlüssel bereits ausgeführt wurde oder aktiv ist, gibt die API sofort die bestehende Ressource zurück.
5. Konfiguration & Umgebung#
Das CLI liest Konfigurations- und Umgebungsvariablen aus einer Dotenv-Datei:
- Linux / macOS:
~/.config/runabot/runabot.env(oder$XDG_CONFIG_HOME/runabot/runabot.env) - Windows:
%APPDATA%\runabot\runabot.env
Sie können den Konfigurationspfad mit dem Flag --config oder der Umgebungsvariablen RUNABOT_CONFIG anpassen:
# Benutzerdefinierte Konfigurationsdatei verwenden
runabot --config ./staging.env bot list
# Oder über Umgebungsvariable
export RUNABOT_CONFIG=/pfad/zu/mein-cluster.envUnterstützte Variablen & Flags#
| Variable / Flag | Beschreibung | Standard |
|---|---|---|
RUNABOT_BASE_URL / --base-url | API-Basis-URL für Ihren Runabot-Cluster | https://runa.bot |
RUNABOT_PROFILE / --profile | Zu verwendender Standard-Profilname | Aktives Profil in config.json |
RUNABOT_OUTPUT / -o, --output | Standard-Ausgabeformat (json, table, text) | json |
--idempotency-key | Stabiler Idempotenz-Schlüssel für Mutationen | Optional |
--request-id | Tracking-UUID für API-Aufrufe | Optional |
6. Integration mit lokalen Coding-Agenten#
Die Runabot CLI liefert standardmäßig strukturiertes JSON, was die Integration in LLM-Coding-Agenten (Claude Code, Cursor, Codex, OpenClaw, Hermes) erleichtert:
# Beispiel 1: Parameter-Schema vor dem Erstellen eines Addons prüfen
runabot addon source describe olla -o json
# Beispiel 2: Bot synchron erstellen und auf Betriebsbereitschaft warten
runabot bot create --name data-pipeline --chart openclaw --wait --timeout 3m
# Beispiel 3: Laufzeitereignisse bei Fehlersuche abfragen
runabot bot events data-pipeline