Skip to content
Blume is now publicly available.
Blume
Esc
navigateopen⌘Jpreview
Latest update, v0.0.0

World-class docs foreverything you ship.

Fast, AI-ready, and zero-config. Drop Markdown into a folder and ship a production-grade docs site, no app boilerplate to write or maintain. Free and open source, forever.

npx blume init
Comet
Quickstart

Send your first transactional message in minutes. Comet's REST API works with any language — this guide uses the official TypeScript SDK.

Install the SDK

Add Comet to your project with your package manager of choice. The SDK ships with TypeScript types and runs on Node, Bun, and Deno.

npm install comet
Send a message

Create a client with your API key, then call messages.send. Every request returns an id you can use to track delivery.

import { Comet } from "comet";

const comet = new Comet(process.env.COMET_API_KEY);

const { id } = await comet.messages.send({
  to: "ada@example.com",
  template: "welcome",
});

console.log(`Queued ${id}`);
Use a template

Reference a template by slug and pass variables — Comet renders the subject and body server-side, so your app never ships copy.

Track delivery

Poll the message endpoint, or subscribe to webhooks for real-time delivery, open, click, and bounce events as they happen.

Handle webhooks

Verify the signature on each request, then react to the event — here we mark a message delivered in our own database.

app.post("/webhooks/comet", (req, res) => {
  const event = comet.webhooks.verify(req);

  if (event.type === "message.delivered") {
    markDelivered(event.data.id);
  }

  res.sendStatus(200);
});
Next steps
AuthenticationWebhooks referenceAPI reference

Batteries included.

Everything a production docs site needs — zero-config setup, AI, a component library, search, SEO, and i18n — without a plugin to install or a service to wire up.

Zero-config, even the template

A folder of Markdown is a complete project — there's no starter to clone and no template to keep in sync with upstream.

  • Navigation is inferred from your files
  • Search, theming, and OG images are on by default
  • Reach for configuration only when you need it
Comet

Get started

Introduction

Comet is a transactional email & SMS API. Send your first message in minutes, then add templates, webhooks, and analytics as you grow.

Quickstart

Send your first message

Authentication

API keys & scopes

Every request is idempotent — safely retry without sending twice.

What's included

Full-text searchOG images & SEODark mode36 locales (i18n)
QuickstartConfiguration

Interactive API references

Drop in an OpenAPI or AsyncAPI spec and Blume renders a full interactive reference — endpoints, schemas, and a live playground.

  • OpenAPI and AsyncAPI specs
  • Interactive “Try it” playground
  • Powered by Scalar, themed to match
Comet

API reference

Get a message

GET/messages/{id}

Returns a single message by its ID — rendered straight from your OpenAPI spec, with a live “Try it” playground.

Path Parameters

idstringrequired

The ID of the message to return.

Responses

200successful operation
{
  "id": "msg_01H8...",
  "to": "ada@example.com",
  "status": "delivered"
}

Components, included

30+ accessible components and a curated set of Markdown extensions, usable in any .mdx page with nothing to import.

  • Callouts, cards, steps, tabs, and file trees
  • Package-install tabs and code groups
  • Mermaid diagrams and KaTeX math
Comet

Get started

Components

30+ accessible, theme-aware components — used in situ, with nothing to import.

Quickstart

Send your first message

Examples

Copy-paste snippets

Installation

1

Install the SDK

2

Add your API key

3

Send a message

Architecture

docs
index.mdx
guide.mdx

Production-ready by default

Search, SEO, and internationalization that scale from a personal project to a site with thousands of pages.

  • Local search in dev and production
  • OG images, sitemaps, RSS, and JSON-LD
  • 36 locales with full right-to-left support
Comet

Get started

Introduction

Comet is a transactional email & SMS API. Send your first message in minutes, then add templates, webhooks, and analytics as you grow.

Quickstart

Send your first message

Authentication

API keys & scopes

Every request is idempotent — safely retry without sending twice.

What's included

Full-text searchOG images & SEODark mode36 locales (i18n)
QuickstartConfiguration
Search documentation…Esc

Popular

Quickstart
Messages
Templates
Webhooks
↑↓ navigate↵ open⌘] preview

Markdown with superpowers.

Directives become callouts, a package name becomes install tabs, and fenced code gets highlighted — no imports, no JSX to manage.

---
title: Installation
---

Install **Blume**, then create a config file:

```package-install
blume
```

```ts title="blume.config.ts"
export default {
  title: "Docs",
};
```

:::tip
Search, theming, and navigation
work out of the box.
:::

| Feature | Status |
| ------- | ------ |
| Search  | Ready  |
| Theming | Ready  |

Installation

Install Blume, then create a config file:

npmpnpmyarnbun
npm install blume
export default {
  title: "Docs",
};
FeatureStatus
SearchReady
ThemingReady

Content from anywhere.

Blume reads a folder of Markdown by default — but content can just as easily come from a remote repo, a CMS, or any custom backend. Mix several sources into a single site; they all render through the same components.

blume.config.ts
import { defineConfig } from "blume";

export default defineConfig({
  content: {
    sources: [
      { type: "filesystem", root: "docs" },
      { type: "mdx-remote", github: { owner: "comet", repo: "docs", path: "docs" } },
      { type: "sanity", projectId: "p1", dataset: "production", query: "*[_type == 'doc']" },
      { type: "notion", database: process.env.NOTION_DB },
    ],
  },
});

Need another backend? A custom source adapter ships any CMS without its SDK touching core. Learn about content sources.

Built for humans and models.

Your Markdown is the source of truth for readers and machines alike. Every page is raw Markdown away, summarized in llms.txt, answerable in-page, and connectable over MCP — with nothing to wire up.

How do I send my first message?
Install the SDK, set your API key, then call comet.messages.send() with a recipient and template.
Ask anything…

Ask AI, in the page

Streamed from the model you choose

An in-page assistant answers reader questions, backed by the AI SDK — through the Vercel AI Gateway, OpenRouter, Inkeep, or any OpenAI-compatible endpoint.

$ claude mcp add --transport http comet-docs https://docs.comet.dev/mcp

✓ Connected · 4 tools available

search_docs · get_page · list_pages · get_navigation

An MCP server for agents

Search and read, no scraping

Host a Model Context Protocol server so Claude Code, Cursor, and VS Code can search and read your docs directly — four read-only tools, discovery documents, and copy-and-go install.

llms.txt, built in

One flag emits a machine-readable index and your full corpus, so coding agents and chat assistants can read the whole site.

Markdown at every URL

Append .md to any page to fetch its raw source — ideal for LLMs and copy-as-Markdown workflows. Every page, dev and prod, no config.

Copy or open in chat

Every page can be copied as Markdown or opened in ChatGPT, Claude, v0, and more — pre-filled to answer questions about the page.

You're in good company.

Companies and open source libraries are moving their docs to Blume.

See how Quiver migrated from Mintlify to Blume

Visit Quiver

See how Neon ship their add-mcp docs on Blume

Visit Neon

Every component you need.

An accessible, themeable component set — cards, steps, tabs, code groups, diffs, and more — usable in any .mdx page with nothing to import.

Upgrade your docs with Blume

Install today and ship a production-grade docs site in minutes.

npx blume init