Environments
Kyku supports isolated environments with separate state files, letting you manage dev, staging, and production from the same config.
How It Works
Section titled “How It Works”The --env flag selects a state file:
.kyku/├── state.json (default — no --env flag)├── state.dev.json (--env=dev)├── state.staging.json (--env=staging)└── state.prod.json (--env=prod)# Developmentkyku plan --env=devkyku apply --env=dev
# Stagingkyku plan --env=stagingkyku apply --env=staging
# Productionkyku plan --env=prodkyku apply --env=prod --auto-approveEach environment maintains its own provider IDs, outputs, and encryption meta.
State Isolation
Section titled “State Isolation”Resources in different environments are completely isolated:
- Different provider credentials per env via the CI/CD pipeline
- Different deployment prefixes (each env gets its own prefix)
- Independent plan/apply lifecycle
Promoting Between Environments
Section titled “Promoting Between Environments”To promote from dev to staging, apply the same config with a different --env flag. Since each environment has its own state, resources are created fresh in the target environment.
For incremental promotion, save a plan file and apply it to the target:
# Generate plan for devkyku plan --env=dev --out plan-dev.json
# Apply same plan to stagingkyku apply --env=staging --plan plan-dev.jsonCI/CD Environments
Section titled “CI/CD Environments”# GitHub Actionsjobs: deploy-dev: steps: - run: kyku apply --env=dev --auto-approve
deploy-prod: needs: deploy-dev steps: - run: kyku apply --env=prod --auto-approve