# Environments and instances

An **environment** is a deploy target the tenant creates explicitly on a
connected account. Provisioning it installs the environment's own
`data-plane-core` stack — config store, event bus, KMS — tagged
`swb:env`. Two environments can share one account as separate stacks;
brownfield environments adopt existing resources by CloudFormation
import. A **protected** environment (production) gates every deploy
behind an approval.

An **instance** is app × environment — the unit everything else hangs
off:

- **Version and latest.** What runs, and the head of the channel the
  instance follows. `status: upgrade` means they differ.
- **Landed pins.** Component versions read from stack outputs after the
  last deploy.
- **Endpoints.** The web app, API, dev portal and sites
  [discovered from the stack](/endpoints).
- **Scope and audience.** Which containers' data it serves, and which
  identity accounts may log in.

Deploying an instance is one mutation on the GraphQL API — answered by a
deploy-dispatcher execution that drives CloudFormation to completion and
reads the stack back.
