Overview
Every Blume command in one place, the flags each one accepts, and how to verify a site while the dev server keeps running.
blume <command> [options]
Commands
| Command | Description |
|---|---|
blume init [dir] |
Scaffold a project (interactive by default). |
blume dev |
Start the dev server with hot reload. |
blume build |
Build the static (or server) site. |
blume preview |
Preview the last build. |
blume add <item> |
Install a source component from the registry. |
blume sync |
Re-fetch remote content sources and regenerate. |
blume eject |
Promote the runtime into a standalone Astro app. |
blume check |
Type-check the site with astro check. |
blume doctor |
Diagnose config and content problems. |
blume validate |
Validate links across your content. |
blume audit |
Audit the built site for SEO and health issues. |
blume eval |
Test the docs: an agent answers your questions using only the documentation. |
blume translate |
Translate docs into the configured locales with a local agent CLI. |
blume version [id] |
Freeze the current docs as an archived version (no id lists configured versions). |
blume migrate [source] |
Move a Mintlify, Fumadocs, Docusaurus, Starlight, or Nextra site to Blume with Claude Code or Codex. |
blume upgrade |
Move to a new major: bump blume, then list the config changes left or hand them to Claude Code or Codex. |
Common flags
blume init— in a terminal, walks you through a few questions (where to create the project, site name, template, content sources); each flag below pre-answers its question.blume init --yes— skip the prompts and scaffold with defaults (also the behavior in CI or when stdin isn’t a terminal).blume init --content-dir <dir>— set the content folder (defaultdocs).blume init --template docs|api|sdk|changelog— scaffold from a starter (API reference, SDK, or changelog instead of the plain docs seed).blume init --package-manager npm|pnpm|yarn|bun— install with, and print next-steps for, a specific package manager (default: whichever ranblume init).blume init --no-install— write the files but skip the dependency install, for CI or custom dependency workflows. By defaultblume initruns the package manager’s install so the project is ready to run; if the install fails, the scaffold is kept, the retry command is printed, and the exit code is non-zero.blume init --eject— scaffold, then eject to a standalone Astro project (with--no-install, falls back to guiding you throughblume ejectonce dependencies are installed).blume dev --host --port <n> --openblume dev --content-dir <dir>— scan a different content folder without editingblume.config.ts.blume dev --debug— verbose Astro/Vite logging for troubleshooting.blume dev --preview/blume build --preview— include drafts and unpublished CMS content.blume build --no-strict— build despite diagnostic errors. By defaultblume buildfails (exit 1) on any error diagnostic, because pages that fail frontmatter validation are dropped from the output; with--no-strictthe build succeeds and reports how many pages are missing.blume dev --strictopts dev into the same fail-fast behavior.blume build --analyze— print the client JavaScript bundle sizes (largest first) after the build.blume build --budget-js <kb> --budget-css <kb>— fail the build when total client JavaScript/CSS exceeds the budget, turning a performance target into a CI gate.blume build --isolated— build into a throwaway.blume-verify/runtime (and its owndist/) instead of.blume/, so a runningblume devserver and your realdist/are left untouched. See Verifying while the dev server runs.blume preview --host --port <n>— bind the preview server.blume sync --force— re-fetch remote sources, dropping the cached snapshot first.blume add <item> --force— overwrite files that already exist.blume check --preview— include drafts and unpublished CMS content when checking.blume check --strict— fail on content diagnostics as well as type errors.blume check --isolated— type-check in a throwaway.blume-verify/runtime so a runningblume devserver is left untouched. See Verifying while the dev server runs.blume eject --yes— skip the confirmation prompt.
The commands with a page of their own list every flag there: blume doctor, blume validate, blume audit, blume eval, blume translate, and blume version. blume validate, blume doctor, blume audit, blume eval, and blume translate take --json to print machine-readable results on stdout for CI and editor integrations (see Validate for the diagnostics shape); build, check, and dev report to the terminal only. Every command rejects a flag it doesn’t take, suggesting the closest match and listing the flags it accepts, so a typo like --isolatd fails instead of being ignored.
Verifying while the dev server runs
blume dev serves a live Astro server rooted at the generated .blume/ runtime and regenerates it on every change. blume build and blume check regenerate the same .blume/, so running either while the dev server is live would corrupt it — both refuse with an error and exit non-zero:
A `blume dev` server is running at http://localhost:4321; building would
corrupt its .blume runtime. Reuse that server, stop it first, or re-run with
--isolated to build/verify against .blume-verify without touching it.
The --isolated flag is the escape hatch. It relocates the entire generated runtime (and, for build, its output dist/) to a sibling .blume-verify/ directory, so the verification never writes anything the dev server — or your real dist/ — depends on:
# In a second terminal, while `blume dev` is running:
blume check --isolated # fast: type-check the .astro/config changes
blume build --isolated # thorough: full production render into .blume-verify/dist
check --isolated is the quick path (Astro type + template diagnostics, no dist/); build --isolated is the heavier one that also catches runtime render errors. Isolated builds skip the deploy post-steps (search index, hosted-provider sync, llms.txt, sitemap/robots, redirects) — a verify only needs to confirm the site compiles and renders, not publish it. --analyze and the --budget-js/--budget-css gates still run, measured against the isolated output. Blume adds .blume-verify/ to your .gitignore automatically.
This is especially useful when a coding agent needs to verify changes while you keep the dev server open. To make plain blume build/blume check isolate without the flag — for example in an agent’s shell — set BLUME_RUNTIME_DIR to the runtime directory to use:
export BLUME_RUNTIME_DIR=.blume-verify
Type-checking
blume check runs astro check over your project. It regenerates the .blume runtime, syncs Astro’s content types, then reports any TypeScript errors — in your blume.config.ts, in custom .astro pages, and in the components they import. It exits non-zero when there are errors, so it works as a typecheck step in CI:
{
"scripts": {
"typecheck": "blume check"
}
}
Add a tsconfig.json extending Astro’s config to your project root so authored pages resolve blume/* imports and virtual modules like blume:data:
{
"extends": "astro/tsconfigs/strict",
"include": [".blume/.astro/types.d.ts", "**/*"]
}
Without a project tsconfig.json, only the generated runtime is checked.