sourcey is a free, open source blogging & personal sites project written in TypeScript and released under AGPL-3.0. It has 1,375 GitHub stars, 333 forks and 19 open issues, and was last pushed 5 days ago. On this registry it ranks #22 of 33 tracked projects in Blogging & Personal Sites, with 5 head-to-head comparisons available. It gained 4 stars over the last 30 tracked days.

What is sourcey?

Sourcey is a build-time documentation generator, written in TypeScript and licensed AGPL-3.0, that turns OpenAPI, MCP, Doxygen XML, godoc, rustdoc, and Markdown sources into a single static HTML site covering API reference, guides, changelog, roadmap, and llms.txt from one build.

What it is

Sourcey is an open-source documentation generator distributed as the npm package sourcey and run on Node 20 or newer. It reads structured sources rather than asking authors to retype them: OpenAPI 2.0 through 3.2 specifications, MCP server definitions, Doxygen XML, godoc output from the Go toolchain, rustdoc JSON, and Markdown guides. Everything renders at build time, so there is no dashboard, no runtime, and no API calls made to render the project's own documentation; the result is static HTML that deploys to GitHub Pages, Vercel, Netlify, or S3. Configuration lives in sourcey.config.ts through defineConfig(), and a Vite dev server hot-reloads on component, CSS, spec, and Markdown changes.

The problem it solves is fragmentation. A project usually keeps an OpenAPI spec, a C++ Doxygen XML drop, Go and Rust package docs, and hand-written guides in separate tools, then stitches them together with a Breathe/Exhale/Sphinx pipeline, hand-copied MkDocs sidebars, or a hosted portal that renders pages at request time on someone else's infrastructure. Sourcey replaces that stitching step with one build that emits reference, guides, changelog, roadmap, examples, search, and portable context exports as a site the team owns. It also writes llms.txt and llms-full.txt as alternate views of the same documentation graph.

Key capabilities

  • OpenAPI 2.0, 3.0, 3.1, and 3.2, including QUERY operations, hierarchical tags, deviceAuthorization OAuth, querystring parameters, and $self-aware refs for multi-document APIs, plus endpoint, parameter, and schema reference with code samples in ten languages.
  • MCP server reference for tools, resources, and prompts, with JSON-RPC, TypeScript, and Python code samples.
  • C++ docs from Doxygen XML with member search, source links, templates, inherited members, and relationship sections, with no Breathe/Exhale/Sphinx pipeline.
  • Go package docs extracted through the toolchain, exportable as standalone static Go docs or a committed godoc.json snapshot for JavaScript-only hosts.
  • Rust docs from nightly rustdoc JSON, doctests as a first-class view, doc.rust-lang.org anchor parity, and snapshot mode for stable-toolchain CI.
  • MkDocs import, reading docs_dir and nav from mkdocs.yml so an existing site renders without a rebuilt sidebar.
  • llms.txt and llms-full.txt generated next to the HTML as alternate views of the same graph.

Who uses it and how

  • API platform teams that keep an OpenAPI spec in the repo and want reference, guides, changelog, and roadmap published from one build, then deployed as static output to GitHub Pages, Vercel, Netlify, or S3.
  • C++ library maintainers whose CI already emits Doxygen XML and who want searchable API docs without adding Breathe, Exhale, and Sphinx.
  • Go and Rust maintainers avoiding a Doxygen detour; JavaScript-only docs hosts can consume committed godoc.json snapshots, while Rust projects can build on stable toolchains through snapshot mode.
  • Teams migrating an existing MkDocs site by pointing a Sourcey tab at mkdocs.yml and keeping their docs_dir and nav.
  • Projects publishing for LLM consumers alongside human readers, adding llms.txt and llms-full.txt next to the HTML.

Getting started

Scaffold a project with npx sourcey init; the CLI installs globally through npm install -g sourcey on Node 20 or newer, or on macOS and Linuxbrew with brew tap sourcey/tap and brew install sourcey. A live demo runs at sourcey.com/cheesestore, with documentation at sourcey.com/docs.

How it compares

Among the tools the README names, Sourcey imports from MkDocs rather than replacing it, since pointing a tab at mkdocs.yml reads docs_dir and nav. For C++ it consumes Doxygen XML directly instead of routing through Breathe, Exhale, and Sphinx, and it reads godoc and rustdoc natively rather than detouring through Doxygen. Where each of those tools covers one source, Sourcey builds reference, guides, changelog, roadmap, and search from the same run.

When to use it — and when not to

Self-hosting means operating a Node 20 or newer build step, and C++ docs still require producing Doxygen XML separately, while the rustdoc JSON path needs nightly Rust unless snapshot mode is used. Teams wanting in-browser editing, a hosted dashboard, or vendor analytics should not pick it, because everything renders at build time and no portal is included. The AGPL-3.0 licence is also a real constraint for anyone forking this into a closed product.

