Configuring :pa¶
:pa needs two integrations: the mission control repository (where strategic state lives) and OpenProject (where operational state lives). Both are configured the same way as the rest of bnerd — config file, env var, or CLI flag.
Mission repo¶
The mission repo is a markdown + YAML knowledge base on disk. See the mission repo README for the schema; bnerd just consumes it.
Three ways to point at it (highest precedence first)¶
| Method | Example |
|---|---|
--mission-repo flag | bnerd pa --mission-repo /path/to/cloud/mission |
BNERD_MISSION_REPO env var (or unprefixed MISSION_REPO) | MISSION_REPO=/path/to/mission bnerd pa |
~/.bnerd.yaml | mission-repo: /path/to/cloud/mission |
| Auto-detect from cwd | If none of the above are set, bnerd walks up from the current directory looking for .bnerd/context.md. Useful when you launch :pa from inside the mission repo itself. |
Confirming it works¶
Run the validator first — it confirms the path resolves and that every cross-reference (team.owns, tool.also_in_catalog, client.services, deployment.tool, …) points to a real file.
A clean repo prints OK — mission repo at <path> is consistent. and exits 0. Broken references print [file=field=slug] message lines and exit non-zero (suitable for cron + alerting).
OpenProject¶
:pa reuses the existing OpenProject integration. See the OpenProject integration guide for the full configuration surface (openproject-url, openproject-api-key, env vars, etc.). If :pa finds no OpenProject configuration, the AI surfaces a clear error the first time it tries to read tickets — fix it and continue.
Model recommendation¶
:pa is reasoning-heavy: multi-document synthesis (capacity × clients × roadmap × today's queue → priority stack). Opus is recommended.
Override per-launch:
Or pin in ~/.bnerd.yaml:
Haiku and Sonnet work, but you'll feel the rough edges in long-context days where every call has to re-read the mission repo summary.
Tool surface¶
:pa registers a deliberately narrow set of tools:
- mission_* (12 tools, read + write
today.mdandcurrent.md) - op_* (28 tools, full OpenProject CRUD, every write confirm-gated)
- fs_* read-only (
fs_read_file,fs_list_dir,fs_search_content,fs_glob) - web_* (
web_research,web_fetch) - think, ask_question, task_*
:pa does NOT register: shell, git, kube, helm, compute/dns/billing/network, file-write tools. If you need any of those, switch to :code or :chat.
Composition with --isolate¶
bnerd pa --isolate runs the AI in a filesystem-bounded sandbox. The mission repo path is mounted RW so the AI can write today.md / current.md; everything else outside your working directory is invisible. See the AI Sandbox guide for details.