Öffentlicher Schlüssel zum Prüfen signierter Pakete:
admin-companion-2025_public.keyfile_download
ac-ops:
profiles.yaml, and routes them to the right target host and use-case.ac-ops on target hosts via SSH forced-command mode (ac-ops --ssh-restricted), so the target host stays in control.target_host and use_case (allow/deny), and ac-ops enforces tool allowlists and per-parameter restrictions (least privilege).ac-ops output and/or trigger integrations (sinks) such as ServiceNow or Slack.ai)ac-ops)--ssh-restricted mode for SSH forced-command execution (used by the new Admin Companion Gateway). In this mode, ac-ops reads arguments from SSH_ORIGINAL_COMMAND and typically receives the event payload via stdin (--event -).
ac-ops for server operations and DevOpsac-ops brings Admin Companion to automation and incident-response workflows with full control and auditability:
FileQuery), with bounded output and strict limits.tool_call, tool_exec, tool_result) and errors.--debug-console transcript for troubleshooting.ai CLI change: version flag moved from -v to -V.
Remember/Forget no longer stop the iteration loop and now behave consistently inside long tool runs.Remember also reports which memory slot was used for the newly stored item.
ai -sm. Clear it at any time with ai -rm.Hinweis: Sie benötigen ein Admin Companion Konto und einen Admin Companion API-Key, um den Client zu verwenden.
| Architektur | Paket | Geeignet für |
|---|---|---|
|
AMD64 (für Intel und AMD) |
admin-companion_6.1-8_amd64.deb file_download |
|
|
AMD64 (for Intel and AMD) |
admin-companion_6.1-8_backport_deb11_amd64.deb file_download |
|
|
ARM64 (AARCH64) |
admin-companion_6.1-8_arm64.deb file_download |
|
|
ARM64 (AARCH64) |
admin-companion_6.1-8_backport_deb11_arm64.deb file_download |
|
| Architektur | Paket | Geeignet für |
|---|---|---|
|
AMD64 (für Intel und AMD) |
admin-companion-6.1-8.el8.x86_64.rpm file_download |
Fedora Versions 37 und neuer
|
| Architektur | Paket | Geeignet für |
|---|---|---|
|
AMD64 (für Intel und AMD) |
admin-companion-6.1-8_amd64.pkg file_download Detached ASCII-armored GPG signature: admin-companion-6.1-8_amd64.pkg.asc file_download |
FreeBSD (tested on 14.3)
|
wget https://www.admin-companion.ai/static/downloads/<Ihr benötigtes Paket>
Zum Beispiel: wget https://www.admin-companion.ai/static/downloads/admin-companion_6.1-8_amd64.deb
wget https://www.admin-companion.ai/static/downloads/admin-companion-2025_public.key
gpg --import admin-companion-2025_public.key
gpg --verify <der Dateiname Ihres heruntergeladenen Installationspakets>
Sie erhalten mehrere Zeilen. Eine Zeile sollte anzeigen:
Good signature from "Admin Companion 2025 - ayonik GmbH <admin-companion@admin-companion.ai>"
...dann ist die Validierung erfolgreich. Sie können die Warnmeldung ignorieren. Wir verwenden eine selbstsignierte Signatur. Stellen Sie nur sicher, dass Sie den Public Key von unserer Website heruntergeladen haben.
sudo dpkg -i <Ihr benötigtes Paket>
$HOME/.admin-companion/api-key
(Vergessen Sie nicht den Punkt "." im Pfadnamen)
ADMIN_COMPANION_KEY="<Your API key>"
https://api.admin-companion.ai:443
ai "Bist Du da?
wget https://www.admin-companion.ai/static/downloads/<Ihr benötigtes Paket>
Zum Beispiel:
wget https://www.admin-companion.ai/static/downloads/admin-companion-6.1-8.el8.x86_64.rpm
sudo dnf install wget
wget https://www.admin-companion.ai/static/downloads/admin-companion-2025_public.key
sudo rpm --import admin-companion-2025_public.key
rpm -K <your downloaded installation package file name>
Sie sollten Folgendes erhalten:
<your downloaded installation package file name>: digests signatures OK
digests
oder Sie dies nicht sehen
signatures
--> Dann ist etwas schiefgelaufen.
sudo dnf install <your needed package>
Zum Beispiel:
sudo dnf install admin-companion-6.1-8.el8.x86_64.rpm$HOME/.admin-companion/api-key
(Vergessen Sie nicht den Punkt "." im Pfadnamen)
ADMIN_COMPANION_KEY="<Your API key>"
https://api.admin-companion.ai:443
ai "Bist Du da?

