/org/my-org/gvc/my-gvc/workload/my-app in an API call, the --org and --gvc flags on a CLI command, and the kind and name in a manifest are three views of the same addressing scheme. The scheme mirrors the scoping: a GVC is scoped to the org, and everything created inside a GVC is scoped to that GVC. Learn it once and every interface reads the same way.
How It Fits
Key Behaviors
- A kind is a resource type; an item is a single resource of that kind.
workloadis a kind,my-appis an item. Every item carries the same base fields whatever its kind: you setname,kind,description, andtags; the server assignsid,version,created, andlastModified. - Context is an org and, when it matters, a GVC. The CLI holds both in a profile, and any single command overrides them with
--organd--gvc; the Console’s context is the org and GVC you have open. - A relative link starts with
//, and your context fills in the rest. In orgmy-org,//secret/my-secretresolves to/org/my-org/secret/my-secret. With GVCmy-gvcset,//workload/my-appresolves to/org/my-org/gvc/my-gvc/workload/my-app, and a link can name a different GVC outright://gvc/other-gvc/workload/my-app. - What you write relative, Control Plane stores full. A relative link is expanded when the item is saved, so the same manifest applied in two orgs produces two items whose stored links differ. The full form is called the self link: every item returns its own with every read, and a stored reference holds the self link of the item it points at.
- One API is underneath every interface. The Console, the CLI, the Terraform and Pulumi providers, the Kubernetes operator, and AI agents issue the same requests, so nothing is reachable from one interface and hidden from another, and every change lands in the same audit trail.
- Manifests address items by kind and name.
cpln applyaccepts YAML or JSON declaringkindandname, creating the item when it is absent and updating it when it is not. A GVC-scoped manifest can name its target GVC in a top-levelgvcproperty, which stands in for--gvcand the profile.
Gotchas
- A name cannot be changed. The name is the address, so applying a manifest with a new name creates a second item instead of renaming the first. Renaming means creating the new item, repointing every link, and deleting the old one.
- Names are lowercase, and up to 64 characters. Start with a letter, continue with letters, digits, and hyphens, and end with a letter or a digit.
- A relative link is only as portable as the context around it. The same
//workload/my-appresolves differently in two GVCs, which is the point when applying a manifest per environment and a hazard when reading one out of context. - A GVC-scoped relative link fails without a GVC in context. From an org-level context,
//workload/my-appis rejected withCannot expand //workload/my-app to a gvc-local link; write//gvc/my-gvc/workload/my-appor set the GVC. - Names are unique per kind and scope, not globally. Two GVCs can each hold a workload called
my-app, which is why endpoints and internal DNS names include the GVC.
Learn More
Reference overview
Every resource kind, grouped by what it does.
Deploy with cpln apply
Declare resources as YAML and apply them from a repository.
Query spec
Select items by tag and property instead of naming each one.
CLI profiles
Set the org and GVC your commands resolve against.