Filtering

March 10, 2026 ยท View on GitHub

Rootly CLI

A command-line interface for managing Rootly incidents, alerts, services, teams, on-call schedules, and pulses from the terminal.

Note: This is the successor to rootlyhq/cli (now archived). All pulse functionality from the original CLI is included here.

Go Version License Release

Features

  • Full CRUD for incidents, alerts, services, and teams
  • Pulse tracking (rootly pulse create, rootly pulse run)
  • On-call schedule queries (list schedules, view shifts, who's on-call)
  • Alert action shortcuts (rootly alerts ack, rootly alerts resolve)
  • Multiple output formats: table, JSON, YAML, markdown
  • TTY-aware output (table in terminal, JSON when piped)
  • Shell completions for bash, zsh, fish, and PowerShell
  • Confirmation prompts for destructive operations
  • Pagination and server-side filtering

Installation

Homebrew (macOS/Linux)

brew install rootlyhq/tap/rootly-cli

Go Install

go install github.com/rootlyhq/rootly-cli/cmd/rootly@latest

Download Binary

Download the latest release from the Releases page.

Available for Linux (amd64/arm64), macOS (Intel/Apple Silicon), and Windows (amd64).

Build from Source

git clone https://github.com/rootlyhq/rootly-cli.git
cd rootly-cli
make build
./bin/rootly

Configuration

Set your API key via environment variable or config file:

# Environment variable (recommended for CI/scripts)
export ROOTLY_API_KEY="your-api-key"

# Or config file at ~/.rootly-cli/config.yaml

Config file format (~/.rootly-cli/config.yaml):

api_key: "your-api-key"
api_host: "api.rootly.com"  # Optional, defaults to api.rootly.com

Getting an API Key

  1. Log in to your Rootly account
  2. Navigate to Settings > API Keys
  3. Create a new API key with appropriate permissions

Usage

# Incidents
rootly incidents list
rootly incidents list --status=started --severity=critical
rootly incidents get <id>
rootly incidents create --title="Database outage" --severity=critical
rootly incidents update <id> --status=mitigated
rootly incidents delete <id>

# Alerts
rootly alerts list
rootly alerts get <id>
rootly alerts create --summary="High CPU usage" --source=datadog
rootly alerts ack <id>
rootly alerts resolve <id>

# Services
rootly services list
rootly services get <id>
rootly services create --name="api-gateway"
rootly services update <id> --description="Main API gateway"
rootly services delete <id>

# Teams
rootly teams list
rootly teams get <id>
rootly teams create --name="Platform"
rootly teams update <id> --color="#FF5733"
rootly teams delete <id>

# On-Call
rootly oncall schedules                     # List schedules
rootly oncall who                           # Who's on-call right now
rootly oncall who --schedule-id=sched-123   # Filter by schedule
rootly oncall who --service-id=svc-456      # Filter by service
rootly oncall shifts                        # View upcoming shifts (7 days)
rootly oncall shifts --days=14              # Next 14 days
rootly oncall shifts --escalation-policy-id=ep-789

# Pulses
rootly pulse create "Deploy v1.2.3"                      # Send a pulse
rootly pulse create "Deploy v1.2.3" -l "version=1.2.3,team=backend"
rootly pulse create "Deploy v1.2.3" -s api-gateway -e production
rootly pulse create "Deploy v1.2.3" --source=ci -r "commit=abc123,pr=456"

# Pulse Run (wrap a command and send pulse with timing + exit code)
rootly pulse run -- make deploy
rootly pulse run --summary="Deploy to prod" -- make deploy
rootly pulse run -s api-gateway -l "env=prod" -- make deploy

Pulse Flags

FlagShortEnv VarDescription
--labels-lROOTLY_LABELSKey=value pairs, comma-separated
--services-sROOTLY_SERVICESService slugs/IDs, comma-separated
--environments-eROOTLY_ENVIRONMENTSEnvironment slugs/IDs, comma-separated
--sourceROOTLY_SOURCESource identifier (default: cli)
--refs-rROOTLY_REFSReference key=value pairs, comma-separated
--summaryROOTLY_SUMMARYSummary (alternative to positional arg)

pulse run also accepts --summary (defaults to the command string) and automatically adds an exit_status label with the command's exit code.

Output Formats

# Table (default in terminal)
rootly incidents list

# JSON (default when piped, or explicit)
rootly incidents list --format=json
rootly incidents list --format=json | jq '.[] | .title'

# YAML
rootly incidents get <id> --format=yaml

# Markdown (for documentation or LLM consumption)
rootly incidents list --format=markdown

Pagination & Filtering

# Pagination
rootly incidents list --page-size=50 --page=2

# Filtering
rootly incidents list --status=started --severity=critical
rootly alerts list --source=datadog
rootly services list --name=api

# Sorting (prefix with - for descending)
rootly incidents list --sort=created_at
rootly incidents list --sort=-created_at

Global Flags

FlagShortEnv VarDescription
--api-key-kROOTLY_API_KEYRootly API key
--api-hostROOTLY_API_HOSTAPI host (default: api.rootly.com)
--formatOutput format: table, json, yaml, markdown
--debug-dROOTLY_DEBUGEnable debug output
--quiet-qROOTLY_QUIETSuppress non-essential output
--no-colorDisable colored output

Command Reference

CommandSubcommandsAliases
rootly incidentslist, get, create, update, deleteincident, inc
rootly alertslist, get, create, update, ack, resolvealert, alr
rootly serviceslist, get, create, update, deleteservice, svc
rootly teamslist, get, create, update, deleteteam
rootly oncallschedules, shifts, whoon-call
rootly pulsecreate, runpulses
rootly completionbash, zsh, fish, powershell
rootly version

Shell Completions

# Bash
rootly completion bash > /etc/bash_completion.d/rootly

# Zsh
rootly completion zsh > "${fpath[1]}/_rootly"

# Fish
rootly completion fish > ~/.config/fish/completions/rootly.fish

Development

Prerequisites

  • Go 1.24+
  • Make

Build & Test

make build      # Build binary
make test       # Run tests
make lint       # Run linter
make check      # Format, lint, and test
make coverage   # Tests with coverage report

Release

Releases are automated via GoReleaser when a new tag is pushed:

make release-patch   # v0.1.0 -> v0.1.1
make release-minor   # v0.1.0 -> v0.2.0
make release-major   # v0.1.0 -> v1.0.0

License

MIT License - see LICENSE for details.