Manage monitors from the command line. Create, update, delete, pause, resume, and run on-demand checks.
Monitor IDs are UUIDs (e.g. 6e09775a-1b2c-4d5e-9f0a-1b2c3d4e5f6a). The CLI validates the format locally and rejects non-UUID values before calling the API. Get IDs from devhelm monitors list.
Commands
Command Description devhelm monitors listList all monitors devhelm monitors get <id>Get monitor details devhelm monitors createCreate a monitor devhelm monitors update <id>Update a monitor devhelm monitors delete <id>Delete a monitor devhelm monitors pause <id>Pause a monitor devhelm monitors resume <id>Resume a paused monitor devhelm monitors test <id>Run an on-demand check devhelm monitors set-channels <id>Replace a monitor’s alert channel links devhelm monitors results <id>Show recent check results devhelm monitors versions list <id>List monitor config versions devhelm monitors versions get <id> <version>Get a specific config version
monitors list
List all monitors in your organization.
Flag Type Default Description --page-sizeinteger 200Number of items per API request (1–200)
monitors get
Get detailed information about a single monitor.
devhelm monitors get < monitor-i d >
devhelm monitors get < monitor-i d > -o json
monitors create
Create a new monitor.
devhelm monitors create \
--name "API Health" \
--type HTTP \
--url https://api.example.com/health \
--frequency 60 \
--regions us-east,eu-west
Flag Type Required Description --namestring Yes Human-readable name for this monitor --typestring Yes Monitor type: HTTP, DNS, TCP, ICMP, HEARTBEAT, MCP_SERVER --urlstring — Target URL or host --frequencystring — Check frequency in seconds (default: 60) --methodstring — HTTP method: GET, POST, PUT, PATCH, DELETE, HEAD (default: GET) --portstring — TCP port to connect to (default: 443 for TCP monitors) --regionsstring — Comma-separated probe regions --assertionstring — Assertion to attach (repeatable). DSL like status_code=200, response_time<5000, or a JSON object. Attach failures roll back the monitor. --alert-channelsstring — Comma-separated alert channel IDs to attach after create. Attach failures roll back the monitor.
Probe-driven types (HTTP, TCP, DNS, ICMP) require at least one region. If you omit --regions, the CLI defaults to us-east and prints a note to stderr.
Examples by type
HTTP
TCP
DNS
With assertions
devhelm monitors create \
--name "API Health" \
--type HTTP \
--url https://api.example.com/health \
--method GET \
--frequency 60 \
--regions us-east,eu-west
devhelm monitors create \
--name "Database Port" \
--type TCP \
--url db.example.com \
--port 5432 \
--frequency 120
devhelm monitors create \
--name "DNS Resolution" \
--type DNS \
--url example.com \
--frequency 300
devhelm monitors create \
--name "Checkout API" \
--type HTTP \
--url https://api.example.com/checkout \
--assertion "status_code=200" \
--assertion "response_time<2000"
Heartbeat monitors
monitors create --type HEARTBEAT creates a heartbeat with a fixed default config (expectedInterval: 60, gracePeriod: 60 seconds) — the CLI flags don’t expose these fields yet. To control the expected ping interval and grace period, define the monitor in YAML and deploy it:
monitors :
- name : Nightly Backup
type : HEARTBEAT
config :
expectedInterval : 86400
gracePeriod : 3600
devhelm deploy -f devhelm.yml --yes
monitors update
Update an existing monitor’s configuration.
devhelm monitors update < monitor-i d > \
--name "API Health (v2)" \
--frequency 30
Flag Type Description --namestring New monitor name --urlstring New target URL or host --frequencystring New check frequency in seconds --methodstring New HTTP method --portstring New TCP port --alert-channelsstring Comma-separated alert channel IDs (replaces current list; pass "" to clear)
monitors delete
Delete a monitor. This also removes all associated check results. Prompts for confirmation; pass --yes (-y) in scripts and CI — non-interactive runs without it are refused.
devhelm monitors delete < monitor-i d >
monitors pause
Temporarily stop a monitor from running checks. The monitor retains its configuration and can be resumed at any time.
devhelm monitors pause < monitor-i d >
monitors resume
Resume a paused monitor.
devhelm monitors resume < monitor-i d >
monitors test
Run an on-demand check immediately, without waiting for the next scheduled interval.
devhelm monitors test < monitor-i d >
The result is printed to stdout. Use -o json for structured output:
devhelm monitors test < monitor-i d > -o json
You can also validate and dry-run a proposed monitor config (YAML or JSON CreateMonitorRequest payload) without persisting anything — pass --config instead of an ID:
devhelm monitors test --config monitor.yml
Pass either an ID or --config, not both.
monitors set-channels
Replace the full set of alert channels linked to a monitor. Pass an empty string to clear all channels.
devhelm monitors set-channels < monitor-i d > --channel-ids < channel-id- 1> , < channel-id- 2>
devhelm monitors set-channels < monitor-i d > --channel-ids ""
Flag Type Required Description --channel-idsstring Yes Comma-separated alert channel IDs (replaces current list; "" clears all)
monitors results
Show recent check results for a monitor.
devhelm monitors results < monitor-i d >
Flag Type Default Description --limitinteger 20Maximum number of results to show (1–1000)
devhelm monitors results < monitor-i d > --limit 5 -o json
monitors versions list
List configuration versions for a monitor. Each update to a monitor creates a new version.
devhelm monitors versions list < monitor-i d >
Flag Type Default Description --limitinteger 20Maximum number of versions to show
monitors versions get
Get a specific configuration version.
devhelm monitors versions get < monitor-i d > 3
The first argument is the monitor ID, the second is the version number.
Next steps
Monitoring overview Understanding monitor types, regions, and assertions.
Config as Code Deploy monitors from YAML configuration files.