wget https://www.admin-companion.ai/static/downloads/<Ihr benötigtes Paket>
Zum Beispiel:
wget https://www.admin-companion.ai/static/downloads/admin-companion-6.1-8_amd64.pkg
sudo pkg install wget
sudo pkg install gnupg
falls noch nicht installiert)
wget https://www.admin-companion.ai/static/downloads/admin-companion-2025_public.key
wget https://www.admin-companion.ai/static/downloads/admin-companion-6.1-8_amd64.pkg.asc
gpg --import admin-companion-2025_public.key
gpg --verify admin-companion-6.1-8_amd64.pkg.asc admin-companion-6.1-8_amd64.pkg
Sie erhalten mehrere Zeilen. Eine Zeile sollte anzeigen:
Good signature from "Admin Companion 2025 - ayonik GmbH <admin-companion@admin-companion.ai>"
...dann ist die Validierung erfolgreich. Sie können die Warnmeldung ignorieren. Wir verwenden eine selbstsignierte Signatur. Stellen Sie sicher, dass Sie den Public Key von unserer Website heruntergeladen haben.
sudo pkg install <your needed package>
Zum Beispiel:
sudo pkg install admin-companion-6.1-8_amd64.pkg$HOME/.admin-companion/api-key
(Vergessen Sie nicht den Punkt "." im Pfadnamen)
ADMIN_COMPANION_KEY="<Your API key>"
https://api.admin-companion.ai:443
ai "Bist Du da?
Admin Companion-Gateway besteht aus diesen Komponenten
Terminologie:
acops verbindet, um ac-ops zur Analyse auszuführen.Dieses Dokument beschreibt, wie Admin Companion Gateway auf einem Linux-Host mit Docker Compose installiert wird.
Das Gateway ist für Intranet-Deployments vorgesehen. Es empfängt Webhooks (z. B. Prometheus Alertmanager), normalisiert JSON-Payloads über Profiles und führt remote ac-ops Use-Cases per SSH auf Zielhosts aus.
docker compose (Compose v2 Plugin), oderdocker-composeHinweise:
Jeder Zielhost, gegen den das Gateway ausführen darf, muss Folgendes bereitstellen:
ac-ops auf dem Zielhost vorhanden ist)acopsDieser Quickstart verbindet Prometheus Alertmanager - Gateway - ac-ops - Slack mit dem mitgelieferten Beispiel-Profil.
Voraussetzungen:
Schritte (High level):
1) Gateway installieren und starten (siehe unten).
2) Die installierte Profiles-Datei bearbeiten und die Slack-Webhook-URL setzen:
- `/etc/admin-companion/ac-ops-gateway.profiles.yaml`
3) Alertmanager so konfigurieren, dass Alerts an den Gateway-Endpoint gesendet werden.
Der benötigte Alertmanager Receiver-Snippet ist als Kommentar in derselben Profiles-Datei enthalten.
4) Sicherstellen, dass die Zielhosts vorbereitet sind (SSH-User acops, Forced-Command-Modus und benötigte Use-Cases verfügbar).
Das Quickstart-Profil nutzt docker-issue-analysis.yaml (wird mit dem Admin Companion Client / ac-ops ausgeliefert).
5) Gateway nach Änderungen neu starten:
sudo ac-gatewayctl restart
Für Konfigurationsdetails (Expression-Sprache, Sinks, Templating, Security) siehe:
https://www.admin-companion.ai/de/documentation?sub=ac-gw#ac-gw
Typischerweise laden Sie eines oder beide dieser Artefakte herunter:
Compose-Bundle:
admin-companion-gateway_compose_<version>.tar.gzadmin-companion-gateway_compose_<version>.tar.gz.asc (optionale Detached-Signatur)Image-Archiv (nur für Air-gapped Installationen benötigt):
admin-companion-gateway_image_<version>.tar.gzadmin-companion-gateway_image_<version>.tar.gz.asc (optionale Detached-Signatur)Wenn Sie Detached-Signaturen erhalten haben, können Sie diese verifizieren (Beispiel):
wget https://www.admin-companion.ai/static/downloads/admin-companion-2025_public.key
gpg --import admin-companion-2025_public.key
gpg --verify admin-companion-gateway_compose_<version>.tar.gz.asc \
admin-companion-gateway_compose_<version>.tar.gz
Wiederholen Sie das gleiche für das Image-Tarball, falls Sie es heruntergeladen haben.
Beim Prüfen von Signaturen sehen Sie ggf.:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Das ist normal und bedeutet nicht, dass der Download beschädigt ist.
gpg: Good signature ... bedeutet: Datei passt zur Signatur (Integrität OK).Dabei wird das veröffentlichte Image aus GHCR verwendet (ghcr.io/ayonik-gmbh/admin-companion-gateway:<version>).
1) Compose-Bundle entpacken
tar -xzf admin-companion-gateway_compose_<version>.tar.gz
cd admin-companion-gateway_compose_<version>
2) Installer ausführen
sudo ./install.sh
Was es macht:
/opt/admin-companion-gateway//etc/admin-companion//etc/admin-companion/ac-ops-gateway-secrets/ mit strikten Berechtigungenac_ops_gateway_tokenacops_gateway_ed25519 / .pubknown_hosts (wird nur genutzt, wenn AC_OPS_GATEWAY_SSH_STRICT_HOST_KEY_CHECKING=true; sonst ignoriert)ac-gatewayctl nach /usr/local/bin/ac-gatewayctl3) Gateway starten
sudo ac-gatewayctl up -d
4) Status/Logs prüfen
sudo ac-gatewayctl ps
sudo ac-gatewayctl logs -f
Air-gapped bedeutet, dass die Zielmaschine nicht aus GHCR ziehen kann.
Zusätzlicher Schritt (vor der normalen Installation): das Image in Docker laden.
1) Beide Dateien auf die Zielmaschine übertragen:
- `admin-companion-gateway_compose_<version>.tar.gz`
- `admin-companion-gateway_image_<version>.tar.gz`
2) Image laden:
gunzip -c admin-companion-gateway_image_<version>.tar.gz | docker load
Falls Ihr Docker Root benötigt:
gunzip -c admin-companion-gateway_image_<version>.tar.gz | sudo docker load
3) Mit dem Standardverfahren fortfahren
- Compose-Bundle entpacken
- `sudo ./install.sh`
- `sudo ac-gatewayctl up -d`
Wenn Sie dem Quickstart-Profil folgen, sind dies die effektiven Änderungen, die Sie vornehmen müssen:
1) Gateway: Slack-Webhook-URL setzen
/etc/admin-companion/ac-ops-gateway.profiles.yamlwebhook-Sink des mitgelieferten Alertmanager-Profils ein.2) Alertmanager: Receiver-Snippet hinzufügen + Bearer-Token konfigurieren
/etc/alertmanager/alertmanager.yml) fügen Sie diesen Receiver hinzu und verweisen Sie auf den Gateway-Endpoint./etc/admin-companion/ac-ops-gateway.profiles.yamlbearer_token_file an den Pfad an, unter dem Sie die Datei bereitstellen./etc/admin-companion/ac-ops-gateway-secrets/ac_ops_gateway_token (von install.sh erzeugt) an einen Ort, auf den Alertmanager zugreifen kann.Die Admin-Companion-Datei hat Mode 0600 und UID:GID 20102:20102, daher können Sie nicht direkt auf diese Datei verweisen.
Anforderungen an das Alert-Payload (Quickstart-Profil):
commonLabels.instance (oder alerts[0].labels.instance) wird als target_host verwendetcommonLabels.alertname (oder service/job) wird zur Auswahl des Use-Cases verwendet; acopsdemocontainermissing ist nur ein Beispiel-Alertnamedocker-issue-analysis.yaml), wenn es keinen Match gibt3) Target Hosts: erforderliches Setup
ac-ops installiertacops mit Forced-Command-SSH-Modus (ac-ops --ssh-restricted)docker-issue-analysis.yaml)Nach den Änderungen starten Sie das Gateway neu:
sudo ac-gatewayctl restart
Nach install.sh bearbeiten Sie typischerweise:
/etc/admin-companion/ac-ops-gateway.cfg/etc/admin-companion/ac-ops-gateway.profiles.yamlDann neu starten:
sudo ac-gatewayctl restart
Secrets-Verzeichnis (in den Container gemountet als /run/secrets):
/etc/admin-companion/ac-ops-gateway-secrets/Default Ownership Model (empfohlen):
0700, owned by 20102:201020600, owned by 20102:201020600, owned by 20102:20102 (erforderlich für OpenSSH)Auf jedem Zielhost:
command -v ac-ops
Wenn ac-ops fehlt, installieren Sie das Admin Companion Client Paket, das es bereitstellt.
acops anlegen (empfohlen)Auf jedem Zielhost einen dedizierten Service-User anlegen und das SSH-Verzeichnis vorbereiten:
# Empfehlung: dedizierter Service-User ohne interaktiven Login
id acops >/dev/null 2>&1 || sudo useradd -m -s /usr/sbin/nologin acops
# SSH-Verzeichnis und authorized_keys
sudo install -d -m 0700 -o acops -g acops /home/acops/.ssh
sudo install -m 0600 -o acops -g acops /dev/null /home/acops/.ssh/authorized_keys
Wenn Ihr OS useradd nicht bereitstellt, verwenden Sie OS-spezifische Tools, um einen normalen Benutzer acops mit Home-Verzeichnis anzulegen.
Optionales Hardening (empfohlen): Forced-Command auch in sshd erzwingen und Session-Features deaktivieren:
cat <<'EOF' | sudo tee /etc/ssh/sshd_config.d/90-acops-admin-companion.conf >/dev/null
Match User acops
ForceCommand ac-ops --ssh-restricted
PermitTTY no
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
EOF
sudo systemctl reload ssh
Auf dem Gateway-Host befindet sich der Public Key unter:
/etc/admin-companion/ac-ops-gateway-secrets/acops_gateway_ed25519.pubAuf dem Zielhost fügen Sie ihn an diese Datei an:
/home/acops/.ssh/authorized_keysEmpfohlene Einschränkungen:
command="ac-ops --ssh-restricted"no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-user-rcBeispiel (ersetzen Sie <PUBKEY> durch die wörtliche Public-Key-Zeile aus .../acops_gateway_ed25519.pub des Gateways):
umask 077
printf '%s\n' 'command="ac-ops --ssh-restricted",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding <PUBKEY>' \
>> /home/acops/.ssh/authorized_keys
chown acops:acops /home/acops/.ssh/authorized_keys
chmod 0600 /home/acops/.ssh/authorized_keys
Das Gateway wird (auf dem Zielhost) aufrufen:
ac-ops --ssh-restricted --use-case <name> --event -Im ssh-restricted Modus akzeptiert ac-ops nur Use-Cases aus erlaubten Verzeichnissen.
Platzieren Sie Ihre Use-Case YAML-Dateien auf den Zielhosts in den erlaubten Use-Case Verzeichnissen (häufig unter /etc/admin-companion/ops/use-cases plus Vendor libexec Paths).
ac-gatewayctl ist ein dünner Wrapper um Compose.
Häufige Befehle:
sudo ac-gatewayctl up -d
sudo ac-gatewayctl ps
sudo ac-gatewayctl logs -f
sudo ac-gatewayctl restart
sudo ac-gatewayctl down
sudo ac-gatewayctl pull
Konfiguration/Secrets behalten:
sudo ac-gatewayctl uninstall
Alles entfernen (gefährlich; löscht Secrets und entfernt auch das Gateway-Image):
sudo ac-gatewayctl uninstall --purge
Standardmäßig veröffentlicht der Compose-Stack das Gateway auf Host-Port 8080:
ports: ["8080:8080"]Wenn Port 8080 auf dem Gateway-Host bereits genutzt wird, ändern Sie die linke Seite (Host-Port) in:
/opt/admin-companion-gateway/docker-compose.ymlBeispiel: Stattdessen auf Host-Port 18080 veröffentlichen:
ports:
- "18080:8080"
Dann die Änderung anwenden:
sudo ac-gatewayctl up -d
Tipp: Sie können prüfen, was aktuell auf 8080 lauscht, mit:
sudo ss -ltnp | grep ':8080' || true
Symptom:
- SSH Output enthält: ssh-restricted: use-case not found in allowed use-case dirs
Fix: - Sicherstellen, dass der Use-Case auf dem Zielhost unter erlaubten Use-Case Verzeichnissen vorhanden ist. - Sicherstellen, dass der angeforderte Use-Case Name exakt übereinstimmt.
sink_done.detail und sink_done.params in DEBUG Logs.{"text":"..."}) und sollte JSON-escaped Template-Inserts verwenden.In /etc/admin-companion/ac-ops-gateway.cfg:
AC_OPS_GATEWAY_LOG_LEVEL=DEBUGUm vollen Request Input/Output zu loggen, zusätzlich setzen:
AC_OPS_GATEWAY_LOG_FULL_INPUT=trueAC_OPS_GATEWAY_LOG_FULL_OUTPUT=trueWichtig: Full Input/Output Logging ist nur mit DEBUG erlaubt.