Browse the documentation

Trust, ownership and licences

Who wrote what, which licences apply, which files BMAD+ owns in your project and how it proves it, what update and uninstall keep, how OSINT is governed, and where the notices live.

On this page
  1. Who wrote what
  2. Which files BMAD+ owns, and how it knows
  3. What is preserved, and when
  4. What uninstall removes and what it keeps
  5. What is governed or restricted on purpose
  6. Check it yourself

Trusting a tool that edits your project comes down to a few questions with checkable answers. Whose work is this, and under which licence? Which files does the tool consider its own, and how does it tell them from yours? What does it keep when you update or remove it? What is deliberately restricted? This page answers each, with the file or command that lets you check.

Who wrote what

BMAD+ is created by Laurent Rochetta. It is an independent community project derived from BMAD-METHOD (MIT) by BMad Code, LLC; it is not affiliated with, endorsed by or certified by BMad Code, LLC, and BMad, BMad Method and BMad Core are trademarks of BMad Code, LLC. The declared baseline is BMAD-METHOD v6.6.0. Inspiration and adapted material are credited where they are used, and the table separates what the project’s author wrote from what comes from elsewhere.

Provenance of each part
PartOriginTerms
BMAD+ code and Core agentsWritten for BMAD+ by Laurent Rochetta, on the method of BMAD-METHOD v6.6.0 (multi-role agents derived from the upstream roles).MIT, copyright 2026 Laurent Rochetta; BMAD-METHOD’s MIT notice is retained.
Dev StudioThe author’s rewrite of a BMAD-METHOD-derived set of roles: six personas and 38 workflows whose execution instructions are original BMAD+ adaptations, with the lineage acknowledged. Reviewing newer upstream ideas is separate from claiming that a whole upstream release is integrated.MIT.
SEO, Backup, AnimatedCreated by the author, within his company Oveanet; the SEO base was extended into the three-agent SEO Engine of BMAD+.MIT.
MakerWritten by the author.MIT.
Memory (Zecher)Written by the author; the memory architecture is inspired by his _brain/ portfolio method. The four behavioural guardrails adapt the community guidelines of forrestchang (now hosted at multica-ai/andrej-karpathy-skills), inspired by Andrej Karpathy’s guidance. That inspiration does not imply authorship or endorsement by Andrej Karpathy.The upstream declares MIT; no standalone LICENSE existed at the reviewed revision, and the notice says so without inventing a copyright line.
Shield27 compliance agents and 11 workflows adapted from Hemant Naik’s GRC skills.MIT, copyright 2026 Hemant Naik, reproduced in the third-party notices.
OSINTPipeline and Python helpers based on smixs/osint-skill. The Apify integration is inspired by Apify’s agent skills.MIT, copyright 2026 Serge Shima, for the OSINT skill. The Apify repository declares Apache-2.0 (an earlier README that called it MIT was corrected); the notices do not relicense the helper under Apache or imply an Apify subscription.
Design (Atelier)The three skills come from design-skill, the author’s own npm package (github.com/lrochetta/design-skill), pinned at version 0.2.1; BMAD+ adds the persona, the intake and the routing.MIT.
npm runtime dependenciesSeven packages: @clack/prompts, commander, design-skill, fs-extra, js-yaml, picocolors, semver.Each keeps its own licence; they are recorded in the release’s CycloneDX SBOM.

The full text of the licences and the review notes are in THIRD-PARTY-LICENSES.md, shipped in the npm package and in the repository at github.com/lrochetta/BMAD-PLUS , next to LICENSE (MIT, copyright 2026 Laurent Rochetta). The notices describe bundled or adapted source material; they do not claim that every shipped file matches an upstream revision byte for byte.

Which files BMAD+ owns, and how it knows

Every file the installer writes is recorded with its SHA-256 hash in the manifest _bmad/.bmad-plus-install.json (a fileInventory). A file is BMAD+’s own as long as its bytes still match the recorded hash; once you edit it, it is yours. Adapters are tracked separately by a hash of their content with line endings normalised. This ownership inventory drives three behaviours: doctor reports differences, update preserves edited files, and uninstall removes only what is still byte-identical.

