Skip to content

Status and history

ankka services list shows every service in a project, one line each. ankka services get <name> shows one service in full. ankka services history <name> shows who changed it and when. All three read the control plane, which records both what you asked for and what the cluster last reported; see Desired and observed state.

Every command acts on the project named by --project (-p), or on the one saved with ankka config set project <id>.

List the services in a project

ankka services list
NAME  STATUS  INSTANCES  GEN  IMAGE                        HOSTNAME
cart  Ready   1/1        1    sample-shopping-cart:latest  https://cart-checkout.127.0.0.1.sslip.io:8443
Column Meaning
NAME The service's name, from its descriptor.
STATUS Its lifecycle state, followed by (unconfirmed) when the reading is not current.
INSTANCES Ready instances over desired instances.
GEN The generation: how many applies and restarts the service has had.
IMAGE The image the current descriptor names.
HOSTNAME The URL it answers on outside the cluster, or - when it is not exposed.

The lifecycle states are listed in Service lifecycle states. The one to learn first is UpdateInProgress: the service is moving towards what its descriptor asks for and has not got there yet.

Show one service

ankka services get cart
name        cart
project     checkout
status      Ready
instances   1/1
generation  1
image       sample-shopping-cart:latest
hosting     embedded
hostname    https://cart-checkout.127.0.0.1.sslip.io:8443
database    provisioned
Field Meaning
status The lifecycle state, marked (unconfirmed) when it is not a current reading.
instances Ready over desired. A paused or suspended service desires zero.
generation Increments on every apply and every restart. A report about an older generation is ignored.
hosting embedded for a service whose image is an ankka runtime, process for one that runs beside a sidecar.
protocol For a process-hosted service, the sidecar protocol version it declared.
hostname The external URL, not exposed, or a note that it is exposed but the control plane has no base domain configured.
database What the platform did about the service's database, once something has reported: waiting for database, provisioned, recovered existing data, supplied or database provisioning failed.
detail Why the service is in its state, when there is something to say: a rollout problem, a refused version, an unreachable cluster, or a route the gateway has not accepted (route rejected: <reason>).

detail is shown only by get, which is why list marks unconfirmed readings in the status column itself.

Confirmed and unconfirmed

A status is confirmed when it is a report from the cluster about the service's current generation. It is unconfirmed when the control plane is restating what it last knew — because it cannot reach the cluster, for example, or because no operator has reported on the service at all. detail says which. An unconfirmed Ready means "was ready when last seen", not "is ready".

Script against the status

Every command takes -o json (--output json) and prints the status exactly as the control plane's API returns it:

ankka services get cart -o json | jq -r .lifecycle
# Ready

ankka services list -o json | jq -r '.[] | select(.lifecycle != "Ready") | .name'

The JSON has every field, including confirmed, exposed, paused and suspended, which the table folds into other columns. The field list is in Control plane HTTP API.

The CLI's exit code is 0 when the command succeeded, 1 when it failed — a refusal from the control plane, an invalid descriptor, no project selected — and 2 when the command line itself could not be parsed. A script can therefore tell a mistyped command from a failed apply. Errors are printed to standard error as error: <detail>.

A deployment script that must wait for a service to become ready polls the status:

until [ "$(ankka services get cart -o json | jq -r '.lifecycle + "/" + (.confirmed|tostring)')" = "Ready/true" ]; do
  sleep 5
done

See who changed a service

ankka services history cart
WHEN                      KIND       GEN  BY
2026-09-24T10:12:03.114Z  restarted  2    alice@example.com
2026-09-24T09:58:41.902Z  exposed    1    alice@example.com
2026-09-24T09:57:10.337Z  applied    1    bob@example.com (admin)

Each row is one change, newest first: applied, restarted, paused, resumed, exposed, unexposed, deleted, suspended or reinstated. GEN is the generation the service had after the change, and BY is who asked, by display name or subject. (admin) marks a change that was allowed by the platform-admin role rather than by membership of the organization. A service keeps its last 50 changes. Reports from the cluster are not changes and do not appear.

Changes recorded before the platform began attributing them show - for who and when.