Skip to content

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.

bnerd mission validate

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:

bnerd pa --ai-model opus

Or pin in ~/.bnerd.yaml:

ai-model: opus

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.md and current.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.