Skip to main content
Targeting an account or organization. To use a different saved account for one invocation without changing the active account, pass the global --account <email|prefix> flag before the subcommand — for example, alertee --account work@ checks list. Likewise, --org <id> overrides that account’s linked organization for one invocation. Both flags work with every command and do not change saved defaults. The backend still checks your access.

alertee login

Authenticate through your browser.
Opens your browser to authorize the CLI against your Alertee account (using PKCE), then saves credentials to ~/.config/alertee/config.json. Use --no-browser to print the URL instead of opening one (handy over SSH). See Authentication for the full flow and CI usage.

alertee logout

Log out of an account — the active one by default, or a named one.
If other accounts remain, the CLI switches to one of them automatically.

alertee whoami

Show current authentication status.

alertee update

Update the CLI to the latest published version (checks npm, then installs).

alertee auth

Manage multiple accounts. alertee login and alertee logout are aliases for auth login / auth logout, so you only need this group when juggling more than one account. Each account keeps its own token and linked organization.
Switching takes effect immediately for every CLI command and the local MCP server (it reads the active account on each tool call — no restart needed). To pin a shell session or an MCP server config to one account regardless of the active switch, set ALERTEE_ACCOUNT=<email>.
Link to an organization. Required before running any check commands.
Fetches your organizations and prompts you to select one. Run again to switch organizations.

alertee plan

Show the linked org’s plan, price, next invoice, estimated current-period spend, and usage. Handy before creating checks to confirm there’s headroom.
JSON reports monetary values in integer cents (monthly_price_cents and estimated_spend_cents) with currency, plus next_invoice_at and billing_period_end timestamps.

alertee org create [name]

Create a new organization and link to it (so the next connections create / checks create target it). You become the organization’s owner.
Flags: --slug <slug> (custom URL-safe slug; auto-generated from the name if omitted), --no-link (create without switching your linked organization).

alertee org list

List the organizations you belong to. The linked one is marked with *.

alertee checks list

List all checks in the linked organization.
The QUIET column shows whether each check’s alerts are currently suppressed and why — a snooze, a calendar holiday, or off-hours. --compact trims the table to name, status, and active/paused/muted state. Add --format json for machine-readable output. Its fields use plain values (enabled: true, not Enabled.Bool), and request credentials are always redacted. Add --compact to omit configuration, descriptions, and runbook text:

alertee checks get <id>

Show a single check’s detail (status, interval, type, connection, query). JSON uses the same flattened fields as checks list; request credentials are redacted in both table and JSON output.

alertee checks pause [checks...]

Pause one or more checks so they stop running. Names and IDs can be mixed, and --all pauses the entire organization in one batch. Pausing does not change a check’s alert mute setting.
Use the matching resume command to start them again:

alertee checks history <id>

Show a check’s recent run history. Defaults to the last 24 hours.

alertee checks changelog <id>

Show a check’s change history — config edits, Alertee AI reviews, and schedule/calendar/snooze changes, newest first. This is the what-changed log (distinct from checks history, which is run/status over time).

alertee checks run <id>

Run a check immediately and print the result — handy for testing without waiting for the schedule.
The first line is a plain-English verdict that spells out the polarity, so there’s no guessing which way round the comparison fires:
The comparison you configure describes the healthy state and the check alerts on violation — see Conditions.

alertee checks preview-api

Probe a JSON API and list its extractable gjson paths, for authoring an api_metric check without curling first. Saves nothing.
Flags: --url, --http-method, --header "Key: Value" (repeatable), --query-param "key=value" (repeatable, auto-encoded), --request-body, --value-path (to confirm what a specific path extracts). See API metric checks.

alertee checks open <id>

Open a check’s page in your browser.

alertee connections list

List the database connections in the linked organization (use the ID when creating checks).

alertee connections create

Create a database connection in the linked organization. Pass flags, or omit them to be prompted (the URI is hidden-prompted). The connection URI is sent to the API over HTTPS and encrypted server-side — the CLI never stores it. The backend tests the connection before saving, so a bad URI or unreachable host fails here rather than saving a broken connection.
Flags: --name, --type postgres|clickhouse, --uri <connection-string>.

