Emulator Components
Emulator components are stack-scoped, long-running containers that stand in for a cloud API (AWS, GCP, Azure), Kubernetes, or a backing service (Vault/OpenBao, 1Password Connect, an OCI/Terraform registry) during local development and testing. You declare them with the same stack-based configuration used for Terraform, Helmfile, Packer, and Ansible, and operate them with the atmos emulator command group — letting the rest of your stack run offline, with no cloud account.
An emulator container outlives the atmos process and is discovered by labels derived from the canonical component instance address, so atmos emulator ps, logs, exec, and down reattach to the already-running container.
Available Configuration Sections
Emulator components are declared under components.emulator and support these first-class sections (siblings of metadata — not nested under vars):
driver- Required. The built-in driver that selects the image and target, for example
floci/aws,k3s,openbao,registry, ormockoon/1password-connect. See Supported Drivers & Targets. cloud- Optional explicit target (
aws,gcp,azure,kubernetes,vault,registry,onepassword). Derived from the driver when omitted; if set, it must match the driver's target. region- Cloud region for the
aws/gcp/azuretargets. project- GCP project id for the
gcptarget. services- The emulated services to enable (informational; may drive the emulator's environment).
ephemeral- Set to
trueto run the emulator without persisting state — all data is discarded ondown. Defaults tofalse, so emulators persist state by default (see Persistence). The CLI--ephemeralflag overrides this for a singleup. container- Container overrides for the emulator —
image,command,ports,mounts,pull,user,run_args,restart,healthcheck, and more. Reuses the same schema as the container component, so emulator and container configuration stay consistent. Anything you don't set falls back to the driver's defaults (see Health Checks & Restart Policies). metadata- Component behavior and inheritance (e.g.
metadata.type: abstractfor catalog base components).
Component Structure
A minimal emulator component selects a driver; everything else has a sensible default:
components:
emulator:
aws:
driver: floci/aws
region: "{{ .vars.region }}"
With the configuration above, atmos emulator up aws --stack=plat-ue2-dev starts a local AWS sandbox for the plat-ue2-dev stack.
Supported Drivers & Targets
Each driver maps to one target and supplies a default image and port. The host port is auto-assigned unless you pin it with container.ports.
| Driver | Target | Default image | Container port |
|---|---|---|---|
floci/aws (default for AWS) | aws | floci/floci:latest | 4566 |
ministack/aws | aws | ministack/ministack:latest | 4566 |
localstack/aws (opt-in/legacy) | aws | localstack/localstack:3 | 4566 |
floci/gcp | gcp | floci/floci-gcp:latest | 4588 |
floci/az | azure | floci/floci-az:latest | 4577 |
k3s | kubernetes | rancher/k3s:latest | 6443 |
openbao (default for Vault) | vault | openbao/openbao:latest | 8200 |
vault (opt-in) | vault | hashicorp/vault:latest | 8200 |
registry | registry | registry:2 | 5000 |
mockoon/1password-connect | onepassword | mockoon/cli:latest | 3000 |
The aws, gcp, azure, and kubernetes targets bind to your components automatically through an emulator identity (kind: aws/emulator, gcp/emulator, azure/emulator, kubernetes/emulator): the identity injects the live endpoint, dummy credentials, and provider configuration, so components need no providers.tf and no endpoint wiring.
The vault, registry, and onepassword targets have no identity. You consume their live endpoint with the !emulator YAML function in stack manifests, or — for a store declared in atmos.yaml — by pinning a host port and pointing at it with a static address (see Vault/OpenBao and 1Password Connect).
Configuring Each Emulator Type
AWS
The default floci/aws driver emulates the AWS control plane. Bind it with an aws/emulator identity; Terraform components then apply against the sandbox with no provider block:
# atmos.yaml
auth:
identities:
local-aws:
kind: aws/emulator
emulator: aws # the emulator component name
default: true # every component runs under it
# stack manifest
components:
emulator:
aws:
driver: floci/aws
region: us-east-1
The identity injects AWS_ENDPOINT_URL, AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY (test/test), and AWS_REGION into Terraform.
GCP
components:
emulator:
gcp:
driver: floci/gcp
project: my-project
region: us-central1
A gcp/emulator identity exposes STORAGE_EMULATOR_HOST, PUBSUB_EMULATOR_HOST, GOOGLE_CLOUD_PROJECT, and disables credential lookups (CLOUDSDK_AUTH_DISABLE_CREDENTIALS=true).