Skip to main content
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

CommandDescription
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.
devhelm monitors list
FlagTypeDefaultDescription
--page-sizeinteger200Number of items per API request (1–200)

monitors get

Get detailed information about a single monitor.
devhelm monitors get <monitor-id>
devhelm monitors get <monitor-id> -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
FlagTypeRequiredDescription
--namestringYesHuman-readable name for this monitor
--typestringYesMonitor type: HTTP, DNS, TCP, ICMP, HEARTBEAT, MCP_SERVER
--urlstringTarget URL or host
--frequencystringCheck frequency in seconds (default: 60)
--methodstringHTTP method: GET, POST, PUT, PATCH, DELETE, HEAD (default: GET)
--portstringTCP port to connect to (default: 443 for TCP monitors)
--regionsstringComma-separated probe regions
--assertionstringAssertion to attach (repeatable). DSL like status_code=200, response_time<5000, or a JSON object. Attach failures roll back the monitor.
--alert-channelsstringComma-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

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:
Config-as-code
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-id> \
  --name "API Health (v2)" \
  --frequency 30
FlagTypeDescription
--namestringNew monitor name
--urlstringNew target URL or host
--frequencystringNew check frequency in seconds
--methodstringNew HTTP method
--portstringNew TCP port
--alert-channelsstringComma-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-id>

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-id>

monitors resume

Resume a paused monitor.
devhelm monitors resume <monitor-id>

monitors test

Run an on-demand check immediately, without waiting for the next scheduled interval.
devhelm monitors test <monitor-id>
The result is printed to stdout. Use -o json for structured output:
devhelm monitors test <monitor-id> -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-id> --channel-ids <channel-id-1>,<channel-id-2>
devhelm monitors set-channels <monitor-id> --channel-ids ""
FlagTypeRequiredDescription
--channel-idsstringYesComma-separated alert channel IDs (replaces current list; "" clears all)

monitors results

Show recent check results for a monitor.
devhelm monitors results <monitor-id>
FlagTypeDefaultDescription
--limitinteger20Maximum number of results to show (1–1000)
devhelm monitors results <monitor-id> --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-id>
FlagTypeDefaultDescription
--limitinteger20Maximum number of versions to show

monitors versions get

Get a specific configuration version.
devhelm monitors versions get <monitor-id> 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.