alertee connections update <connection>

Update an existing connection — rotate its credentials (--uri) or rename it. Re-tested before saving. The URI is encrypted server-side and never stored by the CLI.
Flags: --uri <connection-string> (new URI), --name (rename), --type postgres|clickhouse.

alertee connections test <connection>

Test an existing connection by name or ID. Reports detected permissions.

alertee connections delete <connection>

Delete a connection by name or ID. Prompts for confirmation first.

alertee checks create

Create a new check — a SQL check (single-value or grid), a website/API check, an API metric check, a heartbeat, or a push check. Pass flags for non-interactive use (CI, or an AI assistant driving the CLI), or omit them to be prompted for each field at a terminal. The condition describes the healthy state and the check alerts when it’s violated — see Conditions.
Flags: --name, --type <sql|http|api_metric|heartbeat|push>, --interval, --alert-level, --alert-message <text> (custom alert/incident text replacing the auto-generated message — supports {check_name}, {value}, {threshold}; see custom alert messages), --alert-group <name|id> (route alerts to a specific group), --calendar <name> (follow a calendar — NYSE, LSE, TSX, XETRA, EURONEXT, UK — quiet on its holidays/weekends), --description <text> (short note on what the check covers/why — also fed to Alertee’s AI incident advisory as domain context), --documentation <text> (longer-form runbook/notes), --justification <text> (why the check exists), --mute (create muted — runs but sends no alerts), --grace <count> / --grace-type / --grace-window (tolerate failures before alerting — see grace periods), --exclude-query / --include-rows / --max-rows <n> (control what webhook alerts send — the SQL query is included by default, raw rows are not).
  • SQL (--type sql, default): --connection <name|id>, --query; single-value/per-cell --condition (greater_than, less_than, greater_or_equal, less_or_equal, equals, not_equals, between, not_between, contains, regex, timestamp_age, is_null, is_not_null, exists) with its value flag --threshold, --match-value, or --min/--max; escalation levels with repeatable --extra-threshold "comparison:value:level" (e.g. --extra-threshold "less_than:100000:critical" — worst violated level wins); grid --grid, --evaluation-type, --severity, --label-query. The check is single-value unless --grid or --evaluation-type is given.
  • Website/API (--type http): --url, --http-method, --expected-status, --timeout, --max-response-time, --body-contains, --ssl-expiry-days.
  • API metric (--type api_metric): --url, --value-path (gjson path to the metric in the JSON response), --header "Key: Value" (repeatable — auth tokens), --query-param "key=value" (repeatable, auto-encoded — e.g. --query-param "q=SELECT count() AS value FROM events" for Tinybird/HTTP-SQL), --http-method, --request-body, --expected-status, --timeout; plus the same condition flags as SQL (--condition + --threshold, or --grid / --evaluation-type when the path yields {name,value} rows). See API metric checks. Use alertee checks preview-api (below) to discover value paths before saving.
  • Heartbeat (--type heartbeat): --expected-interval (minutes), --heartbeat-grace, --last-ping-status.
  • Push (--type push): --staleness-mins (the dead-man window — alert if nothing is pushed within this many minutes, default 60), plus the same condition flags as SQL (--condition + --threshold, or --grid / --evaluation-type for a grid push). Creating one prints the ingest URL your job POSTs to — see push checks and alertee push below.

alertee checks update <check>

