Der Admin-Companion-Client muss in der Lage sein, POST-Anfragen an diese beiden Admin-Companion-API-Endpunkte zu senden und Antworten von ihnen zu empfangen:
https://api.admin-companion.ai:443/dialogue/*https://api.admin-companion.ai:443/search/*Stellen Sie sicher, dass Ihre Firewalls diesen Datenverkehr nicht blockieren.
Vereinfachter Netzwerkablauf:
ADMIN_COMPANION_KEY
auf den Wert des API-Keys:export ADMIN_COMPANION_KEY="<Your API key>"$HOME/.bashrc
für bash. Verwenden Sie die Resource-Datei Ihrer eigenen Shell.source $HOME/.bashrc
nach dem Ändern der Datei auszuführen.echo $ADMIN_COMPANION_KEY
in Ihrer Shell ausführen. Es sollte den Wert des API-Keys zurückgeben.
$HOME/.admin-companion/api-key
(benutzerspezifisch)
ADMIN_COMPANION_KEY="<Your API key>"$HOME/.admin-companion/api-keychmod 600 $HOME/.admin-companion/api-key.
/etc/admin-companion/api-key
(systemweit)
ADMIN_COMPANION_KEY="<Your API key>"/etc/admin-companion/api-keychown root:root /etc/admin-companion/api-keychmod 644 /etc/admin-companion/api-keyai "Are you there?"ai "¿Estás ahí?"ai "Est-ce que tu es là?"ai "Bist du da?"$HOME/.admin-companion/admin-companion.log
für Details.
Die Client-Software verfügt über eine integrierte Sicherheitsschicht, die sicherstellt, dass nur vom Benutzer freigegebene Befehle ausgeführt werden können.
Die Künstliche Intelligenz interagiert niemals direkt mit dem System. Sie kann nur mit der Sicherheitsschicht der Client-Software kommunizieren. Diese Sicherheitsschicht stellt die Zustimmung des Benutzers vor jeder Befehlsausführung sicher.
Sie können den Admin-Companion-Client mit dem Befehl ai aufrufen.
Verwendung: ai [options] | [max request token size] [model] [natural language request]
Sie können entweder eine Option oder eine Anfrage in natürlicher Sprache angeben, aber niemals beides gleichzeitig.
[options]: Siehe Kommandozeilenparameter unten
[max request token size]: -s <number of tokens> oder --size <number of tokens>:
[model]: -m <model-name> oder --model <model-name>:
ai -m gpt-5-mini "Are you there?"[natural language request]:
ai "I'd like to create a backup script with 10 rotating files for the content of the path /mnt/data"ai find and list the configuration files of the application xyz (you find the application in /usr/xyz)ai find and list the configuration files of the application xyz \(you find the application in /usr/xyz\)ai I'd like to create a backup script with 10 rotating files for the content of the path /mnt/dataai I would like to create a backup script with 10 rotating files for the content of the path /mnt/dataai I'd like to create a backup script with 10 rotating files for the content of the path /mnt/data'ai "I'd like to create a backup script with 10 rotating files for the content of the path /mnt/data"ai ohne Parameter und geben Sie Ihre Anweisung interaktiv ein:
$ ai
Edit your input below. Submit with Alt+Enter:
Ich möchte ein Backup-Skript erstellen.
Ich möchte sichern: /mnt
Bitte packe die Dateien als tar.gz
Das Tarball soll nach /backup geschrieben werden
<Alt-Enter>
Beispiele:
ai "Are you there?"ai -s 100000 "Are you there?"ai -vai -t "We analyze an issue with our web server not reacting to requests on port 443."ai
-h or --help-l or --list-c or --clear-messages-b [<background>] / --set-background [<background>]-rb or --remove-background-sb or --show-background-t [<topic>] / --set-topic [<topic>]-rt or --remove-topic -st or --show-topic-rm or --remove-memory -sm or --show-memory-er or --enable-use-release -dr or --disable-use-release -ek or --enable-knowledge -dk or --disable-knowledge -ec or --enable-citations -dc or --disable-citations -v or --version ac-ops ist ein Client für Automatisierung in operativen Workflows, der durch Richtlinien (Policies) strikt begrenzt wird. Es ist kein General-Purpose-Agent: Es kann ausschließlich über Tools agieren, die durch eine ausgewählte Use-Case-Konfiguration (YAML) explizit erlaubt wurden.
Nutzen Sie ac-ops, um LLM-Unterstützung sicher in Automatisierung (Skripte, Cronjobs, DevOps, CI-Pipelines, Incident-Runbooks) einzubetten, mit:
run_as-Regeln)High-Level-Ablauf:
ac-ops sendet Instruktion + Payload an das Backend-LLM.ac-ops führt nur Tools aus, die im Use-Case erlaubt sind.Voraussetzungen (/etc/admin-companion/admin-companion.cfg):
ADMIN_COMPANION_DIALOGUE_APIADMIN_COMPANION_DIALOGUE_API_VERADMIN_COMPANION_KEY (API key)...sind gesetzt.
Der Aufruf unten benötigt auf der lokalen Maschine docker installiert.
Er liest das beispielhafte Docker Fehler-Event von stdin und versucht dieses auf Ihrer Maschine zu finden, was naturgemäß nicht möglich sein wird. Versuchen Sie es.
Er hat Debugging auf der Konsole aktiviert, sodass Sie ein Live-Ausführungs-Transkript auf der Konsole sene können. Dieses wird auf der Konsole mit der Ausgabe von ac-ops gemischt und ist nicht für Produktion geeignet.
Ersetzen Sie <prefix> mit /usr (oder /usr/local für FreeBSD). Dies ist abhängig vom Standard-Installationsverzeichnis der Distribution.
ac-ops \
--use-case <prefix>/libexec/admin-companion/ops/use-cases/docker-issue-analysis.yaml \
--event - \
--debug-console \
<<'EOF'
2026-02-20T17:35:02.458350834Z container die 7af8edcbaaac4000d38709787d6241a20715e48d476ca7d7d44446257d2175ac (exitCode=1, image=alpine:3.19, name=acme-crm)
EOF
Alternativ können Sie auch ihre eigene reale Docker Fehlermeldung in den Use Case streamen.
Erstellen Sie die Datei /etc/admin-companion/ops/use-cases/test-ls-path.yaml mit diesem Inhalt:
id: test.ls.path.v1
description: Execute the tool LsPath for testing
# Whether to use Admin Companion's internal knowledge base
use_internal_knowledge: true
# Whether to use this client's platform release information to tailor LLM's answers better to this system
use_platform_release_information: true
instruction: |
Execute the tool LsPath twice for testing purposes:
- Once with disallowed parameter /var/log/apache2
- Once with allowed parameter /var/log
Show a summary of what you find.
Rate, whether the output is what you expected and why.
output_mode: text
tools:
- name: LsPath
run_as: sudo
tool_config:
LsPath:
restrict:
path:
match: path_prefix_real
allow:
- /var/log
deny:
- /var/log/apache2
Führen Sie dann dieses Kommando aus:
ac-ops --use-case /etc/admin-companion/ops/use-cases/test-ls-path.yaml --debug-console
ac-ops --use-case PATH [--event PATH|-] [--ssh-restricted] [--debug-console] [instruction]
--use-case PATH
Erforderlich
Pfad zu einer Use-Case-YAML (siehe unten).
--event PATH|-
Optional
Fügt der Anfrage ein Event-Payload hinzu.
Nutzen Sie -, um von stdin zu lesen.
--ssh-restricted
Optional
Nutzen Sie diese Option, wenn ac-ops per SSH im Forced-Command-Modus ausgeführt wird (z. B. über die ForceCommand-Direktive in sshd_config oder über command="ac-ops --ssh-restricted" in authorized_keys).
In diesem Modus liest ac-ops die eigentlichen CLI-Argumente aus SSH_ORIGINAL_COMMAND und erwartet das Event-Payload auf stdin (nutzen Sie --event -).
--debug-console
Optional
Gibt ein menschenlesbares Ausführungsprotokoll auf stdout aus, inklusive:
Request-Context (Use-Case-ID, Instruktion, Event-Payload)
jeden Tool-Run (Tool-Name, ob als User oder via sudo ausgeführt)
Tool stdout/stderr (begrenzt; optional redacted)
instruction (positional)
Optional
Überschreibt die Default-Instruktion des Use-Cases.
0 - Request wurde erfolgreich abgeschlossen2 - ungültige Argumente/Konfiguration, fehlende Backend-Umgebung, Backend- oder Tool-Loop-FehlerBeim Start lädt ac-ops die Konfiguration:
1) API-Key aus der Datei (nur wenn ADMIN_COMPANION_KEY nicht bereits in der Umgebung gesetzt ist):
~/.admin-companion/api-key/etc/admin-companion/api-key2) Konfigurationsdatei:
/etc/admin-companion/admin-companion.cfgDie Konfigurationsdatei überschreibt keine Variablen, die bereits in der Umgebung gesetzt sind.
Use-Cases definieren die Policies für einen Typ von Automatisierung.
Ein Use-Case existiert, um:
user oder via passwortlosem sudo läuftFileQuery lesen darf)Die Definition eines Tools folgt dieser Kette:
Implementierung (nur erforderlich für benutzerdefinierte Tools. Keine Implementierungsarbeit ist nötig, wenn Sie vendor-shipped Tools und vendor-shipped Use-Cases unverändert verwenden.)
a. Tool-Funktionalität und Parameter definieren (.../admin-companion/ops/tools-spec/)
b. Tool-Wrapper implementieren, z.B. als Shell-Skript, das die Parameter konsumiert und die definierte Funktionalität umsetzt (admin-companion/ops/tools-bin/)
c. Tool in ac-ops registrieren und auf den ausführbaren Wrapper mappen (.../admin-companion/ops/tools.yaml)
d. Tool im Use-Case erlauben und Policies definieren (.../admin-companion/ops/use-cases/)
Ausführung
a. Ihre Maschine ruft ac-ops mit einem Use-Case auf.
b. Der Request wird an das LLM gesendet.
c. Das LLM möchte ein Tool ausführen.
d. ac-ops prüft, ob das Tool im Use-Case erlaubt ist und ob der Call den Policies entspricht.
e. Wenn ja, wird der Wrapper ausgeführt (.../admin-companion/ops/tools-bin/).
Vendor-provided Tools befinden sich unter <prefix>/libexec/admin-companion/ops/...
Admin-Overrides und zusätzliche benutzerdefinierte Tools befinden sich unter /etc/admin-companion/ops/...
<prefix> ist /usr oder /usr/local, abhängig davon, wo ac-ops installiert ist.
Die Strukturen unter <prefix>/libexec/admin-companion/ops (vendor-provided) und /etc/admin-companion/ops (override und benutzerdefiniert) sind identisch.
Sie können daher in die vendor-provided-Tools schauen, um über die Implementierung von Tools zu lernen, die Sie dann im Verzeichnis für override und user defined implementieren können.
Ops-Tools werden lokal von ac-ops als externe Wrapper ausgeführt unter:
<prefix>/libexec/admin-companion/ops/tools-bin/<impl>/etc/admin-companion/ops/tools-bin/<impl><prefix> ist /usr oder /usr/local, abhängig davon, wo ac-ops installiert ist.
Argument-Mapping:
arguments als JSON an ac-ops.{"unit":"docker.service"} -> --unit docker.service{"full":true} -> --fullWrapper-Implementierungs-Konventionen:
sh-Skripte und können optional "$DIR/lib/common.sh" sourcen (ausgeliefert unter tools-bin/lib/common.sh)--help und -h können via common.sh-Helper _ac_handle_help usage "$@" und einer benutzerdefiniert usage-Funktion unterstützt werden_ac_parse_args und Validatoren aus lib/common.sh verwenden--no-pager bevorzugen)Um zu sehen, wie die Helper in common.sh genutzt werden können, ist es am besten, einige vendor-provided Implementierungen zu prüfen.
Verfügbare Tools werden im lokalen Tool-Registry (tools.yaml) deklariert. Nur diese Tools können in einer Use-Case-Definition verwendet werden.
<prefix>/libexec/admin-companion/ops/tools.yaml/etc/admin-companion/ops/tools.yamlDie meisten Tools werden über lokale Wrapper-Implementierungen unter tools-bin/ ausgeführt.
<prefix>/libexec/admin-companion/ops/tools-bin//etc/admin-companion/ops/tools-bin/FileQuery ist ein builtin-security Tool, das im Client implementiert ist (kein externer Wrapper).
Aktuelle Tool-Namen:
DockerEventsDockerInfoDockerInspectDockerLogsDockerNetworkInspectDockerNetworkLsDockerPortDockerPsDockerStatsSnapshotDockerSystemDfDockerVolumeInspectDockerVolumeLsFileQueryJournalctlUnitSystemctlStatus(Diese Liste wird in künftigen Versionen von Admin Companion erweitert.)
Eine Use-Case-YAML definiert:
id: Stabiler Identifierdescription: Kurzer Text, nur zu Dokumentationszweckenuse_internal_knowledge: true|false -> definiert, ob die interne Knowledge Base von Admin Companion verwendet werden solluse_platform_release_information: true|false -> definiert, ob ac-ops das Betriebssystem und das Release lokal ermittelt und an das LLM sendet (um Antworten besser ans System anzupassen)instruction: Default-Instruktion für das LLM (kann durch positionales instruction im ac-ops-Kommando überschrieben werden)background: Optionaler Background-Kontext (z.B. spezifische Systemkonfigurationen, Pfade, etc.), der an das LLM übergeben wird (Use-Case-spezifisch)output_mode: text|json -> Hinweis an das LLM, wie die finale Antwort formatiert werden solltools: Erlaubte Tools und wie sie laufen (run_as sudo|user)tool_config: Policies pro ToolOrte:
- Vendor default: <prefix>/libexec/admin-companion/ops/use-cases/*.yaml
- Admin override und zusätzliche benutzerdefiniert Tools: /etc/admin-companion/ops/use-cases/*.yaml
tool_config-Policies (Syntax und Semantik)tool_config definiert parameterbezogene Einschränkungen pro Tool als Policies. Einschränkungen werden als allow/deny-Listen pro Parameter ausgedrückt.
Syntax:
tool_config:
<ToolName>:
restrict:
<param>:
match: exact | path_prefix_real # optional
allow:
- <string>
- <string>
- ...
deny:
- <string>
- <string>
- ...
Semantik:
tool_config für ein Tool fehlt, oder restrict fehlt, oder restrict.<param> fehlt: Dieser Parameter ist unbeschränkt.restrict.<param> vorhanden ist:deny matcht, wird der Call von ac-ops abgelehnt.allow nicht leer ist: Der Wert muss auf genau einen Eintrag in allow matchen.allow leer ist: Der Parameter ist effektiv verboten (deny-all).Matching:
match steuert, wie allow/deny-Einträge von ac-ops interpretiert werden.exact (default): exakter String-Vergleich.path_prefix_real: behandelt allow/deny-Einträge als absolute Directory-Präfixe; der angeforderte Pfad wird kanonisiert (real path) und muss unterhalb eines erlaubten Verzeichnisses liegen.match fehlt, ist der Default exact.FileQuery.restrict.path nutzt immer path_prefix_real.Enforcement:
tool_config.<Tool>.restrict.*-Regeln werden client-seitig erzwungen, bevor externe Tools ausgeführt werden.match: path_prefix_real.Hinweis: tool_config wird in Tool-Descriptions injiziert, die an das LLM gesendet werden. Halten Sie diese kurz, um Tokens zu sparen.
Hartes limit: 32768 Bytes (JSON-serialized). In der Praxis sollte es deutlich kleiner sein.
backgroundUse-Cases können background (Freitext) definieren, um stabilen Kontext für das LLM innerhalb dieses Use-Cases bereitzustellen.
background auf Basis fehlender oder unklarer Informationen nachschärfen.output_modeoutput_mode ist nur ein Hinweis an das LLM. Es verbessert Konsistenz, ist aber keine harte Garantie.
Ihre Automatisierung sollte damit umgehen können:
output_mode: jsonWenn Sie strikt maschinenlesbare Ausgaben benötigen, ergänzen Sie Validierung im Pipeline-Schritt.
id: docker.issue.analyze.v2
description: Analyze a Docker issue from an event payload (log line/snippet)
# Whether to use Admin Companion's internal knowledge base
use_internal_knowledge: true
# Whether to use this client's platform release information to tailor LLM's answers better to this system
use_platform_release_information: true
# This use case is intended for root cause analysis based on a Docker error snippet.
# Ths error snippet is either piped into ac-ops via --event - or by providing it in a file via --event <filename>
background: |
The docker installation is fully local.
instruction: |
Analyze the provided Docker event/log snippet.
By collecting evidence via allowed tools, identify the likely root cause of the issue as well as the proposed steps to fix it.
Output the results as ticket to an Administrator, which handles the issue then.
Format of the ticket:
```TICKET
Use Case: <use case id>
Event: <dump of the event>
Result of the first analysis:
<result of your analysis>```
output_mode: text
tools:
- name: DockerInfo
run_as: sudo
- name: DockerPs
run_as: sudo
- name: DockerInspect
run_as: sudo
- name: DockerLogs
run_as: sudo
- name: DockerEvents
run_as: sudo
- name: DockerStatsSnapshot
run_as: sudo
- name: DockerNetworkLs
run_as: sudo
- name: DockerNetworkInspect
run_as: sudo
- name: DockerPort
run_as: sudo
- name: DockerVolumeLs
run_as: sudo
- name: DockerVolumeInspect
run_as: sudo
- name: DockerSystemDf
run_as: sudo
- name: SystemctlStatus
run_as: sudo
- name: JournalctlUnit
run_as: sudo
- name: FileQuery
run_as: sudo
tool_config:
FileQuery:
restrict:
path:
match: path_prefix_real
allow:
- /var/log
- /etc/docker
deny:
- /var/log/apache2
SystemctlStatus:
restrict:
unit:
match: exact
allow:
- docker.service
- containerd.service
Beispiele: DockerInfo, DockerPs, DockerInspect, ...
ac-ops löst das Tool in eine lokale Wrapper-Implementierung unter tools-bin/ auf und führt sie aus.tools-spec/<impl>.yaml bereitgestellt (siehe unten).Aktuell: FileQuery
ac-ops-Client implementiert.tools.yamlac-ops nutzt ein lokales Tool-Registry (tools.yaml), das Tool-Name auf Folgendes mappt:
impl: Name des Implementierungs-Skripts (Lookup unter tools-bin/)timeout_seconds: maximale Laufzeit für dieses ToolSuchreihenfolge für das Tool-Registry:
<prefix>/libexec/admin-companion/ops/tools.yaml/etc/admin-companion/ops/tools.yaml
<prefix> ist /usr oder /usr/local, abhängig davon, wo ac-ops installiert ist.Wenn Sie das Vendor-Default tools.yaml ergänzen möchten, müssen Sie die Datei in den entsprechenden Unterordner vom Admin-Override-Verzeichnis kopieren und sie dann ergänzen.
Anderenfalls verlieren Sie die Vendor-Default-Tools.
Suchreihenfolge für das Implementierungs-Skript:
<prefix>/libexec/admin-companion/ops/tools-bin/etc/admin-companion/ops/tools-bin
<prefix> ist /usr oder /usr/local, abhängig davon, wo ac-ops installiert ist.Registry-Struktur:
builtin_tools: ac-ops built-in ToolsFileQuery (builtin-security)external_tools: Tool-Implementierungen, die via externem Wrapper auf der Client-Maschine ausgeführt werden (vendor-provided oder user-defined)DockerInfo, DockerLogs, SystemctlStatus, LsPathBeispiel:
builtin_tools:
FileQuery:
impl: <internal>
timeout_seconds: 15
external_tools:
DockerInfo:
impl: DockerInfo
timeout_seconds: 15
LsPath:
impl: ls_path_v1
timeout_seconds: 10
<impl>?<impl> ist der Dateiname der Tool-Implementierung, die auf dem Client ausgeführt wird.
Beispiel:
DockerInfo<impl>: DockerInfoausgeführter Pfad .../admin-companion/ops/tools-bin/DockerInfo
... folgt der oben beschriebenen Auflösung.
tools-spec/<impl>.yamlFür Tools, deren Function-Specs client-seitig bereitgestellt werden ("external_tools" in tools.yaml),
werden die Specs als separate YAML-Dateien nach Implementierungsnamen gespeichert:
Vendor provided:
/usr/libexec/admin-companion/ops/tools-spec/<impl>.yaml
oder /usr/local/libexec/admin-companion/ops/tools-spec/<impl>.yaml
Admin override oder zusätzliche benutzerdefiniert Tools:
/etc/admin-companion/ops/tools-spec/<impl>.yamlDateiformat:
description: <string>
parameters:
type: object
properties:
<param>:
type: <string|integer|boolean>
description: <string>
# Optional JSON-schema fields:
# ATTENTION:
# These fields are only a weak guidance for the LLM, not hard constraints for execution
# Hard constraints need to be managed either in the use-case definition or in the execution wrapper!
# enum: [..]
# minimum: <int>
# maximum: <int>
...
required: [<param>, ...] # optional
Hinweise:
description pro Parameter ist empfohlen (sie hilft dem LLM, das Tool korrekt zu verwenden).Beim Ausführen eines Tools löst ac-ops die Implementierung in dieser Reihenfolge auf:
1) Admin override
/etc/admin-companion/ops/tools-bin/<impl>2) Vendor default (abhängig vom Install-Prefix)
/usr/libexec/admin-companion/ops/tools-bin/<impl>/usr/local/libexec/admin-companion/ops/tools-bin/<impl>FileQuery ist ein built-in Tool ohne externen Wrapper und wird vom Assistenten genutzt, um lokale Dateien sicher zu inspizieren - typischerweise Logs.
Es ist dafür ausgelegt, um u.a. folgende Aufgabenstellungen zu unterstützen:
ac-ops-Logs lesenWenn Debug-/Audit-Logging aktiviert ist, sehen Sie typischerweise:
ac-ops hat 3 Ausgabekanäle:
--debug-console./etc/admin-companion/admin-companion.cfg.Debug-Log:
/var/log/admin-companion/ac-ops.debug.jsonl~/.admin-companion/ac-ops/debug.jsonlAudit-Log:
/var/log/admin-companion/ac-ops.audit.jsonl~/.admin-companion/ac-ops/audit.jsonlFolgendes ist eine Beispielkoniguration, typischerweise am Ende von /etc/admin-companion/admin-companion.cfg:
# Debug-Log (JSONL)
ops.debug.enabled=true
ops.debug.destination=auto
ops.debug.max_bytes=1048576
ops.debug.backup_count=2
ops.debug.max_record_bytes=65536
ops.debug.redact=true
# Audit-Log (JSONL)
ops.audit.enabled=true
ops.audit.destination=auto
ops.audit.max_bytes=1048576
ops.audit.backup_count=2
ops.audit.max_record_bytes=65536
ops.audit.redact=true
# Audit-Elemente (CSV)
# Hinweis: wenn ops.audit.enabled=true und ops.audit.elements leer/fehlend ist, bricht ac-ops früh mit einem Fehler ab.
ops.audit.elements=context,tool_call,tool_exec,tool_result,errors
ops.debug.enabled / ops.audit.enabledtrue|falseops.debug.destination / ops.audit.destinationWohin die JSONL-Logdatei geschrieben wird:
system/var/log/admin-companion/...ac-ops fehluser~/.admin-companion/...auto (default)ops.debug.max_bytes / ops.audit.max_bytesops.debug.backup_count / ops.audit.backup_countops.debug.max_record_bytes / ops.audit.max_record_bytesops.debug.redact / ops.audit.redacttrue|false (default: true)ops.audit.elementsCSV-Liste der Audit-Elemente, die ins Audit-Log geschrieben werden. Wenn ein Element nicht gelistet ist, wird es nicht geschrieben.
Aktuell emittierte Elementnamen:
contexttool_calltool_exectool_resulterrorsWenn ops.*.redact=true, wird Redaction auf Debug- und Audit-Logs (und das Debug-Konsolen-Transkript) angewendet. Redaction ist zeilenbasiert und versucht, Secret-Werte zu entfernen, während Kontext erhalten bleibt.
Beispiel:
password=supersecret wird zu password= <redacted>Wenn Sie sehen:
Missing ADMIN_COMPANION_DIALOGUE_API or ADMIN_COMPANION_DIALOGUE_API_VERMissing ADMIN_COMPANION_KEYSetzen Sie diese in der Umgebung oder in /etc/admin-companion/admin-companion.cfg (und stellen Sie sicher, dass die API-Key-Datei existiert).
Wenn ein Tool mit run_as: sudo konfiguriert ist:
sudo -n ausgeführt (non-interactive)not_found: Datei existiert nicht (strikte Path-Resolution)forbidden: Zugriff wird durch Policy abgelehnt (deny gewinnt)
Diese Seite beschreibt, wie Admin Companion Gateway konfiguriert wird.
Admin Companion Gateway ist ein schlanker Webhook-Receiver und Router: es nimmt HTTP-Events entgegen (z. B. von Prometheus Alertmanager), normalisiert sie über profiles.yaml und ruft anschließend ac-ops per SSH auf einem Zielhost im --ssh-restricted Modus auf. Je nach Profil liefert es die ac-ops Ausgabe zurück und/oder triggert Post-Actions (Sinks) wie z. B. ServiceNow oder Slack - dabei werden Allow - Deny Policies für Zielhosts und Use-Cases durchgesetzt. Admin Companion Gateway ist hochgradig konfigurierbar und lässt sich ohne individuelle Softwareentwicklung an eine Vielzahl von Ein- und Ausgabesystemen anbinden.
Für Consulting-Services zur Integration in Ihre Umgebung, kontaktieren Sie uns über das Kontaktformular: https://www.admin-companion.ai/contact
Für die Installation siehe:
Nach der Installation sind diese Dateien am wichtigsten:
Gateway-Konfiguration (dotenv):
/etc/admin-companion/ac-ops-gateway.cfgProfiles Routing (YAML):
/etc/admin-companion/ac-ops-gateway.profiles.yamlSecrets (read-only in den Container gemountet als /run/secrets):
/etc/admin-companion/ac-ops-gateway-secrets/Inbound:
Outbound:
acops mit dem Zielhost.ac-ops --ssh-restricted).Zusätzlich validiert das Gateway:
target_host gegen Allow - Deny Policies.use_case gegen eine Allowlist.Das Gateway liest seine Konfiguration aus /etc/admin-companion/ac-ops-gateway.cfg.
Häufige Einstellungen:
Listener:
AC_OPS_GATEWAY_LISTEN=0.0.0.0:8080Profiles-Datei:
AC_OPS_GATEWAY_PROFILES_YAML=/etc/admin-companion/ac-ops-gateway.profiles.yamlBearer-Token:
AC_OPS_GATEWAY_BEARER_TOKEN_FILE=/run/secrets/ac_ops_gateway_tokenSSH:
AC_OPS_GATEWAY_SSH_USER=acopsAC_OPS_GATEWAY_SSH_PORT=22AC_OPS_GATEWAY_SSH_IDENTITY_FILE=/run/secrets/acops_gateway_ed25519AC_OPS_GATEWAY_SSH_KNOWN_HOSTS=/run/secrets/known_hosts (nur erforderlich bei Strict Host Key Checking; kann read-only sein)AC_OPS_GATEWAY_SSH_STRICT_HOST_KEY_CHECKING=true (empfohlen)false persistiert das Gateway keine Host Keys (UserKnownHostsFile=/dev/null)Policies:
AC_OPS_GATEWAY_TARGETS_ALLOW_CIDRS=...AC_OPS_GATEWAY_TARGETS_DENY_CIDRS=...AC_OPS_GATEWAY_USE_CASE_ALLOW=... (CSV oder ALL)AC_OPS_GATEWAY_USE_CASE_DEFAULT=...Tipp:
Die Profiles-Datei definiert:
target_host, use_case, stdin_payload berechnet werdenTop-level Struktur:
endpoints: [ {path, profile}, ... ]profiles: { <name>: <profile>, ... }Profil-Felder:
Pflicht:
target_hoststdin_payloadOptional:
use_casededup_key (wenn nicht gesetzt, ist es ein leerer String)ctx_vars (optionale berechnete Variablen, nutzbar in Sink-Templates als ${ctx.<name>})outputEin Expression-Node ist entweder:
const), odertransforms.Operatoren:
path: <string>
a.b[0].c oder $ für das Root-Objektconst: <scalar>
coalesce: [<expr>, ...] (erstes nicht-leeres Ergebnis)join: {sep, parts}json_dump: {path: <path>}map: {key: <expr>, table: {...}, default: <value>} (exakter Match)Transforms (Strings):
trim, lower, upper, strip_portregex_sub: {pattern, repl}regex_capture: {pattern, group}truncate: <n>sha256_hexSinks laufen nach der remote ac-ops Ausführung.
webhook Sink:
exec Sink:
Output-Verhalten:
output.return_result=true (default)
X-Exit-Codeoutput.return_result=false
Option:
output.http_error_on_ac_ops_failure=true
ac-ops mit Exit-Code != 0 endet, liefert das Gateway HTTP 502 und überspringt SinksSink Bodies unterstützen String-Templating:
${ctx.<field>}
ctx.target_host, ctx.use_case, ctx.dedup_keyctx.ac_ops_exit_code, ctx.ac_ops_outputctx_vars (z. B. ctx.alertname_norm)${in.<path>}
path Syntax${file.<path>}
Helpers:
${json_escape:<ref>} zum Einbetten von Text in JSON-String-Fragmente${urlenc:<ref>} für URL-EncodingHinweise:
json_escape, urlenc).ctx_vars und referenzieren sie als ${ctx.<name>}.Die folgenden Dateien und Ordner werden von Admin Companion verwendet.Einige werden von den Clients 'ai' und 'ac-ops' gemeinsam genutzt, anderesind client-spezifisch.
$HOME/.admin-companion/
api-key: Optionale API-Key-Datei. Wenn ADMIN_COMPANION_KEY in der Umgebung gesetztist, wird diese Datei nicht verwendet./etc/admin-companion/admin-companion.cfg: Admin-Companion-Konfigurationsdatei.api-key: Optionale systemweite API-Key-Datei. Wenn ADMIN_COMPANION_KEY in derUmgebung gesetzt ist, wird diese Datei nicht verwendet.symlink_name: Interne Datei für Installation/Deinstallation. Ändern Sie diese Datei niemals./usr/bin/ oder /usr/local/bin/$HOME/.admin-companion/
admin-companion.log: Logdatei des interaktiven Clients. Die Datei wird rotiert; es werden zweiDateien mit jeweils etwa 1 MB Größe vorgehalten.admin-companion.bill: Diese Datei protokolliert für jede Anfrage die Anzahl der verbrauchten Tokens. Die Datei wird rotiert; es werden zwei Dateien mit jeweils etwa 1 MB Größe vorgehalten.conversation_history.pickle: Diese Datei speichert den Gesprächsverlauf dauerhaft (auch über Neustartshinweg)./etc/admin-companion/ops/use-cases/: Use-Case-Definitionen (YAML), um erlaubte Tools und Guardrails für ac-opsfestzulegen.tools.yaml: Tool-Registry (YAML), die verfügbare Tools und deren Implementierungendefiniert.tools-bin/: Optionale, vom Administrator bereitgestellte Tool-Wrapper-Implementierungen(ausführbare Dateien).tools-spec/: Optionale, vom Administrator bereitgestellte Tool-Spezifikationen (YAML) fürexterne Tools (vom Client bereitgestellte Function-Spezifikationen).$HOME/.admin-companion/ac-ops/debug.jsonlaudit.jsonl/var/log/admin-companion/ac-ops.debug.jsonlac-ops.audit.jsonl/usr/libexec/admin-companion/ops/ oder /usr/local/libexec/admin-companion/ops/Im Dashboard der Web-Konsole sehen Sie eine Übersicht über Ihre Guthaben und Ihre Nutzung auf Monatsbasis (6 Monate) sowie auf Tagesbasis (aktueller Kalendermonat).
Auf dieser Seite sehen Sie die Metadaten der neuesten Anfragen, die über einen Ihrer API-Keys gestellt wurden (ohne den Inhalt der Anfrage).
API-Keys werden zur Authentifizierung der Anfragen des Admin-Companion-Clients verwendet. Behandeln Sie Ihre API-Keys wie ein Passwort und halten Sie sie geheim!
Sie können Ihre API-Keys auf der API-Keys Seite in der Web-Konsole erstellen, verwalten und löschen.
Sie haben folgende Optionen:
Auf der Seite „Mein Profil“ in der Web-Konsole können Sie Ihren Namen, Ihre USt-IdNr. und Ihre Adresse ändern. Land, Firmenname oder E-Mail-Adresse können Sie nicht ändern.
Diese Seite zeigt Ihre Kontoguthaben. Es gibt zwei Guthaben:
Automatische Aufladefunktion: Standardmäßig lehnt der Admin-Companion-Client bei vollständigem Verbrauch aller Guthaben weitere Anfragen mit der Meldung „Account limit reached“ ab.
Wenn Sie die automatische Aufladefunktion aktivieren, belastet Admin Companion Ihre Zahlungsmethode automatisch erneut, sobald Sie alle Guthaben innerhalb eines Abrechnungszeitraums verbraucht haben. Alle Aufladungen fließen in das nicht verfallende Guthaben und folgen den oben beschriebenen Mechanismen.
Die Aufladung erfolgt immer in derselben Höhe wie die wiederkehrende Gebühr.
Vergessen Sie nicht, nach dem Ändern der automatischen Aufladung auf „Kontoeinstellungen aktualisieren“ zu klicken, damit die Änderung wirksam wird.
Transaktionen: Auf der Kontoseite sehen Sie außerdem Ihre letzten 30 Transaktionen (z. B. wiederkehrende Zahlungen, Aufladungen, Änderungen der Zahlungsmethode usw.).
Auf der Abonnement-Seite sehen Sie, welchen Tarif Sie aktuell abonniert haben. Sie können ein Abonnement aktivieren, zu einem anderen Abonnement wechseln oder Ihr Abonnement kündigen.
Tarif wechseln: Wenn Sie zwischen den Tarifen S, M, L wechseln, wird die wiederkehrende Gebühr des neuen Tarifs sofort über Ihre hinterlegte Zahlungsmethode abgerechnet und dem nicht verfallenden Guthaben gutgeschrieben (siehe „Konto“ für Details). Ihre weitere Nutzung wird dann sofort zum Stückpreis des neuen Tarifs abgerechnet.
Zahlungsmethode aktualisieren: Auf dieser Seite können Sie auch Ihre Zahlungsmethode aktualisieren.
Abo kündigen: Die Kündigung wird zum Ende des Abrechnungszeitraums eingeplant. Sie können Admin Companion bis zum Ende des Abrechnungszeitraums weiter nutzen.
Wenn die Aufladefunktion aktiviert ist, wird Ihre Zahlungsmethode weiterhin für mögliche Aufladungen belastet.
Wenn Sie ein Abonnement kündigen, verfällt das gesamte nicht verfallende Guthaben am Ende des Abrechnungszeitraums.
In der letzten etwa eine Stunde vor dem Ende eines Abrechnungszeitraums sind keine Änderungen am Abonnement möglich.
Ihr Konto bleibt mindestens ein Jahr verfügbar, sodass Sie sich später entscheiden können, erneut einen Tarif zu abonnieren.