The inventory as doctor reports it
npx bmad-plus doctor --json
{
  "schemaVersion": 1,
  "status": "ok",
  "versions": { "installed": "0.23.0", "cli": "0.23.0", "published": null },
  "inventory": { "status": "complete", "trackedFiles": 39 },
Excerpt, reformatted onto fewer lines. `published` is always null: doctor never queries npm.

Output captured from a real run. Source: Replayed on a test server on 2026-10-18 with the 0.23.0 source (tools/cli/bmad-plus-cli.js) in a throwaway Git project

What doctor says about a file
Check codeLevelMeaning
file.unchangedokThe file still matches the recorded hash.
file.modifiedwarningThe file differs from the recorded hash: your edit is kept and reported.
file.unownedwarningA file in a BMAD+ folder that the manifest does not list: yours.
file.missing, file.unreadableerrorA required file is gone or cannot be read.
adapter.adopted, adapter.modified, adapter.unownedvariesThe state of a tool adapter: BMAD+-owned, edited by you, or not BMAD+’s at all.
manifest.valid, manifest.invalidok / errorWhether the manifest can be read. Inventory status is complete, incomplete, legacy or invalid.

What is preserved, and when

Preservation rules
SituationWhat BMAD+ does
Installing again, same versionOnly adds missing files, packs and tools. _bmad/config.yaml is merged: existing keys win, missing defaults are added, explicit wizard answers replace.
Installing a different versionRefused. A downgrade is refused; an upgrade goes through update.
Existing tool instructions (CLAUDE.md, GEMINI.md, ...)A file you edited is preserved. A file you wrote yourself is preserved by an interactive install and by update; install --yes copies it to <file>.bak first, then replaces it. Legacy installer files are backed up as <file>.bak; --tools none leaves tool configuration untouched.
UpdateFiles changed since their recorded hash and unowned files are preserved and reported; files a version no longer ships are removed after a restorable backup; a receipt and backups are written under .bmad/updates/<id>/.
Corrupt manifestBacked up as _bmad/.bmad-plus-install.json.corrupt.bak.
Memory filesdecisions.md, lessons.md and patterns.md are never overwritten, sessions/ never deleted, your edits to identity.yaml kept; only autoconfig rewrites context.md (see its page).
An existing brainLinked, never copied or rewritten.
Links in the wayWrites and deletions refuse symlinks and junctions.

What uninstall removes and what it keeps

Uninstall removes only the files BMAD+ owns: those byte-identical to what it shipped, the adapters whose hash matches and that carry the install marker, the skills copied from an external package such as design-skill, and the manifest. It removes empty folders it owned and never deletes recursively. It keeps _bmad/config.yaml, the project memory, _bmad-output/, files you edited and files it does not know. It refuses linked paths, and without a terminal it needs --yes. On a bad manifest it exits 1. The 0.23.0 acceptance run included this check: a witness note planted in .agents/memory/ survived, and the copied design skills were gone.

The uninstall of the acceptance run (installer output in French)
New-Item -ItemType Directory -Path .\demo-app\.agents\memory -Force
Set-Content -LiteralPath .\demo-app\.agents\memory\context.md -Value 'BMAD+ 0.23.0 memory witness' -Encoding utf8
npx bmad-plus uninstall --yes --directory .\demo-app
T   BMAD+ Uninstaller
•  BMAD+ v0.23.0 (installé le 2026-10-18)
•  Packs sélectionnés: core, design
o  ✅ BMAD+ supprimé (106 éléments)
—  La mémoire, les réglages et les fichiers inconnus ou modifiés ont été conservés.
Get-Content -LiteralPath .\demo-app\.agents\memory\context.md
BMAD+ 0.23.0 memory witness
Test-Path .\demo-app\.agents\skills\design\SKILL.md
False

Output captured from a real run. Source: Human acceptance run of 0.23.0, 2026-10-18

What is governed or restricted on purpose

The OSINT pack: keep and govern

Researching a named person is personal-data processing, and profiling or inferring personality is regulated (GDPR Articles 4(4), 22 and 9, and equivalent laws such as UK GDPR, LGPD and CCPA/CPRA). "Publicly available" does not mean no rules apply. The project decided on 2026-07-02 to keep the pack and govern it rather than remove it. The Phase minus 1 gate applies to every direct path to personal data (full investigation, LinkedIn, Instagram and Facebook collection, personality profile, contact enrichment): before any of them, the agent records a lawful basis (Article 6, and an Article 9(2) condition for personality profiling), a specific purpose (open-ended "find everything" is rejected), the controller, a retention period and how access and erasure requests are honoured, using the template assets/lawful-basis-record.md. If you cannot state a basis and a purpose, the agent declines the named-person operation and offers non-personal alternatives: company, product or market research, or a public entity. A quick search on a public handle, the diagnostic command and tooling paths are exempt.

Every dossier opens with the notice "AI-generated OSINT output - may contain errors; not legal advice. The operator is the data controller and is responsible for the lawful basis (GDPR Art. 6/9), platform Terms of Service, and human verification before any decision." The agent never profiles a private individual without a recorded basis, grades every fact from A to D, and spends at most 0.50 dollars without asking. No single provider key is required: one from any provider (APIFY_API_TOKEN, Perplexity, Exa, Tavily, Jina and others) is enough, and the pack sends queries to a provider only once its key is set (see data handling). The legal notice is osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md in the repository.

Other deliberate boundaries

  • Shield: every report is marked AI-generated and "Not legal advice". A supported assurance claim means a named check passed, never a certification, and a review control mapping is a prompt to look.
  • Reviews and acceptance: a clean review means no open finding within a fully covered scope, not a proof that the code is correct; the acceptance gate states "human-observed: complete, current and triaged" and does not establish that the tester looked at the right place.
  • Swarms: simulated units are not people; rates are an upper bound; quotes are not testimonials; paid media generation is never covered by a budget.
  • No model runtime of its own (the one program it can start is a command or Codex run that a Nexus plan declares), no background process, no telemetry, no silent self-update, no automatic fix from a review, no IDE extension, no posting to forges. These are deliberate boundaries, not gaps waiting for a release.
  • Writes outside the project: the CLI writes inside the project folder; scan writes project records into the global brain at ~/.bmad-plus/brain/, the Memory pack writes inside the brain it linked, and update --latest runs npm exec in a temporary folder of the operating system. It never writes into a portfolio brain’s own layout uninvited.

Check it yourself

See exactly what BMAD+ put in a project

Use before committing the installed files, before an audit, or before removing BMAD+. The assistant only reads and runs the read-only doctor.

In your AI assistant
Run npx bmad-plus doctor --json and read _bmad/.bmad-plus-install.json. Tell me the installed version, the packs and tools, how many files BMAD+ tracks, which files differ from their recorded hash and which files in the BMAD+ folders it does not own. Then tell me what npx bmad-plus uninstall --yes would remove and what it would keep. Change nothing.

What you should get A short factual report: version, packs, tools, inventory.status and the number of tracked files, the list of file.modified and file.unowned warnings, and a prediction of the uninstall (removed: byte-identical managed files, matching adapters and the manifest; kept: _bmad/config.yaml, memory, _bmad-output/, modified and unknown files). Nothing is written.

See also