Executable Runbooks from Markdown
Enforce process. Track progress. Resume anytime.
Rundown transforms static documentation into interactive, stateful CLI workflows, bridging the gap between "how-to" and "done."
- Human-Readable: Write standard Markdown.
- Agent-Readable: Write standard Markdown.
- Machine-Executable: Rundown CLI executes and enforces your process.
- Stateful: It remembers where you left off. Close your terminal, reboot your machine, and
rundown statuspicks right back up. - Agent-Ready: Designed to be the perfect "runtime" for AI agents (like Claude) to execute long-running, complex tasks reliably.
- Markdown-based runbooks - Define multi-step processes in readable
.runbook.mdfiles - State persistence - Runbook progress survives context clears
- XState compilation - Runbooks compile to state machines for reliable execution
- CLI control - Simple commands to run, pass, fail, and navigate runbooks
Rundown includes a Deno-inspired security policy layer that provides explicit allowlist-based permission control:
- Default-deny - Commands not in the allowlist require user confirmation
- Granular control - Separate allow/deny lists for commands, file access, and environment variables
- Runbook overrides - Per-runbook policy configurations for different trust levels
- CI-friendly -
--yesflag for non-interactive execution with pre-approved commands
Key CLI flags:
--allow-run <cmds>- Allow specific commands--allow-all/--deny-all- Trust or strict mode--policy <file>- Custom policy file--non-interactive- CI mode (auto-deny)
See Security Documentation for full configuration options.
npm install -g @rundown-org/cliCreate a runbook file deploy.runbook.md.
This example uses rd echo to simulate commands so you can run it immediately without any setup.
---
name: Deploy to Production
---
## 1. Run Tests
- PASS: CONTINUE
- FAIL: STOP
```bash
rd echo npm test
```
## 2. Build Application
- PASS: CONTINUE
- FAIL: STOP
```bash
rd echo npm run build
```
## 3. Deploy
- PASS: COMPLETE
- FAIL: STOP
```bash
rd echo npm run deploy
```Run the runbook:
rundown run deploy.runbook.mdTo make this real: Simply remove rd echo from the code blocks to execute the actual npm commands.
The rd command is an alias for rundown.
| Command | Description |
|---|---|
rundown run <file> |
Start a runbook |
rundown pass |
Mark current step as passed (evaluates PASS condition) |
rundown fail |
Mark current step as failed (evaluates FAIL condition) |
rundown goto <n> |
Jump to step number |
rundown status |
Show current state |
rundown stop [message] |
Abort runbook with optional message |
rundown complete [message] |
Mark runbook as complete with optional message |
rundown stash |
Pause enforcement (stash active runbook) |
rundown pop |
Resume enforcement (restore stashed runbook) |
rundown ls |
List active runbooks |
rundown ls --all |
List available runbook files |
rundown ls --json |
Output as JSON for programmatic use |
rundown ls --tags <tags> |
Filter runbooks by comma-separated tags |
rundown check <file> |
Validate runbook file |
rundown echo |
Test helper: echo with configurable result |
rundown prune |
Remove stale runbook state files |
rundown scenario <cmd> |
List, show, or run scenarios |
rundown prompt <content> |
Output content in markdown fences |
| Package | Description |
|---|---|
| @rundown-org/parser | Markdown runbook parser |
| @rundown-org/core | Runbook state management and XState compilation |
| @rundown-org/cli | Command-line interface |
- SPEC.md - Rundown format specification
See CONTRIBUTING.md for instructions on setting up the development environment and running tests.
MIT