Public key to check signed packages:
admin-companion-2025_public.keyfile_download
ai)ai can now fetch web pages either as raw HTML or as extracted text (converted to Markdown). This enables deeper research than web search snippets, without having to use curl.
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.Remark: You need an Admin Companion account and Admin Companion API key to use the client.
| Architecture | Package | Good for |
|---|---|---|
|
AMD64 (for Intel and AMD) |
admin-companion_6.2-13_amd64.deb file_download |
|
|
AMD64 (for Intel and AMD) |
admin-companion_6.2-13_backport_deb11_amd64.deb file_download |
|
|
ARM64 (AARCH64) |
admin-companion_6.2-13_arm64.deb file_download |
|
|
ARM64 (AARCH64) |
admin-companion_6.2-13_backport_deb11_arm64.deb file_download |
|
| Architecture | Package | Good for |
|---|---|---|
|
AMD64 (for Intel and AMD) |
admin-companion-6.2-13.el8.x86_64.rpm file_download |
Fedora Versions 37 and later
|
| Architecture | Package | Good for |
|---|---|---|
|
AMD64 (for Intel and AMD) |
admin-companion-6.2-13_amd64.pkg file_download Detached ASCII-armored GPG signature: admin-companion-6.2-13_amd64.pkg.asc file_download |
FreeBSD (tested on 14.3)
|
wget https://www.admin-companion.ai/static/downloads/<your needed package>
For example: wget https://www.admin-companion.ai/static/downloads/admin-companion_6.2-13_amd64.deb
wget https://www.admin-companion.ai/static/downloads/admin-companion-2025_public.key
gpg --import admin-companion-2025_public.key
gpg --verify <your downloaded installation package file name>
You get multiple lines. One line should show:
Good signature from "Admin Companion 2025 - ayonik GmbH <admin-companion@admin-companion.ai>"
...then validation is successful. You can ignore the warning message. We use a self signed signature. Just be sure, you have downloaded the public key from our website.
sudo dpkg -i <your needed package>
$HOME/.admin-companion/api-key
(Do not forget the dot "." in the path name)
ADMIN_COMPANION_KEY="<Your API key>"
https://api.admin-companion.ai:443
ai "Are you there?
wget https://www.admin-companion.ai/static/downloads/<your needed package>
For example:
wget https://www.admin-companion.ai/static/downloads/admin-companion-6.2-13.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>
You should get this:
<your downloaded installation package file name>: digests signatures OK
digests
or you don't see the
signatures
--> Then something is wrong.
sudo dnf install <your needed package>
For example:
sudo dnf install admin-companion-6.2-13.el8.x86_64.rpm$HOME/.admin-companion/api-key
(Do not forget the dot "." in the path name)
ADMIN_COMPANION_KEY="<Your API key>"
https://api.admin-companion.ai:443
ai "Are you there?

