{"id":44983575,"url":"https://github.com/rootlyhq/rootly-cli","last_synced_at":"2026-05-15T06:01:37.473Z","repository":{"id":339105579,"uuid":"1160086928","full_name":"rootlyhq/rootly-cli","owner":"rootlyhq","description":"CLI for managing Rootly incidents, alerts, services, teams, and on-call schedules","archived":false,"fork":false,"pushed_at":"2026-05-08T07:52:12.000Z","size":1392,"stargazers_count":9,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-08T09:36:04.599Z","etag":null,"topics":["cli","devops","golang","incident-management","oncall","rootly"],"latest_commit_sha":null,"homepage":"https://rootly.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rootlyhq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-17T14:27:41.000Z","updated_at":"2026-04-28T03:50:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rootlyhq/rootly-cli","commit_stats":null,"previous_names":["rootlyhq/rootly-cli"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/rootlyhq/rootly-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootlyhq%2Frootly-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootlyhq%2Frootly-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootlyhq%2Frootly-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootlyhq%2Frootly-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rootlyhq","download_url":"https://codeload.github.com/rootlyhq/rootly-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootlyhq%2Frootly-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33055989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","devops","golang","incident-management","oncall","rootly"],"created_at":"2026-02-18T19:04:03.381Z","updated_at":"2026-05-15T06:01:37.467Z","avatar_url":"https://github.com/rootlyhq.png","language":"Go","funding_links":[],"categories":["Incident Management / Incident Response / IT Alerting / On-Call"],"sub_categories":["Container Orchestration"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"rootly-cli-logo.png\" alt=\"Rootly CLI\" /\u003e\n\u003c/p\u003e\n\nA command-line interface for managing Rootly incidents, alerts, services, teams, on-call schedules, and pulses from the terminal.\n\n\u003e **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.\n\n![Go Version](https://img.shields.io/github/go-mod/go-version/rootlyhq/rootly-cli)\n![License](https://img.shields.io/github/license/rootlyhq/rootly-cli)\n![Release](https://img.shields.io/github/v/release/rootlyhq/rootly-cli)\n\n## Features\n\n- Full CRUD for incidents, alerts, services, and teams\n- Pulse tracking (`rootly pulse create`, `rootly pulse run`)\n- On-call schedule queries (list schedules, view shifts, who's on-call)\n- Alert action shortcuts (`rootly alerts ack`, `rootly alerts resolve`)\n- Multiple output formats: table, JSON, YAML, markdown\n- TTY-aware output (table in terminal, JSON when piped)\n- Shell completions for bash, zsh, fish, and PowerShell\n- Confirmation prompts for destructive operations\n- Pagination and server-side filtering\n\n## Installation\n\n### Homebrew (macOS/Linux)\n\n```bash\nbrew install rootlyhq/tap/rootly-cli\n```\n\n### Go Install\n\n```bash\ngo install github.com/rootlyhq/rootly-cli/cmd/rootly@latest\n```\n\n### Download Binary\n\nDownload the latest release from the [Releases](https://github.com/rootlyhq/rootly-cli/releases) page.\n\nAvailable for Linux (amd64/arm64), macOS (Intel/Apple Silicon), and Windows (amd64).\n\n### Build from Source\n\n```bash\ngit clone https://github.com/rootlyhq/rootly-cli.git\ncd rootly-cli\nmake build\n./bin/rootly\n```\n\n## Configuration\n\nSet your API key via environment variable or config file:\n\n```bash\n# Environment variable (recommended for CI/scripts)\nexport ROOTLY_API_KEY=\"your-api-key\"\n\n# Or config file at ~/.rootly-cli/config.yaml\n```\n\nConfig file format (`~/.rootly-cli/config.yaml`):\n\n```yaml\napi_key: \"your-api-key\"\napi_host: \"api.rootly.com\"  # Optional, defaults to api.rootly.com\n```\n\n### Getting an API Key\n\n1. Log in to your Rootly account\n2. Navigate to **Settings** \u003e **API Keys**\n3. Create a new API key with appropriate permissions\n\n## Usage\n\n```bash\n# Incidents\nrootly incidents list\nrootly incidents list --status=started --severity=critical\nrootly incidents get \u003cid\u003e\nrootly incidents create --title=\"Database outage\" --severity=critical\nrootly incidents update \u003cid\u003e --status=mitigated\nrootly incidents delete \u003cid\u003e\n\n# Alerts\nrootly alerts list\nrootly alerts get \u003cid\u003e\nrootly alerts create --summary=\"High CPU usage\" --source=datadog\nrootly alerts ack \u003cid\u003e\nrootly alerts resolve \u003cid\u003e\n\n# Services\nrootly services list\nrootly services get \u003cid\u003e\nrootly services create --name=\"api-gateway\"\nrootly services update \u003cid\u003e --description=\"Main API gateway\"\nrootly services delete \u003cid\u003e\n\n# Teams\nrootly teams list\nrootly teams get \u003cid\u003e\nrootly teams create --name=\"Platform\"\nrootly teams update \u003cid\u003e --color=\"#FF5733\"\nrootly teams delete \u003cid\u003e\n\n# On-Call\nrootly oncall schedules                     # List schedules\nrootly oncall who                           # Who's on-call right now\nrootly oncall who --schedule-id=sched-123   # Filter by schedule\nrootly oncall who --service-id=svc-456      # Filter by service\nrootly oncall shifts                        # View upcoming shifts (7 days)\nrootly oncall shifts --days=14              # Next 14 days\nrootly oncall shifts --escalation-policy-id=ep-789\n\n# Pulses\nrootly pulse create \"Deploy v1.2.3\"                      # Send a pulse\nrootly pulse create \"Deploy v1.2.3\" -l \"version=1.2.3,team=backend\"\nrootly pulse create \"Deploy v1.2.3\" -s api-gateway -e production\nrootly pulse create \"Deploy v1.2.3\" --source=ci -r \"commit=abc123,pr=456\"\n\n# Pulse Run (wrap a command and send pulse with timing + exit code)\nrootly pulse run -- make deploy\nrootly pulse run --summary=\"Deploy to prod\" -- make deploy\nrootly pulse run -s api-gateway -l \"env=prod\" -- make deploy\n```\n\n### Pulse Flags\n\n| Flag | Short | Env Var | Description |\n|------|-------|---------|-------------|\n| `--labels` | `-l` | `ROOTLY_LABELS` | Key=value pairs, comma-separated |\n| `--services` | `-s` | `ROOTLY_SERVICES` | Service slugs/IDs, comma-separated |\n| `--environments` | `-e` | `ROOTLY_ENVIRONMENTS` | Environment slugs/IDs, comma-separated |\n| `--source` | | `ROOTLY_SOURCE` | Source identifier (default: `cli`) |\n| `--refs` | `-r` | `ROOTLY_REFS` | Reference key=value pairs, comma-separated |\n| `--summary` | | `ROOTLY_SUMMARY` | Summary (alternative to positional arg) |\n\n`pulse run` also accepts `--summary` (defaults to the command string) and automatically adds an `exit_status` label with the command's exit code.\n\n### Output Formats\n\n```bash\n# Table (default in terminal)\nrootly incidents list\n\n# JSON (default when piped, or explicit)\nrootly incidents list --format=json\nrootly incidents list --format=json | jq '.[] | .title'\n\n# YAML\nrootly incidents get \u003cid\u003e --format=yaml\n\n# Markdown (for documentation or LLM consumption)\nrootly incidents list --format=markdown\n```\n\n### Pagination \u0026 Filtering\n\n```bash\n# Pagination\nrootly incidents list --page-size=50 --page=2\n\n# Filtering\nrootly incidents list --status=started --severity=critical\nrootly alerts list --source=datadog\nrootly services list --name=api\n\n# Sorting (prefix with - for descending)\nrootly incidents list --sort=created_at\nrootly incidents list --sort=-created_at\n```\n\n### Global Flags\n\n| Flag | Short | Env Var | Description |\n|------|-------|---------|-------------|\n| `--api-key` | `-k` | `ROOTLY_API_KEY` | Rootly API key |\n| `--api-host` | | `ROOTLY_API_HOST` | API host (default: `api.rootly.com`) |\n| `--format` | | | Output format: `table`, `json`, `yaml`, `markdown` |\n| `--debug` | `-d` | `ROOTLY_DEBUG` | Enable debug output |\n| `--quiet` | `-q` | `ROOTLY_QUIET` | Suppress non-essential output |\n| `--no-color` | | | Disable colored output |\n\n### Command Reference\n\n| Command | Subcommands | Aliases |\n|---------|-------------|---------|\n| `rootly incidents` | `list`, `get`, `create`, `update`, `delete` | `incident`, `inc` |\n| `rootly alerts` | `list`, `get`, `create`, `update`, `ack`, `resolve` | `alert`, `alr` |\n| `rootly services` | `list`, `get`, `create`, `update`, `delete` | `service`, `svc` |\n| `rootly teams` | `list`, `get`, `create`, `update`, `delete` | `team` |\n| `rootly oncall` | `schedules`, `shifts`, `who` | `on-call` |\n| `rootly pulse` | `create`, `run` | `pulses` |\n| `rootly completion` | `bash`, `zsh`, `fish`, `powershell` | |\n| `rootly version` | | |\n\n### Shell Completions\n\n```bash\n# Bash\nrootly completion bash \u003e /etc/bash_completion.d/rootly\n\n# Zsh\nrootly completion zsh \u003e \"${fpath[1]}/_rootly\"\n\n# Fish\nrootly completion fish \u003e ~/.config/fish/completions/rootly.fish\n```\n\n## Development\n\n### Prerequisites\n\n- Go 1.24+\n- Make\n\n### Build \u0026 Test\n\n```bash\nmake build      # Build binary\nmake test       # Run tests\nmake lint       # Run linter\nmake check      # Format, lint, and test\nmake coverage   # Tests with coverage report\n```\n\n### Release\n\nReleases are automated via GoReleaser when a new tag is pushed:\n\n```bash\nmake release-patch   # v0.1.0 -\u003e v0.1.1\nmake release-minor   # v0.1.0 -\u003e v0.2.0\nmake release-major   # v0.1.0 -\u003e v1.0.0\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE.txt) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootlyhq%2Frootly-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frootlyhq%2Frootly-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootlyhq%2Frootly-cli/lists"}