Give life to an AI agent with a single command.
crewbit ./dev-junior.yamlcrewbit is a daemon that watches an issue tracker, picks up work in priority order, and runs a Claude Code slash command for each issue. The entire behavior of an agent — what it does, in what order, with which commands — is defined in one YAML file.
- You define a workflow YAML with transitions and commands.
- crewbit polls the issue tracker in a loop.
- When an issue is ready, it spawns
claude --print <command> <issue-key>in an isolated git worktree. - On success, it moves to the next issue. On failure, it backs off and retries.
Binary (recommended):
curl -fsSL https://crewbit.sh/install | shInstalls the latest release to /usr/local/bin/crewbit. Override the directory:
CREWBIT_INSTALL_DIR=~/.local/bin curl -fsSL https://crewbit.sh/install | shFrom source (requires Bun):
git clone https://github.com/dukex/crewbit
cd crewbit
bun run build
sudo mv crewbit /usr/local/bin/crewbit <path-to-workflow.yaml> [--dry-run]| Flag | Description |
|---|---|
--dry-run |
Print what would run without spawning Claude |
Environment variables override daemon config:
| Variable | Default | Description |
|---|---|---|
WAIT_SECONDS |
from yaml | Polling interval when queue is empty |
MAX_SESSION_SECONDS |
from yaml | Hard timeout per Claude session |
provider: jira
providers:
jira:
baseUrl: https://your-org.atlassian.net
projectKey: KAN
transitionIds:
Start: "21" # To Do → In Progress
ToReview: "9" # In Progress → In Review
Done: "6" # Accepted → Done
issueTypes:
subtask: "10002"
# Daemon iterates in order — first transition with pending issues wins
transitions:
Done:
from: Accepted
command: /merge
Start:
from: To Do
command: /develop
agent:
planCommentMarker: "Crewbit plan"
daemon:
waitSeconds: 30
maxSessionSeconds: 7200
worktreePrefix: dev-junior
# optional
git:
defaultBranch: main
branchPattern: "{issueKey}/{slug}"
slugMaxLength: 40transitions defines the work the daemon picks up. The order sets the priority — the first transition with pending issues wins each cycle. Each transition maps to a Claude Code slash command.
See examples/ for ready-to-use personas.
| File | What it does |
|---|---|
examples/dev-junior.yaml |
Implements tickets and merges accepted PRs |
examples/releaser.yaml |
Runs the release process |
examples/copywriter.yaml |
Drafts and publishes marketing copy |
examples/qa-bot.yaml |
Runs test suites and reports results |
examples/translator.yaml |
Translates i18n tickets |
export JIRA_EMAIL=you@example.com
export JIRA_API_TOKEN=your-tokenSee CONTRIBUTING.md.