Boatman Ecosystem documentation is live!
BoatmanMode CLI
Configuration

Configuration

BoatmanMode is configured through a YAML file, environment variables, and CLI flags.

Configuration File

Create ~/.boatman.yaml (global) or .boatman.yaml in your project root (project-specific):

# Linear API key (or set LINEAR_API_KEY env var)
linear_key: lin_api_xxxxx
 
# Claude CLI tools
enable_tools: true
 
# Workflow settings
max_iterations: 5
base_branch: main
auto_pr: true
review_skill: peer-review
extra_review_skills:
  - lydia-code-review
keep_draft_pr: false
 
# Review pass criteria
review:
  max_critical_issues: 1
  max_major_issues: 3
  min_verification_confidence: 50
  strict_parsing: false
 
# Claude CLI settings
claude:
  command: claude
  use_tmux: false
  large_prompt_threshold: 100000
  timeout: 0
  enable_prompt_caching: true
 
  # Multi-model strategy per agent type
  models:
    planner: claude-sonnet-4-5
    executor: claude-sonnet-4-5
    reviewer: claude-sonnet-4-5
    refactor: claude-sonnet-4-5
    preflight: claude-haiku-4
    test_runner: claude-haiku-4
 
# Runtime provider routing
runtime:
  default_provider: claude-cli
  role_providers:
    reviewer: claude-cli
    routine: claude-cli
  profile_providers:
    triage-scorer: openai-responses
    routine.datadog-gql-slow-queries: claude-cli
 
# Coordinator settings
coordinator:
  message_buffer_size: 1000
  subscriber_buffer_size: 100
 
# Retry settings
retry:
  max_attempts: 3
  initial_delay: 500ms
  max_delay: 30s
 
# Token budgets for handoffs
token_budget:
  context: 8000
  plan: 2000
  review: 4000
 
# Feature toggles
enable_preflight: true
enable_tests: true
enable_diff_verify: true
enable_memory: true
checkpoint_dir: ~/.boatman/checkpoints
memory_dir: ~/.boatman/memory

Environment Variables

VariableDescriptionRequired
LINEAR_API_KEYLinear API key for ticket fetchingYes (for Linear mode)
CLAUDE_CODE_USE_VERTEXSet to 1 for Vertex AIIf using Vertex
CLOUD_ML_REGIONVertex AI regionIf using Vertex
ANTHROPIC_VERTEX_PROJECT_IDGCP project IDIf using Vertex
ANTHROPIC_API_KEYAnthropic API keyIf using direct API
BOATMAN_DEBUGSet to 1 for debug outputNo
BOATMAN_PROVIDERDefault runtime provider overrideNo
BOATMAN_EXTRA_REVIEW_SKILLSComma-separated additional review skills, such as lydia-code-reviewNo
BOATMAN_RUNTIME_EVENTSSet to 1 to emit normalized runtime events alongside legacy eventsNo
BOATMAN_RUNTIME_STORESet to 0 to disable default project-local recording, or 1 to force recording in older pathsNo
BOATMAN_RUNTIME_STORE_DIRCustom runtime run store directoryNo
BOATMAN_CHECKPOINT_DIRCustom checkpoint directoryNo
BOATMAN_MEMORY_DIRCustom memory directoryNo
DD_API_KEYDatadog API key for Datadog MCP routinesFor Datadog routines
DD_APP_KEYDatadog app key for Datadog MCP routinesFor Datadog routines
DD_SITEDatadog site, defaults to datadoghq.comNo
OPENAI_API_KEYOpenAI API key for the OpenAI Responses providerIf using OpenAI
OPENAI_MODELDefault model for the OpenAI Responses provider when not set by the requestIf using OpenAI without per-run model
LINEAR_API_URLOverride Linear API URL (for testing)No

Model Configuration

Each agent in the workflow can use a different Claude model for cost optimization:

Available Models

ModelIDBest For
Claude Opus 4.6claude-opus-4-6Highest quality: complex planning, nuanced code generation
Claude Sonnet 4.5claude-sonnet-4-5Good balance of quality and cost
Claude Haiku 4claude-haiku-4Fast and cheap: validation and parsing tasks

Configuration Profiles

Maximum quality:

