Skip to content

Workflow YAML Reference

Full specification of the crewbit workflow configuration file.

Top-level fields

FieldTypeRequiredDescription
providerstringyesIssue provider name (jira)
providersobjectyesProvider-specific configuration
runnerstringnoExecution backend (claude, opencode)
transitionsobjectyesWorkflow transitions (order = priority)
agentobjectnoAgent behavior settings
daemonobjectnoDaemon timing settings
opencodeobjectnoOpenCode runner settings
gitobjectnoGit branch settings

providers.jira

FieldTypeRequiredDefaultDescription
baseUrlstringyesJira instance URL
projectKeystringyesJira project key (e.g. JIR)
transitionIdsobjectyesMap of logical name → Jira numeric transition ID
issueTypesobjectyesMap of type name → Jira issue type ID
sortFieldstringnoupdatedJQL field used in ORDER BY … DESC

transitionIds maps a logical name to the numeric Jira transition ID (e.g. Start: "21"). Find IDs via the Jira REST API or project settings.

transitions.<name>

FieldTypeRequiredDescription
fromstringyesSource status to pick issues from
commandstringyesClaude Code slash command to run (e.g. /develop)
promptstringnoFull prompt sent to Claude instead of the default

When prompt is omitted, crewbit sends {command} {issueKey} (e.g. /develop PROJ-42).

When prompt is set, crewbit interpolates the following placeholders before sending:

PlaceholderReplaced with
{command}The value of the transition's command field
{issueKey}The issue key from the provider (e.g. PROJ-42)

runner

runner selects which execution backend crewbit uses to run each transition.

  • claude (default) — spawns Claude Code as a child process.
  • opencode — calls an OpenCode server over HTTP.

daemon

FieldTypeDefaultDescription
waitSecondsnumber30Polling interval when queue is empty
maxSessionSecondsnumber7200Hard timeout per Claude session
worktreePrefixstringDeprecated — use git.worktreePrefix instead

opencode

FieldTypeDefaultDescription
baseUrlstringOpenCode server base URL (e.g. http://localhost:4096)
usernamestringopencodeHTTP basic auth username
passwordstringHTTP basic auth password
portnumber4096Port to start opencode serve with
hostnamestring127.0.0.1Hostname to start opencode serve with
corsstring[][]Additional CORS origins
mdnsbooleanfalseEnable mDNS discovery
mdnsDomainstringopencode.localCustom mDNS domain name
startbooleantrueStart opencode serve automatically

When runner: opencode is used, crewbit creates an isolated git worktree and sends OpenCode API requests with ?directory=<worktree-path> so each session runs inside that worktree instead of the repository root.

git

FieldTypeDefaultDescription
defaultBranchstringmainBase branch for new worktrees
branchPatternstringTemplate for feature branch names
slugMaxLengthnumber40Max chars in the slug portion
worktreePrefixstringcrewbitPrefix for git worktree branch names
disablebooleanfalseSkip git worktree creation; agent runs in the cwd

When git.disable: true, no worktree is created. The agent runs directly in the directory where crewbit was started. Useful for non-git projects or tasks that don't involve a codebase.

git.branchPattern tokens

  • {issueKey}: The issue key from the provider (e.g. PROJ-42).
  • {slug}: A slugified version of the issue title — lowercased, spaces replaced with -, truncated to git.slugMaxLength.

Example: feature/{issueKey}/{slug}feature/PROJ-42/fix-login-bug.

agent

FieldTypeDescription
planCommentMarkerstringPrefix that identifies a plan comment on the issue. When set, the Claude Code slash command (e.g. /develop) will look for a comment with this prefix to use as the execution plan.

providers.github-projects

FieldTypeRequiredDescription
ownerstringyesGitHub organization or user login
projectNumbernumberyesProject number from the GitHub URL

Environment variable overrides

VariableOverrides
WAIT_SECONDSdaemon.waitSeconds
MAX_SESSION_SECONDSdaemon.maxSessionSeconds
JIRA_EMAILJira account email
JIRA_API_TOKENJira API token
GITHUB_TOKENGitHub personal access token
OPENCODE_SERVER_PASSWORDOpenCode basic auth password