Claude Code writes, Ankra generates and runs, a person promotes
What you need
- Claude Code and the Ankra CLI, logged in with
ankra login. - An empty GitHub repository, and a GitHub credential in your organisation that can reach it.
- Two clusters in the same organisation: one for development and one for production. They can be clusters Ankra builds for you (Ankra Managed), clusters your cloud runs (Managed Kubernetes), or clusters you import.
- A cluster your organisation runs CI on, for Ankra Pipelines. The development cluster is a good choice.
Build it and hand it over
Give Claude Code the Ankra skills
Build the codebase
Hand the repository to Ankra
/ankra-ship-service command the skills installed. ship registers the application, waits for Ankra’s analysis and setup pull request, waits for the first build, deploys, and prints:What Ankra generates for you
When the repository is registered, Ankra’s AI reads it, detects the language and framework, and works out what it needs to run. It writes the result as one setup pull request in your repository, so every generated file is something you can read and review.- Builds and scans. Each push is built rootless in your cluster, scanned with Semgrep over the source, Checkov over the manifests and Trivy over the image, and judged against your organisation’s security gate before anything is published.
- Publishes an immutable tag. A passing build on the tracked branch is published as
sha-<7>. No tag is ever overwritten, so the tag you tested is byte-for-byte the tag you promote. - Fixes its own setup pull request. If the setup pull request fails its checks, usually on a vulnerable dependency the repository already had, Ankra AI commits a fix to the same pull request and explains it in a status comment. See When the setup pull request does not pass its checks.
- Investigates failed builds. A failed build on the tracked branch dispatches an agent that proposes a fix, or opens a fix pull request if you allow it. See When a build on your branch fails.
- Reviews pull requests. Ankra AI reviews every pull request against your organisation’s skills, and can post a live preview URL for each one. See Application AI settings and Pull request preview environments.
- Gives it an address. The app gets a hostname under the cluster’s domain with a TLS certificate, or your own domain. See Domains and DNS.
ankra pipeline get --application <name> --latest prints the exact approve command. This is deliberate: an agent can propose a pipeline, but only a person can authorise what runs in your cluster.Deploy to two clusters
One application deploys to as many environments as you give it. Each environment is a cluster and a namespace with its own deploy options, its own database and its own push-to-deploy switch.Development follows every merge
ship already deployed to development. Push to deploy is on from registration, so every successful build of the tracked branch now rolls out there automatically. Give development its own namespace and address if you want them explicit:Set the secrets
apply seals them into every deployment of it, in development and production alike. A value that must differ between the two, such as a test and a live payment key, belongs in each cluster’s own configuration instead: encrypt it with SOPS in that cluster’s Stack, as described in Encryption and SOPS. The generated database is already separate per environment. To reuse a database, registry or API the organisation already has, see Connect to a managed service.Production moves only when a person promotes
/ankra-promote, which promotes a verified tag without rebuilding it and stops for your confirmation.Who is responsible for what
Ankra automates a lot, so it matters to be explicit about what it does not do. The rule of thumb: Ankra generates and runs; you decide and own. Anything Ankra generates lands as a pull request or a file in your repository, and once you merge it, it is yours.Security, CVEs and encryption
Security is not a stage you add at the end. Each cluster carries a security baseline, every Stack shows what its containers are exposed to, every CVE is ranked by whether it is actually being exploited, and every secret in Git is encrypted.Security in every Stack
The baseline. Clusters Ankra builds get theankra-security-baseline Stack profile at create time, unless your organisation opted out. On an imported or cloud-run cluster, open the cluster’s Security page and choose Enable security baseline. The baseline carries:
- Trivy Operator, which scans every running image, audits configuration and runs the CIS benchmark.
- Pod Security Standards enforced by Kubernetes itself. The Ankra agent labels namespaces for Pod Security Admission, which is built into the API server, so no policy engine has to run. Start both clusters in Audit, fix what development reports, and switch production to Enforce once it is clean.
- A guard on the enforce label, so nobody can switch enforcement off with a namespace edit.
ankra-policy-engine profile, which runs Kyverno.
The Stack Security tab. Every Stack’s detail page has a Security tab that lists the running pods under the add-on or manifest that deploys them. Each container has its own CVE, SBOM and KEV report, so “is the Postgres in this Stack exposed?” is one click, or one command:
Dealing with CVEs
CVEs arrive at two points, and Ankra handles each one differently:- Before an image ships. The pipeline scans every build with Semgrep, Checkov and Trivy, and your organisation’s gate refuses to publish anything above its threshold.
ankra pipeline findings <run-id> --application <name>lists what stopped a build, worst first. - After an image is running. A CVE published next month lands on the image already in production. Trivy Operator finds it, and the Security Center cross-references it with the CISA Known Exploited Vulnerabilities (KEV) catalogue and FIRST EPSS scores, so the top of the list is what attackers are actually using.
Look at what is exploited first
Fix it through the same pipeline
Or decide, on the record
security.manage permission. Every disposition is audited. An image-scoped acceptance follows the image digest, so the next rebuild brings the finding back for a fresh decision. See Acknowledge vs accept risk.security_findings alerts (kev and new_kev_cves) to the team that owns the app. See Alerts.
The security email
Each cluster can email a security report weekly or monthly, for example to your security team or an auditor. Recipients do not need an Ankra account. The report shows actionable findings by severity and how they moved since the last report, puts known-exploited CVEs in their own banner, and lists the package upgrades that clear them under Fix these first. Accepted risk is left out, so the report only shows what still needs work.send emails the current report right away, so you can check delivery before the first scheduled one. The same schedule is under the cluster’s Settings → Integrations. The report needs Trivy Operator, which the security baseline installs. See Security reports.
Encryption and SOPS
Everything about a cluster lives in Git, and Git must never see a plaintext secret. Ankra encrypts values with SOPS and an AGE key that belongs to your organisation:Initialise encryption once
Mark which keys are sealed
glob: pattern also covers keys you add later:ENC[AES256_GCM,...] for them. A push that cannot seal a listed key is refused, not committed. The agent decrypts inside the cluster at deploy time.Check Git, not the editor
ankra cluster encrypt.” Rotating the organisation key is not self-service yet; see Key rotation.
Day 2
The app is live in two places. Most of day 2 is the same loop you used to build it, with Ankra doing the watching.Changing the app
Keep working in Claude Code. Every pull request is built, scanned and reviewed by Ankra AI, and can get its own throwaway preview URL. Previews deploy to the organisation’s staging cluster, which an admin sets under AI → Settings → Workspaces; the development cluster works well for it, so no third cluster is needed. See Pull request preview environments. When it merges, development redeploys on its own:Promoting and rolling back
Promote the same way every time: the tag that passed in development, to production, by a person. To roll back, deploy the previous tag:When something breaks
Ask Claude Code to investigate with/ankra-triage. It reads logs, events, metrics and Ankra’s operation history through the CLI, read-only until it has a diagnosis:
Keeping both clusters healthy
- Alerts. Route pipeline failures, blocked images and cluster events to the channel that owns the app. See Notification routing.
- Backups. Protect every Stack that holds data, starting with the generated database, so production can be restored. See Backups and restore points.
- Security. New CVEs land on images that are already running. Work the known-exploited ones first, read the weekly security email, and run
/ankra-hardennow and then for a ranked security pass over the organisation. See Dealing with CVEs. - Dependencies. Ask Claude Code to update them in a pull request. The pipeline scans the result before it can publish.
- Kubernetes upgrades. Upgrade development first, run the app there, then upgrade production. For clusters Ankra builds, see Upgrade Kubernetes. For cloud-run clusters, see Managed Kubernetes.
- Platform add-ons. Change versions in the GitOps repository, let development reconcile first, and promote the same change to production. See GitOps.
Let Ankra fix and maintain it
Claude Code works in your repository while you are at the keyboard. Ankra’s AI agents work in the platform when you are not: on a schedule, when an alert fires, or when a ticket lands on the board. You decide how far each one may go.What already runs on its own
Without any setup, Ankra AI fixes a failing setup pull request, investigates every failed build on the tracked branch, and reviews every pull request. These are covered in What Ankra generates for you. Everything below is something you switch on.The DevSecOps agent: CVEs to pull requests
The DevSecOps agent, one of the six default agents under AI → Agents, turns a cluster’s security report into fixes:- It reads the critical and high findings, known-exploited CVEs first, production clusters before the rest.
- It maps each vulnerable image to the application or add-on that deployed it.
- For an application, it bumps the base image or package in the repository and opens one pull request listing every CVE it clears. For an add-on, it proposes the chart version that ships the fix, with the current version as the rollback.
- Once the fix is merged and rebuilt, it re-reads the report and quotes the before-and-after counts.
Auto-remediation: alerts that fix themselves
Under AI → Settings → Autonomy, the Auto-Remediation Policy hands firing alerts to a remediation agent. It is off until an admin turns it on. Choose:- The level. Observe only diagnoses and reports. Propose sends every corrective action to Slack for approval, and is the default. Autonomous runs low-risk reversible actions itself and asks for the rest.
- The scope. All clusters, or an allow-list. Start with the development cluster.
- Per-action rules. For example, let
restart_deploymentrun automatically, makedelete_podask on Slack, and never run anything else. - The limits. A cap on actions per incident and a cooldown before the same alert on the same cluster is picked up again.
Automations: maintenance on a schedule
AI → Automations is a canvas for workflows with stages. A trigger (a schedule, an alert, a webhook or a manual run) starts the workflow. Agent steps do the work, conditions route on what they found, an approval gate pauses for an administrator, and an output posts the result. Start from a template: Nightly cluster fix plans, Daily insight digest or On alert: diagnose. A weekly maintenance workflow for this app could look like:Configure your own agent
When one goal on one trigger is enough, create an agent instead of a workflow:Create it with the wizard
Set how far it may go
Give it a trigger
Watch what it does
Keep a hand on the switch
Two stops apply to the whole organisation at once.ankra ai autonomy pause stops every autonomous action, and the AI keeps diagnosing but changes nothing without approval. ankra ai autonomy stop-all is the emergency stop for an incident. resume and start-all undo them. Whatever the settings, the lines from Who is responsible for what hold: an agent cannot approve its own pipeline or accept a risk on your behalf, and promoting to production stays a decision you keep for people: leave it out of every agent’s goals and set agents that can reach production to Propose.
Verify
sha- tag in development and production after a promotion, and the production pods are running. Then open production in a browser and walk one real journey, such as signing up and signing in. A green deployment is not a working app; the journey is the check.