Skip to content

Repository files navigation

crewbit

Warning: crewbit spawns Claude Code with --dangerously-skip-permissions, which disables all permission prompts. Claude will be able to read, write, and execute anything your shell user can. Only run crewbit in environments you trust and with slash commands you have reviewed.

Give life to an AI agent with a single command.

crewbit ./dev-junior.yaml

crewbit 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.

How it works

  1. You define a workflow YAML with transitions and commands.
  2. crewbit polls the issue tracker in a loop.
  3. When an issue is ready, it spawns claude --print <command> <issue-key> in an isolated git worktree.
  4. On success, it moves to the next issue. On failure, it backs off and retries.

Install

Binary (recommended):

macOS / Linux:

curl -fsSL https://crewbit.sh/install | bash

Windows (PowerShell):

irm https://crewbit.sh/install.ps1 | iex

Installs the latest release to ~/.crewbit/bin/crewbit (or %USERPROFILE%\.crewbit\bin\crewbit.exe on Windows) and adds the directory to your PATH unless --no-modify-path / -NoModifyPath is set.

Override the directory:

CREWBIT_INSTALL_DIR=~/.local/bin curl -fsSL https://crewbit.sh/install | bash
$env:CREWBIT_INSTALL_DIR = 'C:\tools\crewbit'; irm https://crewbit.sh/install.ps1 | iex

Or pass flags directly:

curl -fsSL https://crewbit.sh/install | bash -s -- --install-dir ~/.local/bin --no-modify-path
& ([scriptblock]::Create((irm https://crewbit.sh/install.ps1))) -InstallDir 'C:\tools\crewbit' -NoModifyPath

From source (requires Bun):

git clone https://github.com/dukex/crewbit
cd crewbit
bun run build
sudo mv crewbit /usr/local/bin/   # on Windows: move .\crewbit.exe to a folder on your PATH

Usage

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

Workflow YAML

provider: jira

providers:
  jira:
    baseUrl: https://your-org.atlassian.net
    projectKey: JIR
    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: 40

transitions 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.

Examples

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

Environment variables (Jira provider)

export JIRA_EMAIL=you@example.com
export JIRA_API_TOKEN=your-token

Contributing

See CONTRIBUTING.md.

License

MIT

About

Give life to an AI agent with a single command.

Topics

Resources

Contributing

Stars

17 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages