---
category: Tutorials
title: Get Started with openstatus CLI
description: "Step-by-step tutorial to install and use the openstatus CLI for monitoring as code"
---
| | |
|---|---|
| **Time** | ~10 minutes |
| **Level** | Intermediate |
| **Prerequisites** | openstatus account, command-line experience, API key from your workspace (Settings → General → API Keys) |
In this tutorial, you'll use the openstatus CLI to manage your monitors as code. This lets you version-control your monitoring configuration, automate deployments, and implement GitOps workflows.
By the end you'll have the openstatus CLI installed on your system, your monitors exported to a YAML configuration file, and a working sense of the monitoring-as-code workflow.
## Installation
Install the openstatus CLI to manage your monitors directly from code.
### macOS
Using Homebrew (recommended):
```bash
brew install openstatusHQ/cli/openstatus --cask
```
Or using the install script:
```bash
curl -fsSL https://raw.githubusercontent.com/openstatusHQ/cli/refs/heads/main/install.sh | bash
```
### Linux
```bash
curl -fsSL https://raw.githubusercontent.com/openstatusHQ/cli/refs/heads/main/install.sh | bash
```
### Windows
```powershell
iwr https://raw.githubusercontent.com/openstatusHQ/cli/refs/heads/main/install.ps1 | iex
```
### Verify installation
Run the following command to confirm the CLI is installed:
```bash
openstatus --version
```
You should see output like:
```
openstatus version x.x.x
```
## Configure API authentication
1. In your openstatus dashboard, go to **Settings → General** and find the **API Keys** card.
2. Click **Create** and copy the value — you won't see it again after closing the dialog.
3. Make it available to the CLI as an environment variable:
```bash
# macOS / Linux
export OPENSTATUS_API_TOKEN=
```
```powershell
# Windows PowerShell
$env:OPENSTATUS_API_TOKEN=""
```
## Import existing monitors
Start by importing your existing monitors from your workspace to a YAML file:
```bash
openstatus monitors import
```
You should see output confirming the import:
```
Successfully imported X monitors to openstatus.yaml
```
This creates an `openstatus.yaml` file containing all your current monitors. This file becomes your single source of truth for monitoring configuration.
**Checkpoint:** Open the `openstatus.yaml` file and verify it contains your monitors. You should see entries with your monitor names and URLs.
## Manage monitors as code
Now you can add, remove, or update monitors in the YAML file and apply your changes:
```bash
openstatus monitors apply
```
The CLI will show you a diff of changes before applying them, ensuring you're aware of what will be modified.
## What you've accomplished
- Installed the openstatus CLI
- Configured API authentication
- Imported monitors to a YAML file
- Learned the monitoring-as-code workflow
## Troubleshooting
### "command not found: openstatus"
**Cause:** The CLI binary is not in your PATH.
**Fix (macOS/Homebrew):**
```bash
brew reinstall openstatusHQ/cli/openstatus --cask
```
**Fix (install script):** Ensure `~/.local/bin` is in your PATH:
```bash
export PATH="$HOME/.local/bin:$PATH"
```
### "unauthorized" or "invalid token" error
**Cause:** Your API token is missing or incorrect.
**Fix:**
1. Verify the token is set: `echo $OPENSTATUS_API_TOKEN`
2. Regenerate the key in your workspace settings (Settings → General → API Keys)
3. Make sure there are no extra spaces or newlines in the token value
### "no monitors found" on import
**Cause:** Your workspace has no monitors, or the token belongs to a different workspace.
**Fix:** Create at least one monitor in the dashboard first, then retry the import.
## What's next
- **[Monitor your MCP server](/docs/guides/how-to-monitor-mcp-server)** — example of CLI-based monitor configuration.
- **[Run synthetic tests in GitHub Actions](/docs/guides/how-to-run-synthetic-test-github-action)** — automate monitoring in your pipeline.
### Learn more
- **[Monitoring-as-code concept](/docs/concept/uptime-monitoring-as-code)** — why manage monitors as code.
- **[CLI reference](/docs/reference/cli-reference)** — all available commands.
- **[YAML configuration examples](https://github.com/openstatusHQ/cli-template)** — sample configurations.