Introduction
Blume is an open-source, markdown-first documentation framework on Astro and Vite — fast, AI-ready, and zero-config down to the template.
Drop Markdown or MDX into a folder, run blume dev, and get a production-grade docs site — navigation, search, theming, Open Graph images, and a rich component library — with no app boilerplate to write or maintain.
Quickstart
Install Blume and ship your first page in minutes.
Configuration
Tune the title, theme, search, and deployment.
Why Blume exists
Docs should be fast, AI-ready and require zero configuration — down to not needing a starter template at all. Some docs tools hand you an entire codebase to maintain before you’ve written a word. Others build the template around your content, but lock you in to their managed service.
Blume takes the best of both worlds. The framework is the template, so the only thing you ever touch is your content. When you want to customize, you can start replacing the built-in components, modifying the single configuration file or even ejecting if you want the Astro site directly.
What makes Blume different
Fast by default
Blume builds on Astro and Vite and renders static HTML by default — fast, cacheable, and cheap to host. The core theme ships no client framework JS so pages score well on Core Web Vitals out of the box. Dev startup and hot reload feel Vite-native, and you opt into server features only when you need them.
AI-ready out of the box
Every Blume site speaks fluent machine. It emits llms.txt and llms-full.txt, serves any page’s raw Markdown by appending .md to its URL, and gives readers Copy as Markdown and Open in chat actions on every page. Add an optional in-page Ask AI assistant, or host an MCP server so coding agents like Claude Code and Cursor can search and read your docs directly — no scraping, no hosted service. Your Markdown is the source of truth for both humans and models.
Zero configuration — even the template
A folder of docs is a complete project. There’s no starter to clone, no Astro or Tailwind to set up, and no template to maintain. Navigation is inferred from your files, search works in dev and production without a hosted service, and theming is a handful of tokens. Everything has a sensible default; configuration is something you reach for, not something you start with.
Type-safe to the core
Your blume.config.ts and every meta.ts are real TypeScript — validated by a schema and authored with defineConfig and defineMeta. Your editor autocompletes every option and catches typos, invalid values, and missing fields as you type, long before a build. Configuration is code you can refactor, compute, and trust — not loosely-typed YAML.
Everything included
- Components — callouts, cards, steps, tabs, accordions, badges, file trees, and parameter tables, usable in MDX with no imports.
- Local search — Orama works in dev and production; Pagefind is one flag away for large sites. No hosted index.
- AI —
llms.txt, raw Markdown URLs, Copy as Markdown, Open in chat, an Ask AI assistant, and a hosted MCP server. - Navigation — inferred from files, refined with
meta.tsor config. - SEO — metadata, Open Graph images, RSS feeds, and JSON-LD, built in.
- Customization — component overrides, React islands, custom pages, theme tokens, and a source-component registry via
blume add. - Eject —
blume ejectproduces a standalone Astro project that still uses theblumepackage.
How it works
The Blume CLI discovers your content, builds a content graph, and generates a hidden Astro project under .blume/ that it drives for dev and build. The generated runtime is an implementation detail — you write Markdown, Blume handles the rest — until you choose to eject and own it.