{"id":63301,"date":"2026-07-14T05:12:56","date_gmt":"2026-07-14T09:12:56","guid":{"rendered":"https:\/\/overcentral.com\/en\/?p=63301"},"modified":"2026-07-14T05:12:56","modified_gmt":"2026-07-14T09:12:56","slug":"blume-open-source-docs-framework","status":"publish","type":"post","link":"https:\/\/overcentral.com\/en\/blume-open-source-docs-framework\/","title":{"rendered":"OpenAI Developer Ships Blume, an Open-Source Docs Framework"},"content":{"rendered":"<p>Hayden Bleasel, a developer from OpenAI, has released Blume, an open-source documentation framework now available on npm as version 1.0.3. The framework is designed to operate with extreme simplicity: drop Markdown into a folder and ship a fully functional documentation site. Users write and maintain no app boilerplate after the initial setup, and the entire project carries the MIT license.<\/p>\n<h2>What is Blume?<\/h2>\n<p>Blume is a command-line tool paired with a component library for documentation. It reads a folder of Markdown or MDX files and produces a production-grade documentation site complete with navigation, search, theming, and Open Graph images. Configuration is entirely optional and can be added one file at a time. The codebase is a TypeScript monorepo, with the published package located at <code>packages\/blume<\/code>codecodecodecode. Blume&#8217;s own documentation, found in <code>apps\/docs<\/code>codecodecodecode, is built with Blume itself. The framework requires Node.js 22.12 or newer and works with Bun, pnpm, npm, or yarn.<\/p>\n<h2>How Blume Works<\/h2>\n<p>Under the surface, Blume generates and drives a hidden Astro project. The process begins when the CLI loads <code>blume.config.ts<\/code>codecodecodecode and scans your content into a graph. It then writes an Astro project into a <code>.blume\/<\/code>codecodecodecode directory. Astro renders every page through a single catch-all route that imports Blume&#8217;s shipped components, the generated data, and any user overrides. On each run, the <code>.blume\/<\/code>codecodecodecode directory regenerates, rewriting only changed files, which keeps hot reloading fast during editing. The core theme ships with no client framework JavaScript, so pages achieve strong Core Web Vitals scores by default. For users needing full control, the <code>blume eject<\/code>codecodecodecode command promotes the runtime into a standalone Astro app, though the ejected project still depends on the <code>blume<\/code>codecodecodecode package.<\/p>\n<h2>Getting Started with Blume<\/h2>\n<p>Setup takes a single command, making the onboarding process brief. After initialization, <code>blume dev<\/code>codecodecodecode starts a hot-reloading server, and <code>blume build<\/code>codecodecodecode writes static HTML and a local search index into <code>dist\/<\/code>codecodecodecode. The configuration file is written in TypeScript and validated by a schema.<\/p>\n<pre>[code block]<\/pre>\n<p>prepreprepre<\/p>\n<p>Because the config is typed, editors catch mistakes before a build runs. The CLI covers the full lifecycle with commands beyond these basics:<\/p>\n<ul>\n<li><code>blume init<\/code>codecodecodecode: Scaffold a project, interactive by default<\/li>\n<li><code>blume dev<\/code>codecodecodecode: Start the dev server with hot reload<\/li>\n<li><code>blume build<\/code>codecodecodecode: Build the static or server site<\/li>\n<li><code>blume add<\/code>codecodecodecode: Install a source component from the registry<\/li>\n<li><code>blume sync<\/code>codecodecodecode: Re-fetch remote content sources<\/li>\n<li><code>blume eject<\/code>codecodecodecode: Promote the runtime into a standalone Astro app<\/li>\n<li><code>blume validate<\/code>codecodecodecode: Check internal, anchor, asset, and external links<\/li>\n<li><code>blume doctor<\/code>codecodecodecode: Diagnose configuration and content problems<\/li>\n<\/ul>\n<h2>AI-Ready by Design<\/h2>\n<p>Blume is built to serve both human readers and <a href=\"https:\/\/overcentral.com\/en\/woodside-ai-agents-lng-startup\/\" title=\"Woodside Deploys 50 AI Agents to Optimize LNG Plant Startups\" data-iacss-internal=\"1\">AI agents<\/a>. Every page returns raw Markdown when you append <code>.md<\/code>codecodecodecode to its URL. A single flag emits <code>llms.txt<\/code>codecodecodecode and <code>llms-full.txt<\/code>codecodecodecode files for AI agents. Each page can be copied as Markdown or opened directly in ChatGPT, Claude, or v0. An optional in-page Ask <a href=\"https:\/\/overcentral.com\/en\/amazon-ai-assistant-german-sellers\/\" title=\"Amazon Launches AI Assistant for German Sellers\" data-iacss-internal=\"1\">AI assistant<\/a> answers reader questions directly, running on the AI SDK through the Vercel AI Gateway, OpenRouter, Inkeep, or any OpenAI-compatible endpoint. Blume can also host a Model Context Protocol (MCP) server, allowing <a href=\"https:\/\/overcentral.com\/en\/anthropic-claude-code-artifacts\/\" title=\"Anthropic Launches Live Claude Code Artifacts for Enterprise Teams\" data-iacss-internal=\"1\">Claude Code<\/a>, Cursor, and VS Code to read documentation directly. That server exposes four read-only tools: <code>search_docs<\/code>codecodecodecode, <code>get_page<\/code>codecodecodecode, <code>list_pages<\/code>codecodecodecode, and <code>get_navigation<\/code>codecodecodecode.<\/p>\n<h2>Use Cases With Examples<\/h2>\n<p>These capabilities translate to specific, practical jobs. For an API product, users can drop in an OpenAPI or AsyncAPI spec. Blume renders an interactive reference with schemas, authentication details, and a request playground via Scalar. For a library, Blume can point to <a href=\"https:\/\/github.com\/haydenbleasel\/blume\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">GitHub<\/a> Releases. Each release rolls up into a generated changelog timeline with an RSS feed. For a global audience, users can add translated files per locale, with support for 36 locales, locale-aware routing, and right-to-left layouts. For mixed content, local files can be combined with remote MDX, Notion, or Sanity sources, with all sources rendering through the same components.<\/p>\n<h2>How Blume Compares<\/h2>\n<p>For context, here is how Blume compares to three common documentation approaches. Features change rapidly, so verifying current details before adoption is recommended.<\/p>\n<table>\n<thead>\n<tr>\n<th>Dimension<\/th>\n<th>Blume<\/th>\n<th>Mintlify<\/th>\n<th>Docusaurus<\/th>\n<th>Astro Starlight<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Type<\/td>\n<td>Open-source CLI + framework<\/td>\n<td>Hosted commercial platform<\/td>\n<td>Open-source SSG<\/td>\n<td>Open-source Astro theme<\/td>\n<\/tr>\n<tr>\n<td>License<\/td>\n<td>MIT, free<\/td>\n<td>Proprietary; paid Pro tier<\/td>\n<td>MIT, free<\/td>\n<td>MIT, free<\/td>\n<\/tr>\n<tr>\n<td>Setup<\/td>\n<td>Zero-config Markdown folder<\/td>\n<td>Config-driven, managed<\/td>\n<td>Scaffold + React config<\/td>\n<td>Astro project + theme<\/td>\n<\/tr>\n<tr>\n<td>Engine<\/td>\n<td>Hidden Astro + Vite<\/td>\n<td>Proprietary hosted<\/td>\n<td>React<\/td>\n<td>Astro<\/td>\n<\/tr>\n<tr>\n<td>Core-theme client JS<\/td>\n<td>None (static HTML)<\/td>\n<td>\u2014<\/td>\n<td>React runtime<\/td>\n<td>Minimal (islands)<\/td>\n<\/tr>\n<tr>\n<td><code>llms.txt<\/code>codecodecodecode \/ <code>llms-full.txt<\/code>codecodecodecode<\/td>\n<td>Built-in flag<\/td>\n<td>Auto-generated<\/td>\n<td>Community plugin<\/td>\n<td>Community plugin<\/td>\n<\/tr>\n<tr>\n<td>Built-in MCP server<\/td>\n<td>Yes (four read-only tools)<\/td>\n<td>Yes (auto-hosted)<\/td>\n<td>Not built-in<\/td>\n<td>Not built-in<\/td>\n<\/tr>\n<tr>\n<td>Eject path<\/td>\n<td>Standalone Astro app<\/td>\n<td>Not applicable (hosted)<\/td>\n<td>\u2014<\/td>\n<td>Already Astro<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Strengths and Weaknesses<\/h2>\n<h4>Strengths<\/h4>\n<ul>\n<li>Zero-config start: a folder of Markdown becomes a full site.<\/li>\n<li>Static-first output ships no core client JS, aiding Core Web Vitals.<\/li>\n<li>Built-in AI surfaces: <code>llms.txt<\/code>codecodecodecode, per-page Markdown, MCP server, and Ask AI.<\/li>\n<li>Type-safe config, so editors flag errors before a build runs.<\/li>\n<li>Eject path to a standalone Astro app reduces long-term lock-in.<\/li>\n<\/ul>\n<h4>Weaknesses<\/h4>\n<ul>\n<li>Version 1.0.3 is new, so the ecosystem is still young.<\/li>\n<li>It needs Node.js 22.12 or newer, which some environments lack.<\/li>\n<li>Request-time features like Ask AI and MCP need a server adapter.<\/li>\n<li>The self-hosted model means you own analytics and assistant wiring.<\/li>\n<li>It has fewer third-party integrations than mature hosted platforms today.<\/li>\n<\/ul>\n<h2>Who Should Try Blume Now<\/h2>\n<p>Blume turns a Markdown folder into a production docs site with zero configuration. It drives a hidden Astro and Vite project and can eject to a standalone Astro app. Its AI features ship built in: <code>llms.txt<\/code>codecodecodecode, per-page Markdown, and an MCP server. The framework is MIT-licensed, requires Node.js 22.12+, and reached npm version 1.0.3 on its launch day. Early adopters include Quiver, which is moving from Mintlify, and the Neon project for its add-mcp documentation. For any developer or team that wants to ship documentation without maintaining a framework or spending on a hosted platform, Blume is available immediately on GitHub and npm. The single-command start and static-first architecture make it a low-risk project to test for a new library, API, or open-source tool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hayden Bleasel, a developer from OpenAI, has released Blume, an open-source documentation framework now available on npm as version 1.0.3. The framework is designed to operate with extreme simplicity: drop Markdown into a folder and ship a fully functional documentation site. Users write and maintain no app boilerplate after the initial setup, and the entire [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":83950,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/63301.png","fifu_image_alt":"OpenAI Developer Ships Blume, an Open-Source Docs Framework","footnotes":""},"categories":[349],"tags":[],"class_list":["post-63301","post","type-post","status-publish","format-standard","has-post-thumbnail","category-articles"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/63301.png","fifu_image_alt":"OpenAI Developer Ships Blume, an Open-Source Docs Framework","_links":{"self":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/63301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/comments?post=63301"}],"version-history":[{"count":0,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/63301\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media\/83950"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media?parent=63301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/categories?post=63301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/tags?post=63301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}