Targets
A target is one concrete place a deployment goes — a client’s account, a staging environment, a region. Create targets on a deployment’s page; each needs a name in the same lowercase-and-hyphens style as deployment names, and an optional description. Every target stores its own values for the deployment’s configuration variables, encrypted at rest, and keeps its own run history. The sameaws-production deployment can have client-acme, client-globex, and
internal-staging targets, each with different credentials and regions, all
running the same steps.
Readiness
The deployment page lists targets with their state:- Ready to deploy — every required, active configuration variable has a value or a default. Clicking the row opens the target; the row’s button deploys directly.
- Needs N values — something is missing or invalid. The button opens the target instead, where the form marks what still needs input.
The target page
The target page is organized around the thing you do most, deploying:- Deploy — the button, disabled until the target is ready, and a note on what is still needed when it is not.
- Latest outputs — the outputs of the most recent successful run, with copy buttons.
- Run history — every run against this target, live-updating while one is active.
- Variables — the form. Edit, save, and scroll back up to deploy.
- Target settings — rename, describe, and for Keel Cloud with a GitHub App, enable Deploy automatically on push. Deleting a target removes its values; its runs are kept.
Renaming a target
A target’s name is a label; its identity is a stable ID. Renaming changes what runs see asKEEL_TARGET (and the target’s URL), so the settings form asks
for confirmation. It does not change KEEL_TARGET_ID, and it cannot move
state that lives outside Keel — so deployments should key anything persistent
(a Terraform state key, a stack name) by KEEL_TARGET_ID, which survives the
rename. See the run environment.
Runs
A run is one execution of a deployment against a target. Runs are created by the Deploy button, bykeel deploy, or — in Keel Cloud with a GitHub
App — by a push to the connected branch.
Starting a run
If the deployment has deploy-time variables, Deploy now opens a modal that asks for them, pre-filled with defaults; a required deploy-time value that is missing or invalid blocks the deploy with an inline error. Without deploy-time variables the button starts the run immediately. Before anything executes Keel validates the full merged set of values — saved configuration plus deploy-time values — and refuses to start if a value is missing or invalid, listing the problems on the target page. It also checks that Docker is reachable. In Keel Cloud, a target can have only one active run at a time.Inputs
Every run records the values it was started with, so a run stays explainable long after the target’s variables orkeel.yaml have changed.
The run page shows them in two groups: the values chosen when the deploy
started (deploy-time variables — the plan/apply switch, the image tag)
and the target’s configuration at that moment, each with the label it
had then and a note when the value came from a default, was not set, or
was inactive because its condition did not hold. Run tables show the
deploy-time choices as chips (ACTION=destroy) so history can be scanned.
Secret inputs are recorded as set, never as values — unlike secret
outputs, which are meant to be read back, a secret input is never shown
again once saved. Non-secret values are encrypted at rest like target
values.
Lifecycle
Each step has its own status — pending, running, succeeded, failed, or
skipped — shown next to the log.
Logs
Logs stream live to the run page over server-sent events and are persisted, so a run’s log can be read later and the page can be reloaded mid-run. Secret values are replaced with••• before a line is stored or shown.
A single log line longer than 1 MB cannot be processed; Keel notes it in
the log and discards the rest of that output stream for the remainder of
the run, which otherwise continues.