A browsable catalog of automation scripts that operators can select, parameterize, and execute directly from the terminal.
Try the Live Demo · Documentation · Report Bug · Request Feature
Table of Contents
dops is built for DevOps and platform engineering teams who need a consistent, safe way to run operational scripts. Instead of scattered shell scripts with tribal knowledge, dops organizes them into browsable catalogs with built-in parameter management, risk controls, and encrypted credential storage.
- Interactive TUI — sidebar catalog tree, metadata panel, live output pane, and wizard-driven parameter input
- Web UI — browser-based interface via
dops openwith real-time log streaming - Catalog system — organize runbooks locally or install shared catalogs from git repositories
- Runbook aliases — short names for frequently used runbooks (
dops run deployinstead of full IDs) - Risk controls — confirmation gates for high/critical risk runbooks, per-catalog risk policies
- Encrypted vault — saved parameters encrypted with age (X25519 + ChaCha20-Poly1305)
- Smart parameter input — saved values auto-applied, only prompts for what's needed
- Live execution — real-time stdout/stderr streaming with scroll, search, and text selection
- Execution history — persistent audit trail across TUI, CLI, Web, and MCP with
dops historyand web UI timeline - MCP server — expose runbooks as tools and skills to AI agents via the Model Context Protocol
- MCP skills — injectable domain knowledge for AI agents via
type: skillrunbooks - 20 themes — github, dracula, gruvbox, nord, synthwave, unicorn, and more
- CLI mode — run any runbook non-interactively with
dops run <id> --param key=value
curl -fsSL https://raw.githubusercontent.com/masonhuemmer/dops/main/install.sh | shInstalls the latest binary to /usr/local/bin. Set DOPS_INSTALL_DIR to change the location.
winget install RunDops.dopsOr via Scoop:
scoop bucket add masonhuemmer https://github.com/masonhuemmer/scoop-bucket.git
scoop install dopsOr download the latest .zip from the releases page and add dops.exe to your PATH.
brew tap masonhuemmer/tap
brew install dopsgo install github.com/masonhuemmer/dops@latestThe image is private. Run docker login ghcr.io with a GitHub token that has read:packages and access to this package before pulling.
docker run -i -v ~/.dops:/data/dops ghcr.io/masonhuemmer/dops:latestgit clone https://github.com/masonhuemmer/dops.git
cd dops
make build
./bin/dops1. Initialize dops:
dops initThis creates ~/.dops/ with a default config and a sample hello-world runbook.
2. Launch the TUI:
dops3. Navigate with arrow keys, run with Enter, fill in parameters, and confirm.
4. Or launch the web UI:
dops open5. Install a shared catalog:
dops catalog install https://github.com/your-org/runbooks.gitCatalogs are directories of runbooks. Each runbook is a folder with a runbook.yaml and a script.sh:
my-catalog/
├── check-health/
│ ├── runbook.yaml
│ └── script.sh
└── deploy-service/
├── runbook.yaml
└── script.sh
name: check-health
version: 1.0.0
description: Runs health checks against a service endpoint
risk_level: medium
script: script.sh
parameters:
- name: endpoint
type: string
required: true
description: The endpoint to check
scope: globalSee the runbook guide for the full YAML schema, parameter types, and shell scripting conventions.
dops ships with 20 built-in themes. Default: github.
dops config set theme=draculagithub |
dracula |
gruvbox |
nord |
monokai |
synthwave |
nightowl |
one-dark |
kanagawa |
everforest |
solarized |
espresso |
unicorn |
ayu |
zenburn |
catppuccin-mocha |
catppuccin-latte |
rosepine-dawn |
doop |
tokyomidnight |
Set theme=rainbow for a random theme on every launch.
Custom themes go in ~/.dops/themes/<name>.json. See the configuration reference for the theme schema.
Launch a browser-based interface with dops open:
dops open # opens http://localhost:3000
dops open --port 8080 # custom port
dops open --no-browser # start server without opening browserThe web UI provides:
- Searchable catalog sidebar with risk indicators
- Parameter forms with saved values pre-filled
- Risk confirmation dialogs for high/critical operations
- Real-time execution log streaming with ANSI color support
- Full theme support — mirrors your configured dops theme
The SPA is embedded in the Go binary — no Node.js required at runtime. See the Web UI guide for details.
dops exposes runbooks to AI agents via the Model Context Protocol. Each runbook becomes an MCP tool with a JSON Schema.
Add to .claude/settings.json:
{
"mcpServers": {
"dops": {
"command": "dops",
"args": ["mcp", "serve"]
}
}
}Authenticate as described in Docker installation before running the private image.
# stdio transport
docker run -i -v ~/.dops:/data/dops ghcr.io/masonhuemmer/dops:latest
# HTTP transport
docker run -p 8080:8080 -v ~/.dops:/data/dops ghcr.io/masonhuemmer/dops:latest --transport http --port 8080See the MCP guide for details on risk controls, resources, and streaming.
| Key | Action |
|---|---|
↑↓ |
Navigate / scroll |
Enter |
Run runbook |
←→ |
Collapse/expand catalog |
/ |
Search |
Tab |
Switch pane focus |
? |
Help overlay |
ctrl+x |
Stop execution |
ctrl+shift+p |
Command palette |
q |
Quit |
See the full keyboard reference for output pane controls, search navigation, and wizard shortcuts.
# Bash
dops completion bash > /etc/bash_completion.d/dops
# Zsh
dops completion zsh > "${fpath[1]}/_dops"
# Fish
dops completion fish > ~/.config/fish/completions/dops.fish
# PowerShell
dops completion powershell | Out-String | Invoke-Expressionmake build # Build binary
make test # Run tests
make vet # Go vet
make lint # golangci-lint
make web # Build web UI (requires Node.js)
make screenshots # Regenerate README hero screenshots and demo GIF (requires VHS)
make web-demo # Record web UI demo GIF (requires Playwright + ffmpeg)
make docker # Build Docker image
make ci # Run CI checks (vet + test + build)- Documentation — guides, reference, and configuration
- GitHub Issues — bug reports and feature requests
- CLI Reference — all commands and flags
If you find dops useful, consider buying me a coffee!
Distributed under the MIT License. See LICENSE for more information.












