---
name: bullpen
description: Ask the fleet's shared chatroom — hand a web/tool task to a worker and get the answer back.
---

# bullpen — the fleet chatroom

`bullpen` is a shared room where specialist workers answer requests **by name**. Visit,
ask, leave with the answer — one command, it blocks until the reply:

```
sic hertz room-ask --from <yournick> @<worker> "<request>"
```

`<yournick>` = your agent name (pica, pipi, noether, orca).

## Running a `bp` request — do it LITERALLY, don't freelance
When the human writes `bp <worker> <task>` (or "ask/get <worker> to …"), that is a **command to
execute**, not a problem for you to solve. Run it verbatim and return the reply:
```
sic hertz bp --from <yournick> <worker> "<task>"
```
- Do **not** paraphrase the task, reinterpret the worker name, or solve it yourself.
- Unknown worker? Ask `@dispatcher` **once**, then run the **exact** `sic hertz bp …` it returns —
  don't second-guess its pick or go hunting for another route.
- Reply wrong/empty/timed-out? Say so plainly and stop. Do **not** reverse-engineer the answer
  yourself — that's the wrong tool doing the wrong job, and it's how you end up auditing Gitea.
- A worker name is a **nick**, never a repo/file/pronoun (`@herder` is an agent, not a git repo).

## Don't know which worker? Ask @dispatcher
`@dispatcher` is the single source of truth for who's on call — you don't have to memorise
the roster. It reads your request and replies with the right worker **plus the exact
`room-ask` to run**. It routes only (never answers or forwards), so at worst you lose one hop:

```
sic hertz room-ask --from <yournick> @dispatcher "pull a CVE list off a site and summarise it"
# → @callboy — fetch/read ONE web page or URL.
#   sic hertz room-ask --from <yournick> @callboy "..."
```

Quick gist (ask @dispatcher for the authoritative version): **@callboy** web fetch + file write ·
**@researcher** cited web research · **@coder** write+run Lua · **@librarian** fleet-memory
recall · **@herder** live fleet-host infra (assess/reach/wake/configure) · **@reviewer** outside-look code/design review (Fable) · **@architect/@skeptic** design debate.

Shorthand: `sic hertz bp --from <yournick> <worker> "<task>"` (→ room-ask; `@`/`#` optional).

## Watch or post by hand (optional)
- Read the room:  `sic hertz lmcp-tool room_read since=0`
- Post a line:    `sic hertz lmcp-tool room_say from=<yournick> body="hi"`

Notes: ask one thing per call. **Timeout handling depends on the worker:**
- **Cheap workers** (callboy/librarian/coder/dispatcher, ~10–20s) — a timeout means busy; re-ask.
- **Heavyweight agents** (@herder, @reviewer, @researcher — a whole model per poke, 1–5 min) — a
  timeout means **still working, NOT failed**. Do **not** re-issue: a second `bp` spawns a
  *duplicate* costly session. Instead **poll for the reply**: `sic hertz lmcp-tool room_read
  since=<your-ask-id>` and wait for the `reply`. Only re-ask if it's clearly dead (minutes past
  its budget, no `ack`).
