Documentation Index Fetch the complete documentation index at: https://docs.devhelm.io/llms.txt
Use this file to discover all available pages before exploring further.
The devhelm.yml file defines your entire monitoring configuration. Deploy it with devhelm deploy -f devhelm.yml.
Minimal example
version : "1"
monitors :
- name : API Health
type : HTTP
config :
url : https://api.example.com/health
frequencySeconds : 60
regions : [ us-east ]
Top-level structure
version : "1"
defaults :
monitors :
frequencySeconds : 60
enabled : true
regions : [ us-east , eu-west ]
tags :
- ...
environments :
- ...
secrets :
- ...
alertChannels :
- ...
notificationPolicies :
- ...
webhooks :
- ...
resourceGroups :
- ...
monitors :
- ...
dependencies :
- ...
All section keys are camelCase . Every section is optional — include only what you need.
version
The schema version. Currently "1" is the only supported value. The CLI warns on unrecognized versions but does not reject them.
defaults
Set default values that apply to all monitors unless overridden:
defaults :
monitors :
frequencySeconds : 60
enabled : true
regions : [ us-east , eu-west ]
alertChannels : [ Slack Alerts ]
incidentPolicy :
confirmation :
type : multi_region
minRegionsFailing : 2
Defaults are applied with shallow per-field merge: if a monitor sets a field, the monitor value wins. Nested objects like incidentPolicy are replaced entirely, not deep-merged.
Resource sections
Each section is detailed on its own page:
Section Key Reference by Docs Tags tagsnameTags & Secrets Environments environmentsslugTags & Secrets Secrets secretskeyTags & Secrets Alert Channels alertChannelsnameAlert Channels Notification Policies notificationPoliciesnameNotification Policies Webhooks webhooksurlTags & Secrets Resource Groups resourceGroupsnameMonitors Monitors monitorsnameMonitors Dependencies dependenciesservice slugTags & Secrets
Cross-references
Resources reference each other by name (or slug), not by ID. The CLI resolves names to IDs at deploy time:
monitors :
- name : API Health
tags : [ production ] # references tag by name
alertChannels : [ Slack Alerts ] # references alert channel by name
environment : staging # references environment by slug
auth :
type : bearer # bearer | basic | api_key | header
secret : API_TOKEN # references secret by key
Environment variable interpolation
Use ${VAR} syntax to inject environment variables into any string value:
alertChannels :
- name : Slack Alerts
config :
channelType : slack
webhookUrl : ${SLACK_WEBHOOK_URL}
With a default fallback:
monitors :
- name : API Health
type : HTTP
config :
url : ${API_URL:-https://api.example.com/health}
Environment variables are resolved before YAML parsing. If a required variable is missing, the CLI exits with an error listing all unresolved variables.
Environment variable interpolation (${VAR}) is different from vault secrets. Variables are resolved from the shell environment at deploy time. Vault secrets are stored in DevHelm and referenced by key in auth blocks.
Multi-file configs
Pass multiple files with -f:
devhelm deploy -f base.yml -f overrides.yml --yes
Or point to a directory (all *.yml and *.yaml files are loaded in sorted order):
devhelm deploy -f config/ --yes
Resources from all files are merged by name. If the same monitor name appears in multiple files, the last file wins.
Full example
version : "1"
defaults :
monitors :
frequencySeconds : 60
regions : [ us-east , eu-west ]
tags :
- name : production
color : "#10b981"
- name : api
color : "#3b82f6"
environments :
- name : Production
slug : production
variables :
BASE_URL : https://api.example.com
secrets :
- key : SLACK_WEBHOOK_URL
value : ${SLACK_WEBHOOK_URL}
alertChannels :
- name : Slack Alerts
config :
channelType : slack
webhookUrl : ${SLACK_WEBHOOK_URL}
- name : PagerDuty On-Call
config :
channelType : pagerduty
routingKey : ${PAGERDUTY_ROUTING_KEY}
notificationPolicies :
- name : Critical Alerts
enabled : true
priority : 10
matchRules :
- type : tag
values : [ production ]
escalation :
steps :
- channels : [ Slack Alerts ]
delayMinutes : 0
- channels : [ PagerDuty On-Call ]
delayMinutes : 5
requireAck : true
monitors :
- name : API Health
type : HTTP
config :
url : https://api.example.com/health
method : GET
tags : [ production , api ]
alertChannels : [ Slack Alerts ]
assertions :
- config :
type : status_code
expected : "200"
operator : equals
severity : fail
dependencies :
- service : github
alertSensitivity : INCIDENTS_ONLY
Next steps
Monitors in YAML All monitor types, assertions, and incident policies.
Deploy workflow Validate, plan, and deploy lifecycle.