Boatman Ecosystem documentation is live!
Boatman Desktop
BoatmanMode Integration

BoatmanMode Integration

Boatman Desktop integrates with the BoatmanMode CLI to provide automated ticket execution through the GUI.

Overview

FeatureFirefighter ModeBoatmanMode
PurposeInvestigate incidentsAutomate implementation
ApproachManual analysis with MCP toolsFull automated pipeline
OutputInvestigation reportPull request
Best for"What caused this?""Fix this bug"

Architecture

Boatman Desktop calls the boatman CLI binary as a subprocess rather than importing Go modules directly.

Why subprocess?

  • BoatmanMode's packages are in internal/ (Go import restriction)
  • Clean separation of concerns — UI vs automation engine
  • No version coupling — each can be updated independently
  • Works as standalone CLI or through the desktop GUI
┌─────────────────────────────────────────────────────┐
│                  Boatman Desktop                     │
│                                                     │
│  ┌────────────────┐    ┌────────────────┐          │
│  │  Firefighter   │    │  BoatmanMode   │          │
│  │     Mode       │    │  Integration   │          │
│  │                │    │                │          │
│  │ • Investigate  │    │ • Auto-Execute │          │
│  │ • Report       │    │ • Stream Output│          │
│  │ • Manual Fix   │    │ • Fetch Tickets│          │
│  └───────┬────────┘    └───────┬────────┘          │
│          │                     │                    │
│          │ MCP Tools           │ Subprocess         │
│          │                     │ exec.Command        │
│          │                     ▼                    │
│          │            ┌────────────────┐            │
│          │            │  boatman CLI   │            │
│          │            │ (boatmanmode)  │            │
│          │            └────────────────┘            │
└──────────┼─────────────────────┼───────────────────┘
           │                     │
           ▼                     ▼
   Bugsnag / Datadog       Linear / Git / Claude

Event Flow

CLI Process                Integration Layer              Frontend
━━━━━━━━━━━                ━━━━━━━━━━━━━━━━━              ━━━━━━━━
boatman CLI         →    boatmanmode/integration.go   →   useAgent.ts
emits JSON events        parses JSON, emits Wails        listens to events
to stdout                EventsEmit("boatmanmode:event")  updates Tasks tab

Event Types Handled

EventUI Behavior
agent_startedCreates task with "in_progress" status
agent_completedUpdates task status to "completed" or "failed"
progressDisplays in output stream
task_createdCreates sub-task in task list
task_updatedUpdates sub-task status

Usage

Simple Execution

result, err := ExecuteLinearTicketWithBoatmanMode(
    linearAPIKey,
    ticketID,
    projectPath,
)

Streaming Execution

err := StreamLinearTicketExecution(
    linearAPIKey,
    ticketID,
    projectPath,
)
 
// Frontend listens:
EventsOn("boatmanmode:output", (data) => {
    console.log(data.message);
})

Fetching Tickets

tickets, err := FetchLinearTicketsForBoatmanMode(
    linearAPIKey,
    projectPath,
)

User Flow

  1. Click "Boatman Mode" button in header (purple)
  2. Dialog opens asking for:
    • Linear ticket ID (e.g., TICKET-123)
    • Shows current project path
  3. Enter ticket ID and click "Start Execution"
  4. BoatmanMode subprocess:
    • Creates git worktree
    • Plans implementation
    • Executes code changes
    • Runs tests
    • Peer reviews
    • Refactors until passing
    • Creates PR
  5. Events stream to UI:
    • Tasks tab shows real-time agent progress
    • Output stream shows formatted messages
    • Session list shows purple "Boatman" badge

UI Components

BoatmanModeDialog

Dialog for starting execution:

  • Ticket ID input
  • Project path display
  • Configuration status warnings

BoatmanModeBadge

Purple badge in session list identifying BoatmanMode sessions.

Tasks Tab Display

IconStatus
Robot iconAgent in progress
CheckmarkAgent completed successfully
X markAgent failed
ClipboardTask created
HourglassProgress message

Binary Location

The integration looks for the boatman binary in:

  1. boatman in PATH (exec.LookPath)
  2. ~/workspace/personal/boatman-ecosystem/cli/boatman (monorepo)
  3. Hardcoded fallback path (legacy development location)

Configuring PATH

# Option 1: Add to PATH
export PATH="$PATH:~/workspace/personal/boatman-ecosystem/cli"
 
# Option 2: Symlink
ln -s ~/workspace/personal/boatman-ecosystem/cli/boatman /usr/local/bin/boatman
 
# Option 3: Install from monorepo
cd ~/workspace/personal/boatman-ecosystem
make install-cli

When to Use Which?

Use CaseTool
"What caused this production error?"Firefighter Mode
"Fix this straightforward bug"BoatmanMode
"Unclear what's broken"Firefighter Mode
"Implement feature XYZ"BoatmanMode
"Need postmortem report"Firefighter Mode
"Simple refactor task"BoatmanMode