Update a check’s common fields by name or ID. This is a partial update — only the flags you pass change. With no flags at a terminal it drops into an interactive editor for the same fields.
Flags: --name, --query, --staleness-mins (push checks: retune the dead-man window — the existing ingest URL keeps working), --label-query, --interval, --alert-level, --alert-message, --description, --documentation, --justification (set the author notes — --description is also fed to Alertee’s AI incident advisory; pass "" to clear any of them), --condition, --threshold, --match-value, --min, --max, --evaluation-type, --severity, --extra-threshold, --pause, --resume, --mute, --unmute, --grace <count>, --grace-type, --grace-window, --managed-by, --calendar, --clear-calendar, --tz, --include-query / --exclude-query, --include-rows / --exclude-rows, --max-rows <n> (control what webhook alerts send).
  • The condition flags (--condition, --threshold, --match-value, --min/--max, --evaluation-type, --severity, --extra-threshold) edit the check’s condition in place — they’re the same flags as checks create and only the ones you pass change; the rest of the condition (including escalation tiers) is preserved. See conditions.
  • --mute silences a check’s notifications without stopping it — it keeps running and updating its status, just doesn’t alert. Stays muted until --unmute. Good for a noisy, not-yet-tuned check. (Contrast with --pause, which stops the check running, and snooze, which skips runs for a short window.)
  • --grace <count> tolerates that many failures before alerting (for spiky metrics); --grace-type within_window + --grace-window <minutes> counts failures in a rolling window instead of consecutively. --grace 0 turns it off. See grace periods.
  • --managed-by user|alertee switches who maintains the check. alertee hands it to Alertee, which re-authors and re-reviews it on a cadence.
  • --calendar makes the check follow a calendar (NYSE = US market holidays, UK = UK bank holidays, plus LSE, TSX, XETRA, EURONEXT) so it stays quiet on that calendar’s closed days — weekends and its holidays. It’s day-level only: time-of-day stays with the check’s schedule, and the two compose.
Editing the condition itself (especially grid conditions) is done in the web UI or via the MCP update_check tool.

alertee push <token> [values...]

Push a number to a push check’s ingest URL. This is the one command that needs no login — the token in the URL is the credential, which is what lets a cron inside a private network use it.
Each push is evaluated against the check’s condition immediately, so the printed verdict (healthy, alerting, or error) is the real result — not a queued acknowledgement. Flags: --metadata <json> (optional JSON attached to the pushed batch).

alertee checks delete <check>

Delete a check by name or ID. Prompts for confirmation first.

alertee checks snooze <check>

Silence a check for the rest of today (it’s skipped until then). Auto-expires, or end it early with checks unsnooze. See Active schedule & snooze.
Flags: --until <iso-ts> (silence until a timestamp instead of end of day), --tz <zone> (local day boundary, default America/New_York), --reason.

alertee checks unsnooze <check>

End a check’s active snooze now, so its alerts resume immediately instead of waiting for the snooze to expire. No-op if the check isn’t snoozed; leaves recurring quiet windows and calendars untouched.
Past snoozes show up under alertee checks history <id> (a SNOOZES section).

alertee checks schedule <check>

Set a check’s custom schedule — the recurring hours/days it’s expected to be active. Outside it the check is skipped, so it won’t alert. This handles time-of-day; to also stay quiet on a calendar’s holidays (and weekends), add --calendar — the two compose. See Active schedule & snooze.
Flags: --before <hh:mm>, --after <hh:mm>, --weekdays (quiet all weekend), --tz <zone>, --reason, --clear.

alertee checks suggest-schedule <check>

Infer an active schedule from the check’s run history — Alertee looks at when the check normally has data and proposes hours/days. A suggestion only; pass --apply to set it as the check’s custom schedule. See Active schedule & snooze.
Flags: --days <n> (history window, default 30), --tz <zone>, --apply.

alertee alert-groups

Manage alert groups and their recipients. An alert group is a named set of recipients; a check routes its alerts to one group (the org default if none is set). See Alert groups for the model.
Recipients (channels) within a group:
Slack recipients are configured in the web UI (they need a connected Slack workspace).

alertee email-groups

Manage email groups — reusable lists of email recipients (external addresses or organization members). Attach one to an alert group with alert-groups add-email-group.

alertee inbox

View and triage inbox items (incidents). See Inbox.

alertee receivers

Manage inbound webhook receivers — external tools POST to a receiver’s URL to open an inbox incident. create prints the URL; copy it into the other tool.
Flags for create: --name, --severity info|warning|error|critical, --title-template, --description-template, --alert-group <name|id...>, --auto-resolve. POST a JSON body like {"title":"…","severity":"critical","dedup_key":"…"} to the printed URL.

alertee mcp

Start the MCP server for use with agents like Claude Code, or any MCP-compatible AI tool.
This is normally invoked automatically via your .mcp.json config — you don’t need to run it directly. See MCP setup for details.