claude:
  models:
    planner: claude-opus-4-6
    executor: claude-opus-4-6
    reviewer: claude-opus-4-6
    refactor: claude-opus-4-6
    preflight: claude-haiku-4
    test_runner: claude-haiku-4

Balanced (recommended):

claude:
  models:
    planner: claude-sonnet-4-5
    executor: claude-sonnet-4-5
    reviewer: claude-sonnet-4-5
    refactor: claude-sonnet-4-5
    preflight: claude-haiku-4
    test_runner: claude-haiku-4

Cost-optimized:

claude:
  models:
    planner: claude-sonnet-4-5
    executor: claude-sonnet-4-5
    reviewer: claude-haiku-4
    refactor: claude-haiku-4
    preflight: claude-haiku-4
    test_runner: claude-haiku-4

If a model field is omitted, the Claude CLI's default model is used.

For one-off work runs, you can override the common phases directly:

boatman work --prompt "Fix slow resolver" \
  --plan-model claude-opus-4-6 \
  --implementation-model claude-sonnet-4-5 \
  --skill-model claude-sonnet-4-5

Routine definitions use the provider-neutral shape:

{
  "models": {
    "plan": "claude-opus-4-6",
    "implementation": "claude-sonnet-4-5",
    "skills": "claude-sonnet-4-5"
  }
}

Runtime Provider Routing

Boatman workflows build provider-neutral runtime requests, then route those requests to a provider adapter. The default adapter is claude-cli.

runtime:
  default_provider: claude-cli
  role_providers:
    planner: claude-cli
    reviewer: claude-cli
  profile_providers:
    triage-scorer: openai-responses
    triage-planner: claude-cli

Profile routes are the narrowest match and take precedence over role routes. Role routes take precedence over runtime.default_provider.

Inspect compiled-in providers:

boatman providers
boatman providers --json
boatman providers check

OpenAI Responses

The openai-responses adapter supports text output, structured output schemas, remote MCP descriptors, hosted tool descriptors, raw response preservation, and broker-backed local function calls.

export OPENAI_API_KEY=sk-...
export OPENAI_MODEL=<model-name>
boatman providers check

Use provider routing to opt individual roles or profiles into OpenAI while the rest of the workflow stays on Claude CLI.


Runtime Store And Memory

Recorded runtime runs are plain files:

.boatman/runs/<run-id>/
  metadata.json
  request.json
  events.ndjson
  artifacts.json

Project-scoped provider runs record per project by default:

boatman work --prompt "Update documentation"

Or write to a fixed location:

export BOATMAN_RUNTIME_STORE_DIR=/tmp/boatman-runs

Memory documents are Markdown files under .boatman/memory or BOATMAN_MEMORY_DIR. They include frontmatter for scope, provenance, source run, generated time, updated time, and optional expiration.

Provider calls load non-expired memory documents automatically unless BOATMAN_MEMORY=0 is set. Loaded documents are prepended to the provider instructions and recorded as memory.loaded events.


Review Configuration

Control how strict the peer review system is:

review:
  max_critical_issues: 1           # Max critical issues to still pass
  max_major_issues: 3              # Max major issues to still pass
  min_verification_confidence: 50  # Min confidence % for diff verification
  strict_parsing: false            # Strict keyword parsing for reviews

Review Profiles

ProfileCriticalMajorConfidenceStrict Parsing
Strict0170%true
Balanced (default)1350%false
Lenient2540%false

Coordinator Configuration

For parallel agent execution:

coordinator:
  message_buffer_size: 1000      # Main message channel buffer
  subscriber_buffer_size: 100    # Per-agent channel buffer

Increase these if you see "coordinator message channel full" warnings.


Retry Configuration

Control retry behavior for API calls:

retry:
  max_attempts: 3       # Number of retry attempts
  initial_delay: 500ms  # Initial delay between retries
  max_delay: 30s        # Maximum delay (exponential backoff)

Token Budget Configuration

Control context sizes for agent handoffs:

token_budget:
  context: 8000   # General context budget
  plan: 2000      # Plan handoff budget
  review: 4000    # Review handoff budget
HandoffContentDefault Budget
Plan to ExecutorSummary, approach, files~4000 tokens
Executor to ReviewerRequirements, diff, test results~3000 tokens
Reviewer to RefactorIssues (deduplicated), guidance~2000 tokens