YAML frontmatter for settings, markdown body for the prompt.
--- name: code-reviewer interval_seconds: 60 max_turns: 20 --- Review open PRs and post comments...
Spawns Claude with your prompt, tools, and workspace. Runs, logs, and sleeps on a loop.
$ botctl start code-reviewer -d ✓ Harness started (pid 48201) $ botctl logs code-reviewer -f [run #1] Reviewing PR #49...
Every run saves its session. Resume where Claude left off, or send messages to redirect a running bot.
$ botctl start review --message "focus on PR 51" ✓ Message queued, waking bot...
Edit BOT.md and the next run picks up changes. No restarts, no deploys, no downtime.
# change max_turns in BOT.md max_turns: 20 → max_turns: 50 # next run uses new value automatically
Search, install, and share reusable skill modules from GitHub. Skills inject capabilities into any bot's prompt.
$ botctl skills search slack $ botctl skills add owner/repo --skill slack-notify $ botctl skills list
Monitor and control bots from the browser. Same capabilities as the TUI — start, stop, message, and stream logs.
$ botctl --web-ui ✓ Dashboard at http://localhost:4444 $ botctl --web-ui --port 8080