wget https://www.admin-companion.ai/static/downloads/<your needed package>
For example:
wget https://www.admin-companion.ai/static/downloads/admin-companion-6.2-13_amd64.pkg
sudo pkg install wget
sudo pkg install gnupg
if not yet installed)
wget https://www.admin-companion.ai/static/downloads/admin-companion-2025_public.key
wget https://www.admin-companion.ai/static/downloads/admin-companion-6.2-13_amd64.pkg.asc
gpg --import admin-companion-2025_public.key
gpg --verify admin-companion-6.2-13_amd64.pkg.asc admin-companion-6.2-13_amd64.pkg
You get multiple lines. One line should show:
Good signature from "Admin Companion 2025 - ayonik GmbH <admin-companion@admin-companion.ai>"
...then validation is successful. You can ignore the warning message. We use a self signed signature. Just be sure, you have downloaded the public key from our website.
sudo pkg install <your needed package>
For example:
sudo pkg install admin-companion-6.2-13_amd64.pkg$HOME/.admin-companion/api-key
(Do not forget the dot "." in the path name)
ADMIN_COMPANION_KEY="<Your API key>"
https://api.admin-companion.ai:443
ai "Are you there?
Admin Companion Gateway consists of these components
Terminology:
acops to run ac-ops for inspection.This document describes how to install Admin Companion Gateway on a Linux host using Docker Compose.
The gateway is intended for intranet deployments. It receives webhooks (eg Prometheus Alertmanager), normalizes JSON payloads via profiles, and executes remote ac-ops use-cases over SSH on target hosts.
docker compose (Compose v2 plugin), ordocker-composeNotes:
Each target host that the gateway is allowed to execute against must provide:
ac-ops exists on the target)acopsThis quickstart wires Prometheus Alertmanager - gateway - ac-ops - Slack using the shipped example profile.
Requirements:
Steps (high level):
1) Install and start the gateway (see below).
2) Edit the installed profiles file and set your Slack webhook URL:
- `/etc/admin-companion/ac-ops-gateway.profiles.yaml`
3) Configure Alertmanager to send alerts to the gateway endpoint.
The required Alertmanager receiver snippet is included as comments in the same profiles file.
4) Ensure the target hosts are prepared (SSH user acops, forced command mode, and required use-cases available).
The quickstart profile uses docker-issue-analysis.yaml (shipped with the Admin Companion client / ac-ops).
5) Restart the gateway after changes:
sudo ac-gatewayctl restart
For configuration details (expression language, sinks, templating, security), see:
https://www.admin-companion.ai/documentation?sub=ac-gw#ac-gw
You will typically download one or both of these artifacts:
Compose bundle:
admin-companion-gateway_compose_<version>.tar.gzadmin-companion-gateway_compose_<version>.tar.gz.asc (optional detached signature)Image archive (only needed for air-gapped installs):
admin-companion-gateway_image_<version>.tar.gzadmin-companion-gateway_image_<version>.tar.gz.asc (optional detached signature)If you received detached signatures, you can verify them (example):
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
Repeat the same for the image tarball if you downloaded it.
When verifying signatures you might see:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
This is normal. It does not mean the download is corrupted.
gpg: Good signature ... means the file matches the signature (integrity OK).This uses the published image from GHCR (ghcr.io/ayonik-gmbh/admin-companion-gateway:<version>).
1) Extract the compose bundle
tar -xzf admin-companion-gateway_compose_<version>.tar.gz
cd admin-companion-gateway_compose_<version>
2) Run the installer
sudo ./install.sh
What it does:
/opt/admin-companion-gateway//etc/admin-companion//etc/admin-companion/ac-ops-gateway-secrets/ with strict permissionsac_ops_gateway_tokenacops_gateway_ed25519 / .pubknown_hostsac-gatewayctl to /usr/local/bin/ac-gatewayctl3) Start the gateway
sudo ac-gatewayctl up -d
4) Check status/logs
sudo ac-gatewayctl ps
sudo ac-gatewayctl logs -f
Air-gapped means the target machine cannot pull from GHCR.
Additional step (before the normal installation): load the image into Docker.
1) Transfer both files to the target machine:
- `admin-companion-gateway_compose_<version>.tar.gz`
- `admin-companion-gateway_image_<version>.tar.gz`
2) Load the image:
gunzip -c admin-companion-gateway_image_<version>.tar.gz | docker load
If your Docker requires root:
gunzip -c admin-companion-gateway_image_<version>.tar.gz | sudo docker load
3) Continue with the standard procedure
- extract compose bundle
- `sudo ./install.sh`
- `sudo ac-gatewayctl up -d`
After install.sh, you typically edit:
/etc/admin-companion/ac-ops-gateway.cfg/etc/admin-companion/ac-ops-gateway.profiles.yamlThen restart:
sudo ac-gatewayctl restart
If you follow the quickstart profile, these are the effective changes you must make:
1) Gateway: set Slack webhook URL
/etc/admin-companion/ac-ops-gateway.profiles.yamlwebhook sink of the shipped Alertmanager profile.2) Alertmanager: add receiver snippet + configure bearer token
/etc/alertmanager/alertmanager.yml), add that receiver and point it to the gateway endpoint./etc/admin-companion/ac-ops-gateway.profiles.yamlbearer_token_fileparameter to fit the location, where you provide the file./etc/admin-companion/ac-ops-gateway-secrets/ac_ops_gateway_token (generated by install.sh) to a location, where alertmanager can access it.The Admin Companion file is mode 0600 with UID:GID 20102:20102, so you cannot refer to this file directly.
Alert payload requirements (Quickstart profile):
commonLabels.instance (or alerts[0].labels.instance) is used as target_hostcommonLabels.alertname (or service/job) is used to select the use-case; acopsdemocontainermissing is only an example alertnamedocker-issue-analysis.yaml) if there is no match3) Target hosts: required setup
ac-ops installedacops with forced-command SSH mode (ac-ops --ssh-restricted)docker-issue-analysis.yaml)After changes, restart the gateway:
sudo ac-gatewayctl restart
Secrets directory (mounted into the container as /run/secrets):
/etc/admin-companion/ac-ops-gateway-secrets/Default ownership model (recommended):
0700, owned by 20102:201020600, owned by 20102:201020600, owned by 20102:20102 (required by OpenSSH)On each target host:
command -v ac-ops
If ac-ops is missing, install the Admin Companion client package that provides it.
acops (recommended)On each target host, create a dedicated service user and prepare its SSH directory:
# Recommended: dedicated service user without interactive login
id acops >/dev/null 2>&1 || sudo useradd -m -s /usr/sbin/nologin acops
# SSH directory and 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
If your OS does not provide useradd, use your OS-specific user management tools to create a normal user acops with a home directory.
Optional hardening (recommended): enforce forced-command and disable session features on the sshd side too:
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
On the gateway host, the public key is located at:
/etc/admin-companion/ac-ops-gateway-secrets/acops_gateway_ed25519.pubOn the target host, append it to:
/home/acops/.ssh/authorized_keysRecommended restrictions:
command="ac-ops --ssh-restricted"no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-user-rcExample (replace <PUBKEY> with the literal public key line from the gateway's .../acops_gateway_ed25519.pub):
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
The gateway will call (on the target):
ac-ops --ssh-restricted --use-case <name> --event -In ssh-restricted mode, ac-ops only accepts use-cases from allowed directories.
Place your use-case YAML files on the target hosts in the allowed use-case directories (commonly under /etc/admin-companion/ops/use-cases plus vendor libexec paths).
ac-gatewayctl is a thin wrapper around compose.
Common commands:
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
Keep config/secrets:
sudo ac-gatewayctl uninstall
Remove everything (dangerous; deletes secrets and removes the gateway image too):
sudo ac-gatewayctl uninstall --purge
By default, the compose stack publishes the gateway on host port 8080:
ports: ["8080:8080"]If port 8080 is already used on the gateway host, change the left side (host port) in:
/opt/admin-companion-gateway/docker-compose.ymlExample: publish on host port 18080 instead:
ports:
- "18080:8080"
Then apply the change:
sudo ac-gatewayctl up -d
Tip: you can check what is currently listening on 8080 with:
sudo ss -ltnp | grep ':8080' || true
Symptom:
- SSH output contains: ssh-restricted: use-case not found in allowed use-case dirs
Fix: - Ensure the use-case exists on the target host under allowed use-case directories. - Ensure the requested use-case name matches exactly.
sink_done.detail and sink_done.params in DEBUG logs.{"text":"..."}) and should use JSON-escaped template insertions.In /etc/admin-companion/ac-ops-gateway.cfg:
AC_OPS_GATEWAY_LOG_LEVEL=DEBUGTo log full request input/output, also set:
AC_OPS_GATEWAY_LOG_FULL_INPUT=trueAC_OPS_GATEWAY_LOG_FULL_OUTPUT=trueImportant: full input/output logging is allowed only with DEBUG.