https://github.com/rootlyhq/rootly-cli
CLI for managing Rootly incidents, alerts, services, teams, and on-call schedules
https://github.com/rootlyhq/rootly-cli
cli devops golang incident-management oncall rootly
Last synced: about 1 month ago
JSON representation
CLI for managing Rootly incidents, alerts, services, teams, and on-call schedules
- Host: GitHub
- URL: https://github.com/rootlyhq/rootly-cli
- Owner: rootlyhq
- License: mit
- Created: 2026-02-17T14:27:41.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2026-05-08T07:52:12.000Z (about 1 month ago)
- Last Synced: 2026-05-08T09:36:04.599Z (about 1 month ago)
- Topics: cli, devops, golang, incident-management, oncall, rootly
- Language: Go
- Homepage: https://rootly.com
- Size: 1.33 MB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-sre-tools - Rootly CLI - Open-source CLI to manage Rootly incidents, alerts, services, teams, and on-call schedules from the terminal. (Incident Management / Incident Response / IT Alerting / On-Call / Container Orchestration)
README
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`](https://github.com/rootlyhq/cli) (now archived). All pulse functionality from the original CLI is included here.



## 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)
```bash
brew install rootlyhq/tap/rootly-cli
```
### Go Install
```bash
go install github.com/rootlyhq/rootly-cli/cmd/rootly@latest
```
### Download Binary
Download the latest release from the [Releases](https://github.com/rootlyhq/rootly-cli/releases) page.
Available for Linux (amd64/arm64), macOS (Intel/Apple Silicon), and Windows (amd64).
### Build from Source
```bash
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:
```bash
# 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`):
```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
```bash
# Incidents
rootly incidents list
rootly incidents list --status=started --severity=critical
rootly incidents get
rootly incidents create --title="Database outage" --severity=critical
rootly incidents update --status=mitigated
rootly incidents delete
# Alerts
rootly alerts list
rootly alerts get
rootly alerts create --summary="High CPU usage" --source=datadog
rootly alerts ack
rootly alerts resolve
# Services
rootly services list
rootly services get
rootly services create --name="api-gateway"
rootly services update --description="Main API gateway"
rootly services delete
# Teams
rootly teams list
rootly teams get
rootly teams create --name="Platform"
rootly teams update --color="#FF5733"
rootly teams delete
# 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
| Flag | Short | Env Var | Description |
|------|-------|---------|-------------|
| `--labels` | `-l` | `ROOTLY_LABELS` | Key=value pairs, comma-separated |
| `--services` | `-s` | `ROOTLY_SERVICES` | Service slugs/IDs, comma-separated |
| `--environments` | `-e` | `ROOTLY_ENVIRONMENTS` | Environment slugs/IDs, comma-separated |
| `--source` | | `ROOTLY_SOURCE` | Source identifier (default: `cli`) |
| `--refs` | `-r` | `ROOTLY_REFS` | Reference key=value pairs, comma-separated |
| `--summary` | | `ROOTLY_SUMMARY` | Summary (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
```bash
# 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 --format=yaml
# Markdown (for documentation or LLM consumption)
rootly incidents list --format=markdown
```
### Pagination & Filtering
```bash
# 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
| Flag | Short | Env Var | Description |
|------|-------|---------|-------------|
| `--api-key` | `-k` | `ROOTLY_API_KEY` | Rootly API key |
| `--api-host` | | `ROOTLY_API_HOST` | API host (default: `api.rootly.com`) |
| `--format` | | | Output format: `table`, `json`, `yaml`, `markdown` |
| `--debug` | `-d` | `ROOTLY_DEBUG` | Enable debug output |
| `--quiet` | `-q` | `ROOTLY_QUIET` | Suppress non-essential output |
| `--no-color` | | | Disable colored output |
### Command Reference
| Command | Subcommands | Aliases |
|---------|-------------|---------|
| `rootly incidents` | `list`, `get`, `create`, `update`, `delete` | `incident`, `inc` |
| `rootly alerts` | `list`, `get`, `create`, `update`, `ack`, `resolve` | `alert`, `alr` |
| `rootly services` | `list`, `get`, `create`, `update`, `delete` | `service`, `svc` |
| `rootly teams` | `list`, `get`, `create`, `update`, `delete` | `team` |
| `rootly oncall` | `schedules`, `shifts`, `who` | `on-call` |
| `rootly pulse` | `create`, `run` | `pulses` |
| `rootly completion` | `bash`, `zsh`, `fish`, `powershell` | |
| `rootly version` | | |
### Shell Completions
```bash
# 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
```bash
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:
```bash
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](LICENSE.txt) for details.