Browse the documentation
How BMAD+ works
What BMAD+ puts in your project, who executes what, and how a request such as "Atlas, ..." becomes files: host-managed execution, the AGENTS.md spine, packs, agents, skills, workflows.
On this page
This page explains the machinery in one pass, for anyone who wants to know what happens after npx bmad-plus install before trusting it with a project. BMAD+ is not a program that runs your agents. It is a set of files (instructions, roles, workflows) plus a small command-line tool that keeps records. Your AI coding tool, called the host in these pages, reads the files and does the work with its own model and permissions.
Host-managed execution
The registry states it as a contract: execution: host-managed, lifecycle_events: not-integrated. In practice this means four things. The host supplies the model, so BMAD+ holds no API key and calls no model. The host supplies the permissions, so a file edit or a shell command is allowed or refused by your tool, not by BMAD+. The host supplies any parallel sub-agents. And nothing runs in the background: there is no daemon, no scheduler and no telemetry.
Note One optional exception
Nexus can launch a local command or a Codex CLI process, but only for a task in a plan you wrote, only with an explicit nexus launch, and under a foreground supervisor that stays alive in your terminal. Nothing is scheduled. See the Nexus page.
The vocabulary
| Term | Meaning | Where it lives |
|---|---|---|
| host | The AI coding tool that reads the instructions and does the work: Claude Code, Gemini CLI, Cursor, Codex CLI and so on. | Outside BMAD+ |
| spine | The single instruction file every tool reads. It lists the agents, the skills, the memory rules and the registry facts. | AGENTS.md at the project root (generated) |
| adapter | A short file, in the format one host expects, that points to the spine and adds tool-specific notes. | CLAUDE.md, GEMINI.md, .cursor/rules/bmad-plus.mdc, .codex/AGENTS.md, .opencode/AGENTS.md, CONVENTIONS.md |
| pack | A group of agents, skills and workflows you install together. There are 10; Core is always installed. | Declared in registry.yaml; installed under .agents/skills/ |
| agent | A named persona you address by name ("Forge, ..."). 48 in total across the packs, 15 of them installer entry points. | .agents/skills/<agent>/SKILL.md or inside a pack directory |
| role | A mode inside an agent. Atlas is an Analyst or a Product Manager; the agent switches by request or by context. | Described in the agent file; rules in .agents/data/role-triggers.yaml |
| skill | A procedure the host loads when needed: a SKILL.md with its reference files. Autopilot, intake, swarm and uat are Core skills. | .agents/skills/<skill>/SKILL.md |
| workflow | A step-by-step Markdown procedure inside a pack. Dev Studio has 38; Shield has 11. | In the pack directory |
| registry | The one file that declares packs, agents, skills, adapters, pipelines and intakes. Everything generated derives from it. | registry.yaml in the BMAD+ source repository |
| checkpoint | A point where an autopilot run stops, reports or continues, as set in the configuration. | checkpoints in _bmad/config.yaml |
What the installer writes
Installation copies files into your project and records what it copied. It does not touch your source code, and it does not start anything. The only write outside the project is the global brain of the Memory pack, in your home folder (row ~/.bmad-plus/brain/). The table lists the locations; the later rows appear only when you use the matching feature.
| Path | What it holds | Written by |
|---|---|---|
AGENTS.md and the adapter files | The spine and the per-tool adapters. | install |
.agents/skills/ | Agents, skills and pack directories (pack-<name>). | install, update |
.agents/data/role-triggers.yaml | The auto-activation rules. | install, update |
_bmad/config.yaml | Your settings: execution mode, checkpoints, uat, swarm. | install (merged on re-install), you |
_bmad/module.yaml, _bmad/module-help.csv | Module description and help index. | install, update |
_bmad/.bmad-plus-install.json | The manifest: version, packs, tools, a SHA-256 for each installed file. | install, update |
_bmad-output/, docs/ | Where deliverables go (discovery, build, then design, review, uat, dev-studio when used). | install creates the first folders; agents write the rest |
.agents/memory/ | Decisions, lessons, patterns, context and session handoffs (Memory pack only). | install, agents, you |
~/.bmad-plus/brain/ | The global brain, outside the project: identity.yaml, global decisions, lessons and patterns, and one projects/<hash>.yaml entry per project. Memory pack only: created when no brain is found, completed (never overwritten) when it is the linked brain, left alone when the project links another brain (a _brain/ folder or ~/.claude/memory). .agents/memory/.brain-link in the project records which brain is linked. | install (Memory pack), agents, you |
.bmad-plus/swarm/, .bmad-plus/nexus/ | Run state of swarms and Nexus plans. | the CLI, when you run those commands |
.bmad/ | Update cache and receipts, memory journal. | the CLI |
npx bmad-plus install --yes --lang en --packs core,design,memory --tools claude-code
● Selected packs: ⚙️ Core, 🧠 Memory, 🎨 Design
● Detected IDEs: Claude Code
● 🧠 Global brain created: /home/dev/.bmad-plus/brain
◇ ✅ 6 agents, 9 skills, 5 files copied
◇ ✅ 1 IDE(s) configured
└ BMAD+ is ready! Talk to Atlas to get started 🚀
npx bmad-plus doctor
│ 98/98 checks passed
│ 0 error(s), 0 warning(s)
│ Installed: v0.23.0 | Executing CLI: v0.23.0
│ Ownership inventory: complete
│ Integrations use host-managed execution; host capabilities were not probed.
Excerpt: the installer guide box and the empty lines were left out, and the home folder is shortened. The counts depend on the packs you choose. The brain line appears only when the Memory pack finds no existing brain.npx bmad-plus install --yes --lang en --packs core,design,memory --tools claude-code
npx bmad-plus doctorWhat runs where
| Where | What it does | What it never does |
|---|---|---|
| Your AI tool (the host) | Reads the spine and the skills, talks to its model, edits files, runs commands it is allowed to run, launches sub-agents if it can. | Nothing BMAD+ does can raise its permissions. |
The bmad-plus CLI | Deterministic bookkeeping on local files: install, update, doctor, intake, swarm, nexus, review, uat, mem. It needs Node.js 20 or newer. | Call a model, run a daemon, send telemetry, commit to Git. |
| The optional process backend | With nexus launch, runs one command or one codex exec call from a plan you wrote, in the foreground, then verifies its result with independent checks. | Run unattended, or accept its own result. |
| Pack tools (SEO, OSINT, Animated) | Python and other scripts that an agent runs on your say-so: crawl a site you named, query a provider whose key you set. | Start without a key or a target you gave. |
From a sentence to files
You write to your host
You address an agent by name in the chat of your AI tool, in your language.
In your project terminalAtlas, help me define a small invoicing app for freelancers.The host loads the instructions
The host reads its adapter file, which points to
AGENTS.md. The spine names Atlas and the folder of its SKILL.md. Reading that file is what turns a general assistant into the persona.The settings are read, then Atlas waits
The agent reads
_bmad/config.yaml(your language, the execution mode, the checkpoint behaviour), greets you and shows its menu of capabilities (for exampleCBfor a product brief,MRfor market research). Atlas waits for your choice: a number, a code or a phrase that matches one.A role is chosen
Atlas has two roles, Analyst (research, discovery) and Product Manager (planning, product briefs, PRD). A keyword such as "market" or "PRD", or a situation such as a new project, switches the role, and the agent says so. The execution mode and the checkpoints then decide whether it stops and asks or goes on.
A deliverable is written
Once you have chosen, for example
CBto create a product brief, the host writes the result to the project with its own permissions, normally in the output folder (_bmad-output/by default). You review it like any other file.The CLI keeps the books when needed
For intake, swarms, reviews or acceptance, the agent calls
bmad-plusto validate, count or seal evidence. The CLI answers with files and exit codes, never with opinions.
How roles switch
The rules live in .agents/data/role-triggers.yaml. Each agent can switch role on three levels, and it announces the change so that you can refuse it.
| Level | Trigger | Example |
|---|---|---|
| Pattern | A keyword in your request. | "review" brings in the QA role of Sentinel. |
| Context | A situation detected while working. | A change touching more than 5 files brings in the Architect role of Forge. |
| Reasoning | A conclusion reached during execution. | An implementation that exposes an architecture flaw brings in the Architect role. |
The announcement reads like "I’m switching to QA mode - financial calculations detected. Say ’skip’ to stay in current mode." Setting auto_role_activation: false in _bmad/config.yaml turns the automatic switching off; you can still ask for a role by name.
Settings and execution modes
The installer writes _bmad/config.yaml once and keeps your edits on later installs. execution_mode is manual by default: you call each agent yourself. autopilot lets Nexus run the whole pipeline; hybrid is autopilot with frequent checkpoints. Each checkpoint (discovery, architecture, story, delivery) is require_approval, notify_only or auto.
execution_mode: 'manual'
auto_role_activation: true
parallel_execution: true
checkpoints:
discovery: 'require_approval'
architecture: 'require_approval'
story: 'require_approval'
delivery: 'require_approval'
uat:
mode: 'advisory'
swarm:
budget: 26
wave: 10
media_credits: 'ask'| Value | Behaviour |
|---|---|
require_approval | Stop, show something reviewable, wait. A prior approval that already covers the concrete next action is not asked for again. |
notify_only | Report in the session and continue. |
auto | Continue and log it. |
Generated files and your edits
The spine and the adapters are generated from registry.yaml in the BMAD+ source repository, so counts and rosters cannot drift from the declarations. In your project you can still add your own rules to an adapter. The installer records a SHA-256 hash for every file it writes; an adapter or a skill whose hash no longer matches is treated as yours and is preserved by updates and by uninstall.
What BMAD+ deliberately does not do
- No model runtime: it calls no LLM API, holds no API key for one and runs no agent loop of its own.
- No background process: no daemon, no scheduler, no telemetry exporter, no silent self-update.
- No review engine that guesses: findings the code cannot anchor are reported as such, never repositioned by a model.
- No automatic fix from a review: a review grants no write permission, and human acceptance stays the release gate.
- No IDE extension and no posting to GitHub, GitLab or other forges.
See also
- Your first hour with BMAD+ Your first hour with BMAD+
- Intake: ask first Intake: ask first, then act
- Swarms of sub-agents Swarms of sub-agents
- Nexus, autopilot and parallel work Nexus: autopilot, parallel work and durable runs
- The registry and skills The registry and skills
- Reference: config.yaml Configuration file
- Reference: supported tools and adapters Adapters