Walkthrough

This walkthrough shows a typical bosun session — from starting up to shutting down, with multi-agent coordination, background automation, and context management along the way.

Starting up

just start

Tmux launches with the bosun session. The daemon starts in the background. You're talking to bosun, the orchestrator agent:

[bosun] Ready. I'm Bosun, your orchestrator agent.

Exploring a codebase

You want to understand a new repo:

You: Clone github.com/myorg/myapi and explore it

Bosun clones the repo and spawns scout for reconnaissance:

spawn_agent({
  agent: "scout",
  task: "Explore workspace/code/github.com/myorg/myapi — report via mesh_send to bosun"
})

A new tmux window appears: scout-1. It scans the repo and reports back via mesh:

[mesh] scout-1: "Go API. 45 files. Entry: cmd/server/main.go.
       Middleware auth, PostgreSQL, REST+gRPC. Tests in _test.go files."

You can switch to the scout window (Alt+2) to watch it work, or stay in bosun's window and wait for the mesh message.

Planning work

You ask for something non-trivial:

You: Add rate limiting to the API

Bosun recognizes this touches multiple files and creates a plan:

Bosun: This touches multiple files. Let me create a plan first.

A plan appears at workspace/users/{you}/plans/2026-02/20-21-22-rate-limiting.md. You review it — either in your editor or in a split pane — and approve:

You: Looks good, proceed.

Multi-agent delegation

Bosun delegates to the right agents:

  • lite for straightforward implementation (fast, cheap model)
  • verify to run tests (medium model, focused on validation)
  • review for code review (medium model, read-only)
spawn_agent({ agent: "lite", task: "Implement rate limiter middleware..." })
spawn_agent({ agent: "verify", task: "Run tests in workspace/code/..." })

Both agents work simultaneously in their own tmux windows. You can watch either one.

Mesh coordination

When lite needs to edit files that verify is also reading, mesh handles it:

// lite reserves the file before editing
mesh_reserve({ paths: ["middleware/ratelimit.go"], reason: "Implementing rate limiter" })

// When done, releases it
mesh_release({})

Results arrive as mesh messages:

[mesh] lite-1: "Rate limiter implemented. Token bucket. Files:
       middleware/ratelimit.go, middleware/ratelimit_test.go"

[mesh] verify-1: "42 tests pass, 0 fail. New tests all passing."

Bosun summarizes and commits.

Saving context

End of session — save a handoff:

You: /handoff

Bosun creates a handoff file with:

  • What you were working on
  • Key decisions made
  • Files modified
  • Suggested next steps

The daemon detects the handoff and fills it with session analysis automatically.

Next session

just start
You: /pickup

Select the handoff. Context restored — you're back where you left off.

Background automation

While you work, the daemon runs scheduled workflows:

  • catchup-sessions (hourly): Summarizes completed Pi sessions into readable markdown
  • fill-handoff (hourly): Fills pending handoff documents with session analysis
  • chronicle-analyzer (hourly): Groups sessions into development journeys
  • chronicle-scribe (hourly): Generates builder's log narratives
  • backup-workspace (daily): Backs up your workspace

Check daemon status:

daemon({ action: "status" })
daemon({ action: "logs", lines: 20 })

Task management with Q

For longer-running projects, spawn the Q agent:

spawn_agent({ agent: "q", session: true, task: "Let's plan next week" })

Q manages tasks, projects, and roadmaps:

Q: Here's your current state:
   - 3 active tasks (2 P0, 1 P1)
   - 1 project at 60% completion

   What would you like to focus on?

Shutting down

just stop

All tmux windows closed. Daemon stopped. Your work is saved — handoffs, session summaries, and chronicles are all generated automatically.