Skip to main content

atmos init

Initialize a project from a proven Atmos starting point. atmos init selects a project template, collects its validated answers, generates the project, and records the source needed for later updates.

atmos init --help
 

Usage

atmos init [template] [target] [flags]
# Choose a template and target interactively.
atmos init

# Initialize a minimal cloud-agnostic project.
atmos init basic ./my-project

# Initialize an AWS application or landing-zone foundation.
atmos init aws/app ./my-app
atmos init aws/landing-zone ./my-platform

# Provide values for automated project creation.
atmos init basic ./my-project --set project_name=my-project --interactive=false

Templates

The built-in catalog includes basic, simple, atmos, aws/app, aws/landing-zone, gcp/landing-zone, and azure/landing-zone. Run atmos scaffold list to see the complete catalog, including configured and remote sources available to the current project.

basic is a small cloud-agnostic project with a real local greeting component. aws/app starts an application SDLC layout with development, staging, and production stacks. The landing-zone templates establish cloud-specific platform foundations.

Shared Scaffold Contract

Project templates use the same AtmosScaffoldConfig manifest and generation engine as atmos scaffold generate. A template can define validated spec.fields, conditional spec.files, and step-backed spec.hooks:

scaffold.yaml
apiVersion: atmos/v1
kind: AtmosScaffoldConfig
metadata:
name: application-project
spec:
fields:
- name: environments
type: multiselect
options: [dev, staging, prod]
default: [dev]
- name: enable_monitoring
type: confirm
default: false
files:
- path: monitoring.tf
when: "answers.enable_monitoring == true"
hooks:
format:
events: [after.scaffold.generate]
kind: step
type: shell
with:
command: terraform fmt -recursive

Conditions use when: predicates or CEL over earlier answers. Generation hooks can use only kind: step and ordered kind: steps; see scaffold templates for the complete authoring model, including --skip-hooks and answer templating.

Updating an Initialized Project

init records the selected source, base revision, and answers in .atmos/scaffold.yaml. Re-run with --update to bring an existing project forward using an optimistic three-way merge:

cd my-project
atmos init --update
atmos init --update --merge-strategy=theirs

manual is the default merge strategy and surfaces conflicts. ours preserves local changes; theirs applies the template side of a conflict. atmos init creates Git history by default; pass --no-git when that is not wanted.

Flags and Automation

FlagBehavior
--set key=valueProvide a template answer; repeat for multiple fields.
--interactive=falseRun without form prompts when values and defaults satisfy active fields.
--forcePermit writes into an existing target.
--updateMerge a generated project with its template's newer revision.
--base-refOverride the recorded merge base.
--merge-strategySelect manual, ours, or theirs.
--skip-hooksSkip all hooks or named generation hooks.
--no-gitDo not initialize or commit Git history.
atmos init
 
00:00.0 / 00:00.0

Example: Init

Bootstrap a brand-new Atmos project from a built-in template.

Learn more in the Init Command Documentation.

What You'll See

  • Interactive and non-interactive atmos init usage
  • Generating atmos.yaml, stacks, and components from the basic template
  • Provisioning the generated project for real — atmos terraform apply on the greeting component, a local-only resource that needs no cloud account or emulator
  • Where to find the fuller catalog templates (aws/app, aws/landing-zone, gcp/landing-zone, azure/landing-zone)

Try It

# Interactive mode: prompts for a template and target directory
atmos init

# Non-interactive: generate the minimal "basic" template into ./my-project
atmos init basic ./my-project --set project_name=my-project

# See every available template, including remote and atmos.yaml-defined ones
atmos scaffold list

Key Templates

TemplatePurpose
basicMinimal, cloud-agnostic layout — atmos.yaml, one stack, and a real local greeting component (no cloud account needed)
simpleA slightly fuller starter project
atmosConvention-following full project skeleton
aws/appApplication SDLC repository for AWS (see examples/scaffolds/aws/app)
aws/landing-zoneAWS landing zone environments (see examples/scaffolds/aws/landing-zone)
gcp/landing-zoneGCP landing zone environments (see examples/scaffolds/gcp/landing-zone)
azure/landing-zoneAzure landing zone environments (see examples/scaffolds/azure/landing-zone)

How init relates to scaffold

atmos init is a thin, project-scoped specialization of the generic atmos scaffold code-generation engine — it always targets a whole new project directory and is meant to run once. For generating individual components, configs, or any other repeatable boilerplate inside an existing project, see examples/scaffolding and atmos scaffold generate.

Learn More