How it works

From repository to reviewed fix.

One pipeline, eight stages. Here's what happens to your docs on every run, with real numbers from our run on Project B (an open-source AI SDK with a large docs site), the largest of the three projects we tested.

01

Source

1 repository

Connect a repository through the GitHub App, or point the CLI at a local checkout or a public Git URL. Clones are shallow, go into a temporary directory, and are deleted when the run ends.

02

Detect

mintlify · 261 pages

Identify the docs framework from its config (mkdocs.yml, docs.json or mint.json, docusaurus.config.*, ReadMe exports) and collect every Markdown and MDX page in the docs tree.

03

Extract

1327 code blocks

Pull out every fenced code block with its language, line number, the page it belongs to, and any output block shown right after it. Tabbed code groups (npm / yarn / pnpm, Python / JS) are recognized as alternatives.

04

Plan

927 to test · 400 skipped with reasons

Decide per block: execute, syntax-check, or skip with a stated reason. Infer install steps the page documents, keep blocks in page order so later snippets see earlier variables, and pick one variant from each tab group.

05

Run

406 passed · 520 failed · 290s total

Execute in a fresh container per page: unprivileged user, read-only root filesystem, all Linux capabilities dropped, no privilege escalation, memory, CPU, process and time limits. gVisor is supported for an extra kernel boundary.

06

Triage

7 likely docs bugs out of 520 failures

Classify each result into one of 24 categories by matching the actual error, not the exit code alone. Context-dependent fragments, missing credentials and network flakiness are kept out of the docs-bug count by design.

07

Fix & verify

verified before it's proposed

For each likely docs bug, draft the smallest change that makes the example work, using your chosen model provider. Re-run the fixed page in the sandbox and keep the fix only if it passes.

08

Report

you review and merge

Publish a check run with line annotations, a Markdown and JSON report, the docs badge, and one draft pull request per affected page. Nothing merges without a maintainer's approval.

Metrics: DocsAlive v0.2.1 on Project B, October 19, 2026. Stage 07 drafts fixes only when a model provider is configured. The run above was triage-only.

When it runs

Triggered by the moments docs break.

On pull requests

Changes to docs or code get a check run before merge, with annotations on the exact lines that fail.

On releases

Tag a release and every example is re-tested against the version you just shipped.

Nightly

Your docs install third-party packages too. Nightly runs catch drift when they change, not when a customer does.

Under the hood

What a single run looks like

The same engine powers the CLI, the GitHub App and the free Health Check. This is the real summary line from our Project C run. It flagged zero docs bugs, which is a useful result too: none of the 45 failing blocks were escalated, because each was classified as a fragment, a credential-gated example or TypeScript-only syntax.

CLI reference →

$ docsalive scan ./project-c --execute \ --setup "npm install <package>" DocsAlive v0.2.1 ./project-c framework=docusaurus pages=24 blocks=211 tested=121 pass=76 fail=45 warn=0 skipped=90 likely-docs-bugs=0 categories: ok=76, alt-variant=29, not-executable=26, unsupported-syntax=25, depends-on-context=22, runtime-error=22, needs-credentials=8, output-block=2, missing-tool=1

Run the pipeline on your docs.

Free for public repositories.