Prerequisites
Prerequisites
- DevHelm CLI installed
- An API token — see Authentication
- Existing monitors created through the Dashboard
Migration strategy
The goal is to transition from “click-to-create” to “commit-to-deploy” without any monitoring gaps. There is no bulk export — adoption happens per resource withdevhelm import. The process:
- Declare your existing resources in a
devhelm.ymlfile - Import each resource into the deploy state so DevHelm adopts it instead of recreating it
- Verify the plan shows no changes, then commit the YAML to your repository
- Let future changes go through code instead of the Dashboard
Step-by-step migration
Inventory current resources
List your monitors and capture their configuration as a reference for writing the YAML:Do the same for alert channels (
devhelm alert-channels list) and any other resources you plan to migrate.Declare resources in devhelm.yml
Write a Set the secrets:
devhelm.yml that mirrors what’s running, using the JSON output from the previous step. Double-check:- Monitor names and URLs are correct
- Frequencies and regions match expectations
- Alert channel types are right
- Tags are present
${VAR} references for secret values like webhook URLs — never paste credentials into the YAML:Import resources into the deploy state
devhelm import <type> <name> adopts one named API resource into the local deploy state, so the next deploy updates it in place instead of creating a duplicate. Import each resource you declared:monitor, tag, environment, secret, alertChannel, notificationPolicy, webhook, resourceGroup, dependency, statusPage.Inspect the resulting state at any time:Validate and plan
Check that the YAML is syntactically valid:Preview what would change:Since the YAML mirrors the current state and each resource was imported, the plan should show no changes (or minimal differences from secret handling). If you see unexpected creates or deletes, review the YAML against the Dashboard and check that every resource was imported.
Deploy
Apply the YAML to take ownership:This makes DevHelm’s config-as-code system the source of truth. Dashboard changes will now show as drift in
devhelm plan.Set up CI/CD
Add a GitHub Actions workflow to deploy on push. See CI/CD pipeline guide.
Handling drift
After migration, if someone edits a resource through the Dashboard:devhelm deploy overwrites the Dashboard changes with the YAML definition. Make this expectation clear to your team: YAML is the source of truth.
Incremental migration
You don’t have to migrate everything at once. Start with a subset:- Declare and import only your critical production monitors
- Deploy and validate
- Gradually add more resources to the YAML, importing each one as you go
- Eventually adopt alert channels and notification policies too
Next steps
Monitoring as Code tutorial
Full YAML format and workflow guide.
Multi-environment config
Manage staging and production separately.
CI/CD pipeline
Automate deploys from GitHub Actions.