Skip to main content
The DevHelm Terraform provider lets you manage your monitoring stack — monitors, alert channels, status pages, secrets, and more — declaratively alongside your cloud infrastructure. The provider is published on the Terraform Registry as devhelmhq/devhelm.
Status: Beta. The schema is stable, the resource set is feature-complete against the DevHelm v1 API, and the provider has been validated end-to-end against production. While the other DevHelm surfaces (CLI, SDKs, MCP server) are now at 1.0.0, the Terraform provider is intentionally held at 0.2.0-beta.x for a short soak window to harden a defense-in-depth rollback path. Safe for production use; pin the exact version below.

Install

Pre-release pin required. The provider currently ships only as pre-release versions, and Terraform’s ~> operator never selects pre-releases. Pin the exact version above (0.2.0-beta.7 is the latest published tag); bump it explicitly when the next version ships, or wait for the GA 1.0.0 cut to switch to a range like ~> 1.0. Latest version is on the Registry overview page.
All four provider attributes have environment-variable equivalents and are optional. The most common pattern is to leave the provider block empty and supply credentials through the environment so the same config works locally, in CI, and in Terraform Cloud.

Available resources

Available data sources

devhelm_monitor, devhelm_alert_channel, devhelm_environment, devhelm_resource_group, devhelm_service, devhelm_status_page, devhelm_tag. See Data sources.

Quick example

config and assertions[].config are JSON strings (not HCL blocks). Use jsonencode({...}) and camelCase field names — they map directly to the API wire format (thresholdMs, verifyTls, expectedInterval, …). The provider validates the payload against the generated schema at plan time, so unknown fields fail fast.

Import existing resources

Every resource supports terraform import except devhelm_status_page_custom_domain_verification (a synthetic verification barrier with no server-side counterpart). Most are imported by their human-readable name or slug — a UUID is always accepted too:
See Importing resources for the full ID table.

When to use Terraform vs YAML

Don’t manage the same resource with both Terraform and devhelm.yml. Pick one source of truth per resource to avoid drift and conflicts.

Next steps

Terraform monitors

Full devhelm_monitor resource reference.

Alert channels

Channel-type-specific arguments.

Importing resources

Import existing resources into Terraform state.

Terraform in CI/CD

Automate Terraform plans and applies in CI.