project readme (upstream, from github) — read inline

Sourcey

Docs straight from the source.

Sourcey turns OpenAPI, MCP, Doxygen XML, godoc, rustdoc, and Markdown into one static HTML site you own: reference, guides, changelog, roadmap, and llms.txt from the same build, deployable anywhere.

Everything renders at build time: no dashboard, no runtime, no API calls to render your own documentation.

npm build node license

npx sourcey init

Sourcey

Live demo · Documentation · GitHub

Features

  • OpenAPI 2.0, 3.0, 3.1, and 3.2: full spec coverage including QUERY operations, response summaries, hierarchical tags, deviceAuthorization OAuth, querystring parameters, and $self-aware refs for multi-document APIs
  • API reference from OpenAPI: endpoints, parameters, request/response schemas, and auto-generated code samples across 10 supported languages. The default set is cURL, JavaScript, and Python; configure TypeScript, Go, Ruby, Java, PHP, Rust, and C# when you want them
  • MCP server documentation: tools, resources, prompts rendered as browsable reference with JSON-RPC, TypeScript, and Python code samples. Color-coded method types, annotation badges, connection config cards
  • Rich guides: markdown pages with steps, cards, accordions, syntax-highlighted code blocks, and prose alongside your API reference
  • MkDocs source import: point a tab at mkdocs.yml; Sourcey reads docs_dir and nav so existing MkDocs markdown sites can render without hand-copying the sidebar structure
  • Product story pages: changelog, roadmap pages, examples, reference material, search, and portable context exports in one source-owned site
  • C++ and Doxygen: feed Doxygen XML output, get modern searchable API docs with exact member search, source links, templates, qualifiers, examples, inherited members, and relationship sections. No new parser, no four-tool Breathe/Exhale/Sphinx pipeline
  • Go and godoc: native package documentation extracted from Go source via the toolchain. Render Go modules as Sourcey tabs, generate standalone static Go docs sites, or commit godoc.json snapshots for JS-only docs hosts. No Doxygen detour
  • Rust and rustdoc: native API documentation from nightly rustdoc JSON, with doctests as a first-class extracted view. URL-encoded parametric impl anchors for deep-link parity with doc.rust-lang.org. Snapshot mode lets CI build on stable Rust toolchains. Aggregated doctests index across the workspace
  • Context exports: auto-generate llms.txt and llms-full.txt alongside your HTML as alternate views of the same documentation graph
  • TypeScript config: sourcey.config.ts with defineConfig() autocomplete; theme, navbar, CTA buttons, footer
  • Theme presets: default (sidebar + TOC), minimal (single column), api-first (Stripe-style three column); colors, fonts, layout dimensions, and custom CSS on top
  • Vite dev server: SSR hot reload on every component and CSS change; spec and markdown changes trigger instant refresh
  • Dark mode: semantic design tokens, light/dark logo variants, localStorage persistence
  • Client-side search: instant fuzzy search across all pages and API operations; Cmd+K
  • Static HTML output: no framework runtime, no vendor lock-in. Deploy to GitHub Pages, Vercel, Netlify, S3, anywhere
  • Open source: AGPL-3.0. Self-host, fork, extend. Your docs, your infrastructure

Install

Sourcey CLI

The full Sourcey binary handles OpenAPI, MCP, Doxygen, godoc, rustdoc, MkDocs, and Markdown sources.

Path Command Requires
npm npm install -g sourcey Node 20+
Homebrew brew tap sourcey/tap && brew install sourcey macOS / Linuxbrew
Docker docker run -v "$PWD":/docs sourcey/sourcey Docker
Nix nix run github:sourcey/sourcey Nix (flakes)

Then sourcey init to scaffold a new project, or sourcey build against an existing one. See docs/install.md for full Docker invocations (init / dev / build), the --host flag for containerized dev, Linuxbrew notes, and Nix profile install.

Standalone Go docs generator

Go Reference Go Report Card

For Go-only consumers without a JavaScript toolchain, sourcey-godoc ships as a separate native binary. It produces static Go docs sites or portable godoc.json snapshots.

Path Command
Go go install github.com/sourcey/sourcey/go/sourcey-godoc/cmd/sourcey-godoc@latest
Homebrew brew install sourcey/tap/sourcey-godoc
Scoop scoop bucket add sourcey https://github.com/sourcey/scoop-bucket && scoop install sourcey-godoc

Rust snapshot converter

crates.io docs.rs

The rustdoc() adapter consumes nightly rustdoc JSON through the sourcey companion crate and its sourcey-rustdoc converter, so CI can build Rust API docs from a committed snapshot on a stable toolchain. See docs/adapters/rustdoc.md.

Quick start

# Scaffold a project (detects OpenAPI specs and Doxyfiles)
npx sourcey init

# Dev server with hot reload
sourcey dev

# Build static HTML to dist/
sourcey build

