Skip to content

Runs

TypeCommandWhen
plantofu planAlways runs first
applytofu applyAfter successful plan
destroytofu destroyPR closed/merged

Runs execute in isolated ECS Fargate containers:

  1. Workspace downloaded from S3
  2. Backend configured for this workspace
  3. Variables and secrets injected
  4. OpenTofu command executed
  5. Results uploaded to S3
  6. Status posted to GitHub
StatusMeaning
pendingQueued
runningExecuting
successCompleted
failedError

GitHub check — click “Details” to see the plan

Dashboard — full streaming logs

API:

Terminal window
curl https://yaffle.dev/api/runs/{id}/logs
  • One run per workspace at a time (DynamoDB locking)
  • Multiple workspaces can run in parallel
  • Runs queue if runners are busy

Secrets are fetched from AWS Secrets Manager at runtime:

[[workspaces]]
path = "infra"
secrets.db_password = "arn:aws:secretsmanager:us-east-1:123:secret:db-password"

Available as var.db_password in OpenTofu. Never logged.