Skip to main content

sng kind

Available

Deployed and supported. The fields and commands described here are stable within version v1alpha1.

The sng kind group handles the manifests of the desired state by kind and by name, whatever the kind. TYPE is the manifest's kind (App, SSMSecret, RegistryRepository…), case-insensitive. They require a tenant session.

These commands are no longer available at the root (sng kind get, sng list, sng kind edit, sng delete and sng update were removed, without aliases): use sng kind …. To change a manifest, use sng kind edit or reapply your file with sng apply; to delete what a file describes, use sng destroy.

Kinds that have a dedicated command (sng app, sng secret, sng cdn, …) also offer operations and a formatted reading of the status; these generic commands remain valid for them.

sng kind list​

sng kind list TYPE
sng kind get TYPE # alias

Lists the manifests of a kind in the current tenant.

sng kind list App
NAME UPDATED
api 2026-10-06T14:02:11Z
web 2026-10-07T08:41:57Z

Without results: no App.

--json: {"kind":"App","items":[{"name":"web","updated_at":"…",…}]}.

sng kind get​

sng kind get TYPE NAME

Shows the manifest as it is saved in the desired state, that is, what you applied, followed by the observed state of the resource as YAML comments. The output stays a valid manifest: you can redirect it to a file and apply it again.

sng kind get RegistryAccessKey ci
apiVersion: registry.stackngo.io/v1alpha1
kind: RegistryAccessKey
metadata:
name: ci
spec:
repositories: [web]
actions: [pull, push]
# status:
# TYPE STATUS REASON MESSAGE
# Ready True Reconciled …
# Synced True Reconciled …

How to read the state:

What you seeMeaning
# status: followed by a TYPE, STATUS, REASON, MESSAGE tableThe resource's conditions: see Conditions and reasons
# status: followed by fields (phase: Active, version: 3…)The kind has no conditions: its state is shown as is
# status: not observed yet (the resource is not deployed yet)The resource is not deployed yet, or its state is temporarily unavailable: run again in a moment. For kinds whose state cannot be read this way yet (see below), this line always appears

The state is shown for App, SSMSecret, CDNSite, RegistryRepository, RegistryAccessKey, IAMApplication, IAMRole and IAMGroup. For other kinds (Monitor, NotificationChannel, StatusPage, DNSZone, DNSRecord, IAMPolicy…), it cannot be read by sng kind get yet: use the kind's command (table below) or, for monitoring, your status page.

--json: {"kind":"RegistryAccessKey","name":"ci","content":"<yaml>","status":{"conditions":[…], …}, …}; status is absent while the resource is not deployed, and for kinds without a readable state. Same response from the API: GET /v1/resources/{kind}/{name}.

For a more readable summary of some kinds, use their command:

KindCommand
Appsng app describe NAME
SSMSecretsng secret describe NAME
DNSZone, DNSRecordsng dns zone describe DOMAIN, sng dns record describe ID
CDNSitesng cdn list
IAMPolicy, IAMOIDCTrustsng tenant policy get NAME, sng tenant oidc get NAME
Monitorsng monitor list
Known limitation

For other kinds (RegistryRepository, RegistryAccessKey, IAMApplication, StatusPage…), the status cannot be read by the CLI or the API yet. A generic reading of the state is planned.

sng kind edit​

sng kind edit TYPE NAME

Downloads the manifest, opens it in your editor ($EDITOR, otherwise $VISUAL, otherwise nano), then reapplies the modified file.

edit applied: App/web (usually applied within a minute)

Rules:

  • If the file has not changed: no changes, nothing is sent.
  • The file must contain a single document, with the same kind and the same metadata.name. To rename, create the new one and delete the old one.
  • The validation is that of apply: a schema error cancels the edit and nothing is written. Run sng kind edit again to fix it.

sng kind delete​

sng kind delete TYPE NAME [-y]

Deletes a manifest from the desired state. The platform then deletes what it had produced, according to the kind's deletion policy (the volumes of an App are kept, a RegistryRepository with Block refuses as long as it contains images, an SSMSecret deletes the secret, with no possible restore).

⚠ Suppression définitive du App "web".
Tapez « oui » pour confirmer : oui
deleted: App/web
FlagEffect
-y, --yesNo interactive confirmation. Required outside a terminal (script, CI)

Outside a terminal without -y: confirmation requise : relancez avec --yes ou depuis un terminal interactif.

Typical errors​

MessageCause
not foundNo manifest of this kind and name in the current tenant: check sng config show and sng kind list TYPE
forbidden (no policy of this tenant allows it: see sng tenant policy list)deploy:list (list), deploy:read (get), deploy:write (edit), or deploy:delete (delete) is missing
kind/name must not change …The edited file changed its kind or metadata.name
edit expects exactly 1 YAML document, found NThe edited file contains several documents
N enregistrement(s) utilisent encore la zone "…", les supprimer d'abord (409)sng kind delete DNSZone on a zone that still has DNSRecords: delete them first (DNSZone)