# Quick build from a single OpenAPI spec
sourcey build api.yaml -o dist/

In CI, the sourcey/build-docs GitHub Action runs the build and deploys to GitHub Pages; see deploying.

Astro integration

Astro sites can mount Sourcey directly instead of running a separate docs CI job. The integration reads the same sourcey.config.ts, derives Sourcey's public siteUrl and baseUrl from Astro's site/base plus routeBase, serves docs in Astro dev, and writes docs into Astro's final build output.

// astro.config.ts
import { defineConfig } from "astro/config";
import sourcey from "sourcey/astro";

export default defineConfig({
  site: "https://sourcey.com",
  integrations: [
    sourcey({
      config: "./sourcey.config.ts",
      routeBase: "/docs",
    }),
  ],
});

You can also share an imported config object when you want one config module to feed both the CLI and Astro:

import { defineConfig } from "astro/config";
import sourcey from "sourcey/astro";
import docs from "./sourcey.config";

export default defineConfig({
  site: "https://sourcey.com",
  integrations: [sourcey({ config: docs, configDir: ".", routeBase: "/docs" })],
});

Configuration

Create sourcey.config.ts in your project root:

import { defineConfig, openapi } from "sourcey";

export default defineConfig({
  name: "My API",
  navigation: {
    tabs: [{ tab: "API Reference", source: openapi("./openapi.yaml") }],
  },
});

Each tab has one source, usually created with markdown(), mkdocs(), openapi(), mcp(), doxygen(), godoc(), or rustdoc(). Pages are referenced by slug (e.g. "quickstart" resolves to quickstart.md). See docs/configuration.md for theme, navbar, footer, logo, and full tab options.

Go documentation (godoc)

Render Go package docs as a tab inside your Sourcey site, branded and styled with the rest of your documentation. Native toolchain extraction (go list + go/parser + go/doc) feeds the same renderer as your OpenAPI, MCP, and Markdown tabs, so signatures, examples from *_test.go, and source links sit alongside your guides instead of bouncing readers to pkg.go.dev.

Live: scafld's Go API reference →

{ tab: "Go API", source: godoc(".") }

The shorthand expands to { module: ".", packages: ["./..."], mode: "auto", includeTests: true }. Live mode uses the host Go toolchain; snapshot mode reads a committed godoc.json and needs no Go on the build host. See docs/configuration.md for packages, mode, goEnv, sourceBasePath, and includeUnexported.

Markdown components

Guides support rich components in standard markdown:

<Steps>
  <Step title="Install">Run `npm install sourcey`</Step>
  <Step title="Configure">Create `sourcey.config.ts`</Step>
  <Step title="Build">Run `sourcey build`</Step>
</Steps>

<CardGroup cols={2}>
  <Card title="API Reference" icon="book" href="/api">Full endpoint docs</Card>
  <Card title="Guides" icon="map" href="/docs">Step-by-step tutorials</Card>
</CardGroup>

<AccordionGroup>
  <Accordion title="How does auth work?">We use API keys and OAuth2.</Accordion>
</AccordionGroup>

Theme

All visual configuration lives under theme. Colors, fonts, layout dimensions, and a preset that controls page structure:

theme: {
  preset: "api-first",
  colors: { primary: "#f59e0b", light: "#fbbf24", dark: "#d97706" },
  fonts: { sans: "'Lexend', sans-serif", mono: "'Fira Code', monospace" },
  layout: { sidebar: "16rem", content: "48rem" },
  css: ["./brand.css"],
}

Presets control layout structure: "default" (sidebar + TOC), "minimal" (single centered column), "api-first" (three-column with persistent code panels). Everything else applies on top.

CLI

sourcey dev                       Dev server (reads sourcey.config.ts)
sourcey build                     Build site (reads sourcey.config.ts)
sourcey build api.yaml            Quick build from a single spec
sourcey validate api.yaml         Validate a spec file
sourcey godoc --out godoc.json    Snapshot a Go module's docs to JSON
sourcey-godoc generate --out site Standalone Go CLI for static godoc sites

Run sourcey --help for flags.

Development

git clone https://github.com/sourcey/sourcey.git
cd sourcey && npm install
npm run build && npm test
cd go/sourcey-godoc && go test ./... && go vet ./...

# Run the in-repo docs site against your working copy
cd docs && npx tsx ../src/cli.ts dev

License

AGPL-3.0. Free to use, self-host, and modify. If you run Sourcey as a hosted service, you open-source your stack.

Commercial licensing available; contact sourcey.com.

Frequently asked questions

Is sourcey free to use?

sourcey is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does sourcey do?

Precision documentation from OpenAPI, MCP, Doxygen, and Markdown guides. Static HTML you own.

What is sourcey written in?

sourcey is primarily written in TypeScript. Its source is publicly available at https://github.com/sourcey/sourcey, and it has 1,375 GitHub stars.