Hermes is Ankra’s autonomous infrastructure agent. Give it the Ankra CLI, Ankra AI, skills, and profiles so it can design, draft, and build the tools your app needs — databases, caches, and full stacks — with confirmations and a detailed bill of materials at every step.
Hermes is Ankra’s autonomous infrastructure agent. It runs on the open-source
OpenClaw runtime and connects to Ankra through the CLI,
so it can manage clusters, build stacks, query Ankra AI, and provision the
backing services your application needs — all from chat platforms like Slack,
Discord, and Telegram.Hermes is built to be given real responsibility. You can hand it full control to
design and configure the infrastructure your app depends on — a Postgres
database, a Redis cache, an ingress, observability — and it will draft the
architecture, produce a detailed bill of materials, and ask for your
confirmation before it builds anything.This guide covers:
What Hermes can do — skills, the CLI, Ankra AI, stacks, profiles, and
full architecture design
Deploying Hermes on any Kubernetes cluster as an Ankra stack
Connecting Hermes to Ankra by adding the Ankra CLI as a skill
The safeguards that keep autonomy safe — confirmations, drafted
architecture, and a detailed bill of materials
Hermes runs on the OpenClaw runtime. If you are looking for the OpenClaw
integration, this is now Hermes — the deployment mechanics are unchanged.
Deploy Hermes to any Kubernetes cluster managed by Ankra using the Stack Builder.
This gives you a self-hosted, containerized agent running inside your own
infrastructure.
Hermes stores workspace data and conversation memory. Enable persistence so this survives pod restarts:
persistence: enabled: true size: 5Gi
Encrypt sensitive values with SOPS: In the manifest edit view, click the SOPS button to encrypt your API key. This ensures the key is stored encrypted in your GitOps repository. See SOPS Encryption for setup instructions.
Hermes has shell access and can read files inside its container. Kubernetes provides meaningful isolation through container boundaries and network policies. For sensitive environments, apply a NetworkPolicy to restrict egress to only the AI provider API endpoints your model requires.
Once Hermes is running (either via the stack above or any other installation), you
give it the ability to manage your Ankra infrastructure by adding the CLI as a
skill.
Create ~/.openclaw/skills/ankra/SKILL.md with the following content:
---name: ankraversion: 1.0.0author: your-orgdescription: > Manage Kubernetes clusters and infrastructure on the Ankra platform. Use when the user wants to list clusters, deploy stacks, check cluster health, manage addons, search Helm charts, scale workers, design application infrastructure, or troubleshoot Kubernetes issues.permissions: - shell - networkconfig: api_token: type: string required: true description: "Ankra API token for authentication" secret: true---# Ankra Platform ManagementYou have access to the `ankra` CLI to manage Kubernetes clusters on the Ankra platform.## Available Commands### Cluster Operations- `ankra cluster list` -- List all clusters- `ankra cluster get <name>` -- Get cluster details- `ankra cluster select` -- Select a cluster (use `--name` for non-interactive)- `ankra cluster reconcile [name]` -- Trigger reconciliation### AI Chat- `ankra chat "<question>"` -- Ask Ankra AI about your infrastructure- `ankra chat health` -- Get cluster health summary- `ankra chat health --ai` -- Get AI-analyzed cluster health### Stack Management- `ankra cluster stacks list` -- List stacks- `ankra cluster stacks create <name>` -- Create a stack- `ankra cluster stacks delete <name>` -- Delete a stack- `ankra cluster stacks history <name>` -- View stack change history### Helm Charts- `ankra charts search <query>` -- Search for charts- `ankra charts info <name>` -- Get chart details- `ankra charts list` -- List available charts### Hetzner Cluster Provisioning- `ankra cluster hetzner create --name <n> --credential-id <id> --location <loc>` -- Create cluster- `ankra cluster hetzner workers <id>` -- Get worker count- `ankra cluster hetzner node-group list <id>` -- List node groups- `ankra cluster hetzner node-group scale <id> <group> <count>` -- Scale a node group- `ankra cluster hetzner deprovision <id>` -- Deprovision cluster### OVH Cluster Provisioning- `ankra cluster ovh create --name <n> --credential-id <id> --region <r>` -- Create cluster- `ankra cluster ovh workers <id>` -- Get worker count- `ankra cluster ovh scale <id> <count>` -- Scale workers### UpCloud Cluster Provisioning- `ankra cluster upcloud create --name <n> --credential-id <id> --zone <z>` -- Create cluster- `ankra cluster upcloud workers <id>` -- Get worker count- `ankra cluster upcloud scale <id> <count>` -- Scale workers### Credentials- `ankra credentials list` -- List all credentials- `ankra credentials get <id>` -- Get credential details### API Tokens- `ankra tokens list` -- List API tokens- `ankra tokens create <name>` -- Create a token- `ankra tokens revoke <id>` -- Revoke a token## Guardrails- Always confirm with the user before running destructive operations like `deprovision`, `delete`, or `scale` (down).- When scaling workers, show the current count first and ask for confirmation.- Never expose API tokens or credentials in responses.- For cluster creation, list the parameters back to the user and ask for confirmation before executing.- Before building application infrastructure, present a drafted architecture and a bill of materials, then wait for explicit approval.- Prefer `ankra chat` for troubleshooting questions -- it has access to live cluster data.
With the Ankra CLI skill installed, Hermes turns plain language into CLI
operations. You never have to remember command syntax — describe the outcome and
Hermes runs the right commands.
You: Reconcile the production clusterHermes: Running `ankra cluster reconcile production`... reconciliation triggered.
Hermes uses ankra chat to consult Ankra AI, which has live access to your
cluster state. Use it for health checks, root-cause analysis, and “why is this
broken” questions.
You: Why are pods crashing on production?Hermes: Let me check with Ankra AI... Running `ankra chat "Why are pods in CrashLoopBackOff?"` on production... Ankra AI found 2 pods in CrashLoopBackOff in the api namespace: - api-server-7d8f9: OOMKilled (memory limit 256Mi, usage peaked at 312Mi) - api-worker-3k9d2: exit code 1, missing DATABASE_URL env var
Hermes composes Helm addons and manifests into stacks and deploys them through
Ankra’s GitOps flow.
You: Create a monitoring stack on my staging clusterHermes: I'll create a new stack called "monitoring" on staging-cluster. Running `ankra cluster stacks create monitoring`... Done. I'll add kube-prometheus-stack and Loki. Deploy now? (y/n)
A profile is a reusable agent configuration that bundles a model, a set of
skills, guardrails, and an autonomy level. Profiles let Hermes behave
consistently and appropriately per environment — a cautious, read-mostly profile
for production and a freer profile for a sandbox.Define profiles in your Hermes configuration:
You: Switch to the production profileHermes: Now using the "production" profile. I'll confirm every change and draft architecture with a bill of materials before building anything.
Give Hermes full control to design your app’s tools
This is what Hermes is built for. Hand it a goal and let it design and configure
the infrastructure your application needs — a database, a cache, ingress,
secrets, and observability — end to end.Hermes works in three phases: design, confirm, build. It never
provisions anything before you approve the drafted architecture and its bill of
materials.
You: My app needs a Postgres database and a Redis cache on staging. Set it up.Hermes: Here's the architecture I propose for staging-cluster. Drafted architecture ───────────────────── app-data (stack) ├─ postgres primary + 1 read replica, 20Gi PVC, daily backups ├─ redis single master + 1 replica, 2Gi PVC, AOF persistence └─ secrets SOPS-encrypted credentials in the GitOps repo Bill of materials ───────────────────── Component Chart Version Replicas Storage Est. resources Postgres bitnami/postgresql-ha 14.x 2 20Gi 1 vCPU / 2Gi req Redis bitnami/redis 19.x 2 2Gi 0.5 vCPU / 512Mi req Secrets manifest (SOPS) - - - - Connection details will be written to a Kubernetes Secret named `app-data-credentials` and referenced by your app via existingSecret. Proceed to build this stack? (y/n)You: yHermes: Building... Running `ankra cluster stacks create app-data`... Done. Adding postgresql-ha, redis, and the SOPS secret manifest... Saving and deploying. Watch progress in Operations.
Hermes can iterate on the design before building — ask it to add a read
replica, change storage sizes, swap a chart, or pin versions, and it will
re-draft the architecture and bill of materials before asking again.
Autonomy is only safe with rails. Hermes enforces these by default, and you can
tighten them per profile.
Confirmations
Destructive and provisioning actions (delete, deprovision, scale-down,
building infrastructure) require explicit approval before they run.
Drafted architecture
Before building anything, Hermes presents the architecture it intends to
create so you can review and adjust it.
Detailed bill of materials
Every build is accompanied by a bill of materials — charts, versions,
replicas, storage, and estimated resources — so there are no surprises.
Secrets stay secret
Credentials are written to Kubernetes Secrets and encrypted with SOPS in
GitOps. Hermes never echoes tokens or credentials back in chat.
Match the autonomy level to the environment. Use a confirm-all profile with
architecture drafts and a bill of materials required for production, and reserve
freer profiles for sandbox clusters.
If you run Hermes in sandboxed mode (Docker), the ANKRA_API_TOKEN environment variable won’t be inherited automatically. Add it to your sandbox config: