sng kind
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 see | Meaning |
|---|---|
# status: followed by a TYPE, STATUS, REASON, MESSAGE table | The 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:
| Kind | Command |
|---|---|
App | sng app describe NAME |
SSMSecret | sng secret describe NAME |
DNSZone, DNSRecord | sng dns zone describe DOMAIN, sng dns record describe ID |
CDNSite | sng cdn list |
IAMPolicy, IAMOIDCTrust | sng tenant policy get NAME, sng tenant oidc get NAME |
Monitor | sng monitor list |
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
kindand the samemetadata.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. Runsng kind editagain 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
| Flag | Effect |
|---|---|
-y, --yes | No 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
| Message | Cause |
|---|---|
not found | No 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 N | The 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) |