Skip to content

Runs

A run is a single execution of your infrastructure code within a stack. Runs are the core workflow in Zenfra — they plan, approve, and apply changes to your infrastructure.

Run types

Zenfra supports three types of runs, available from the Trigger dropdown on any stack:

Type Description
Plan & Apply (Tracked) Plans changes, waits for manual approval, then applies. This is the standard deployment workflow.
Plan Only Plans changes for review without applying them. Useful for previewing what would happen.
Destroy Plans and applies the destruction of all resources managed by the stack.

Run lifecycle

Every run progresses through a series of phases. Each phase is visible in the run detail page with its duration and timestamp.

Phases

Queued → Preparing → Initializing → Planning → [Approved] → Applying → Finished
Phase Description
Queued The run is waiting for an available worker slot. Shows who triggered the run and when.
Preparing The worker downloads the source bundle, configuration bundle, applies environment variables, and configures the managed state backend.
Initializing Runs terraform init or tofu init to set up providers, modules, and the backend.
Planning Generates the execution plan showing what resources will be added, changed, or destroyed.
Approved For tracked runs, the plan must be manually confirmed before applying. Shows who approved and when.
Applying Executes the approved plan to create, modify, or destroy infrastructure resources.
Finished The run completed successfully.

If a run encounters an error at any phase, it transitions to Failed instead of continuing.

Run detail page

The run detail page shows:

  • Breadcrumb — link back to the parent stack
  • Run type — Tracked, Plan Only, or Destroy
  • Status — current state (Finished, Failed, etc.)
  • Resource changes — summary of additions (+), modifications (~), and deletions (-)
  • Re-run button — trigger a new run with the same configuration
  • Metadata — branch, triggered by, and run ID (copyable)

Run history

The main content area shows the RUN HISTORY — a vertical timeline of all phases with expandable log sections. Each phase shows:

  • Phase name and icon
  • Duration (e.g., 00:47)
  • Start timestamp (e.g., Feb 19th, 4:15:38 PM)

Logs

Click any phase to expand its logs. Logs show the full output from that phase of execution — including Terraform/OpenTofu init output, plan details, and apply results.

Each log section has:

  • Copy logs — copy the full log output to your clipboard
  • Download logs — download the log output as a file

Preparing phase logs

The Preparing phase shows Zenfra-specific operations:

[Zenfra] Preparing workspace for run <run_id>
[Zenfra] Downloading source bundle...
[Zenfra] Source bundle downloaded (676 B, 824ms)
[Zenfra] Downloading configuration bundle...
[Zenfra] Configuration bundle downloaded (0 B)
[Zenfra] Applied 0 environment variables
[Zenfra] Configuring managed state backend...
[Zenfra] Backend configuration complete
[Zenfra] Workspace preparation complete (860ms)

Runs tab on a stack

The Runs tab on a stack's detail page shows a paginated table of all runs with:

Column Description
Status Run state (Finished, Failed, etc.)
Changes Resource additions (+), modifications (~), and deletions (-)
IAC IaC engine version used for this run
Started When the run was triggered
Duration Total run time
Triggered By The user or system that initiated the run
Actions Link to view the full run detail

The table supports filtering by triggered by and is paginated with configurable rows per page.