docstube

Most technical documentation is trash. Yours won't be.

docstube generates it from your codebase, fact-checks every claim against the source, writes it for the people actually reading it, and keeps it in sync as your code changes. Nothing to write. Nothing to maintain.

MIT licensed bring your own AI source stays local

Runs on the AI you already use

Claude
subscription or API
Codex
OpenAI CLI
Gemini
Google CLI
Any OpenAI-compatible API
custom base URL
Why this matters

Everyone needs the docs. Every way we make them is broken.

84%

of developers call technical documentation their number-one way to learn a new tool. source

How docs get made today

It goes stale

Code ships every day; hand-written docs don't move. Signatures drift until the page is quietly describing an API that no longer exists.

the docs getSession()
the code getSession(opts)
out of sync with the source

It assumes too much

Whoever wrote the code can't un-know it. The obvious step gets skipped, internal names leak in, and the context a newcomer actually needs never makes it onto the page.

Initialise the client with your workspace token.
? …what's a workspace token, and where do I get one?

It never gets written

Docs are the chore that loses to every deadline. The easy pages get done; configuration, edge cases, and the gnarly migration — the ones readers need most — stay empty.

Quickstart
Installation
Configurationempty
Migration guideempty

And AI doesn't fix it

Point a model at your repo and the pages read beautifully. Check them against the source and the problems pour out — fluent, confident, and wrong.

auth.mdx · AI draft reads perfectly
client.flush() — no such method
two code samples contradict each other
a confident claim with nothing behind it
How it works

Five steps. You drive the first one, it does the rest.

From a single command to a site you own — and back in sync on every commit. Here's the whole loop, start to finish.

  1. 1
    you · 5 minutes

    You set it up once, then step away.

    Run npx docstube wizard and a localhost UI opens. Pick a doc type, name your readers, add any context that lives only in your head. docstube proposes the full page plan — edit it like a list, hit generate, and you're done. That's the entire job.

    • Each persona becomes a dedicated reviewer agent later in the run.
    • The nav tree you approve becomes the exact page plan.
    • Your source never leaves your machine — only your own AI ever sees it.
    localhost:4321 · setup

    Doc type

    Public docs site Internal wiki API reference

    Reader personas

    N New integrator · wants the 5-minute path
    P Platform engineer · depth, edge cases, config

    Information architecture

    drag to reorder
    • ⋮⋮ Getting started
    • ⋮⋮ Installation
    • ⋮⋮ Quickstart
    • ⋮⋮ Core concepts
    • ⋮⋮ Configuration
    • ⋮⋮ API reference
    • + add page
  2. 2
    AI · autonomous

    A writer agent drafts every page from your real source.

    docstube builds a structural map of your codebase first — every module, export, type, and call site. A writer agent then drafts each page grounded in the actual symbols it documents, not a vague impression of them. Finished pages stream into a live preview as the run advances; nothing hides in a black box.

    generating · 6 pages
    • getting-started/installation verified
    • getting-started/quickstart verified
    • core-concepts/configuration verified
    • guides/authentication drafting…
    • · reference/api queued
    • guides/migration needs review
    3 verified 1 running 1 flagged
    live preview · authentication
  3. 3
    AI · per persona

    A reviewer agent reads it as each of your readers.

    Every persona you named gets its own reviewer agent. The new-integrator reviewer demands a clean five-minute path that assumes nothing; the platform-engineer reviewer pushes for depth, edge cases, and configuration. Their notes go straight back to the writer — so pages are aimed at your actual readers, not a blurred-together average.

    reviewing · guides/authentication.mdx

    AI reviewers · per persona

    N New integrator fit 0.92

    five-minute path is clear — nothing left unexplained

    P Platform engineer fit 0.88

    wants the token-refresh edge case spelled out

    notes sent back to the writer for the next pass
  4. 4
    AI · two layers

    Then verifiers prove it's actually true.

    Reading well isn't the same as being right. Deterministic verifiers run real tooling — tsc and pyright type-check every sample; imports, links, and diagrams must resolve; every API reference must match your compiler. Then AI verifiers catch what no tool can: unbacked claims, quiet contradictions, examples that don't do what the prose says.

    Anything that can't be proven ships flagged for review, never silently wrong — with the exact finding attached.

    verifying · guides/authentication.mdx

    Deterministic verifiers · real tools

    tsc pyright imports links D2 render API refs

    AI verifiers · judgment

    every claim is backed by the source
    examples match the behavior they describe
    no contradictions across sections
    Passed the gate quality 0.94 / 1.0
  5. 5
    AI · on every commit

    Ship code, and the docs follow.

    docstube hashes your code at the symbol level and remembers which pages each symbol feeds. Change one function and docstube refresh regenerates only the pages that depend on it — a sliver of the cost of a full rebuild. Run it locally, or let the GitHub Action open a PR on every push with the changes and the reasons behind them.

    • Symbol-level provenance, not a blunt file-hash scan or a full re-run.
    • Only affected pages reach the model — a fraction of the tokens.
    • docstube refine circles back to improve your weakest pages first.
    docstube refresh · incremental ~96% fewer tokens

    Changed symbols detected

    getSession() refreshToken() AuthError
    2
    pages regenerate
    47
    untouched · skipped

    Tokens this refresh

    ~11k

    vs ~294k to regenerate all 49 pages

    Runs automatically via the GitHub Action.
Use cases

Win adoption. Unblock your team.

acme authentication

yourproject.dev › docs › auth

Authentication — Acme docs

Create a session and attach it to every request. Sessions expire after 60 minutes…

AI answer

Call acme.connect() to authenticate, then reuse the session.

yourproject.dev/auth

Public docs

OSS maintainers · API companies

A site that markets your project while it teaches it — and that every channel can find.

  • Adoption follows good docs. Developers commit to the tool they can learn fastest. A clear, searchable site is how you become that tool.

  • Found by people and their AI. SEO, AEO, and an llms.txt out of the box — so search engines, answer engines, and coding agents all cite your real API.

  • Correct, not just fluent. Every sample is type-checked and every reference matches your compiler, so the code a reader copies actually runs.

How does auth work?

Auth service

matches main

Sessions are minted in auth.ts and refreshed by the gateway.

MJ
synced from main · 2m ago

Internal wiki

engineering teams

The private reference for a codebase that changes faster than anyone can document by hand.

  • Onboarding that keeps up. New hires ramp on docs that match main — not a wiki that went stale three sprints ago.

  • Answers without the interruption. Instant search over always-current pages, so nobody pings the one engineer who still remembers how it works.

  • Context your agents can trust. Ships an llms.txt and an MCP server, so the coding agents on your team read accurate internals instead of guessing.

The output

Not a markdown dump. A real docs site.

Instant search, rendered diagrams, type-checked samples, API references, light and dark — everything a great docs site needs, and you wrote none of it.

Guides › Authentication

Authentication

Acme uses short-lived sessions. Create one with connect(), then attach the returned Session to every request.

import Acme from 'acme'
const acme = new Acme(apiKey)
const session = await acme.connect()
Client
connect
Acme API
query
Postgres
architecture.d2 · rendered & syntax-checked

Everything a great docs site needs, already built in.

No plugins to wire up, no theme to fork. The components come with it.

auth⌘K
Authenticationguide ›
getSession()api ›
Refresh tokensguide ›

Instant search

Full-text search across every page in milliseconds, powered by Pagefind.

Client
request
Gateway
query
Postgres

D2 diagrams

Architecture and flow diagrams, rendered and syntax-checked. Sketch mode by default.

example.ts tsc passed
import Acme from 'acme'
const c = new Acme(key)
await c.connect()

Type-checked code blocks

Every sample runs through tsc or pyright, so the code on the page actually compiles.

Create a session, then attach it to every request you make.

session · a short-lived auth token

Autolinked glossary

Define a term once; it links consistently everywhere it appears.

getSession(opts)

opts.tokenstring
opts.expiresInnumber?
returnsPromise<Session>

API reference

Signatures extracted straight from your compiler with TypeDoc and griffe.

Screenshots

Drop real product screenshots — like a console dashboard — into a page with one component.

npmpnpmyarn
Sessions expire after 60 minutes.
1 2 3

Callouts, tabs & steps

The rich MDX building blocks a great guide is actually made of.

Aa
const c
Aa
const c

Light & dark

Both themes ship together; every reader picks the one they prefer.

llms.txt+ MCP server
# Acme — verified API surface
/auth · /billing · /webhooks
/reference/client
→ agents cite getSession(opts) ✓

Built for agents

llms.txt, llms-full.txt, and a docs-serving MCP server, included by default.

Human review

Don't like something? Just say so.

Review the rendered site, point at whatever's off — a word, a paragraph, a whole page — and say what you'd change in plain English. docstube makes the fix, then remembers the rule, so you never give the same note twice.

docs.yourproject.dev/auth select to edit

Authentication

Acme uses short-lived sessions to authorize requests. Each session is a bearer token you attach to every call.

Initialise the client with your workspace token to begin.

Define “workspace token” on first use — say where to find it.
const session = await acme.connect(token)

Point at any level

A word, a paragraph, a code block, a section, or the whole page. Click it on the rendered site and describe the change like you'd tell a teammate — no editor, no MDX, no tickets.

It remembers, for good

Your note becomes a durable writing rule, committed alongside your config. Every regeneration from here on respects it — you never give the same feedback twice.

Fixed everywhere it repeats

One note doesn't fix one spot. docstube finds the same issue across the rest of your docs and corrects it too — then re-verifies the lot.

The comparison

One column nobody else can fill.

Every tool here can generate or host docs. Only one mechanically checks that what it wrote is actually true — and flags the rest instead of shipping it wrong.

Capability
docstube pre-product
Hosted platforms Mintlify, GitBook
AI doc generators DeepWiki-style
Coding agent + you DIY
Open source MIT Closed Mostly closed n/a
Generates from your code Yes AI add-on Yes Yes
Mechanically verifies every claim Every claim None None By hand
Runs on your own AI Any provider Metered credits Their models Yes
Incremental, symbol-level updates Symbol-level File scan Re-crawls Manual
You own the output MDX / Astro Their platform Varies Markdown
full partial none
Built for agents

Your agents read it too — and get it right.

coding agent reading your docs
How do I authenticate with Acme?

Call acme.connect(token) to get a Session, then attach it to every request. Sessions expire after 60 minutes — refresh before they do.

verified source: yourproject.dev/auth · via MCP

without your docs: it guesses from a two-year-old blog post

llms.txt + llms-full.txt

Every site ships a compact and a full machine index, so agents read accurate, current context instead of guessing.

Docs-serving MCP server

Point Claude, Codex, or any MCP client at your docs and let it answer from verified pages - not a stale crawl.

Compiler-extracted API refs

References are pulled from real signatures via TypeDoc and griffe, so the types agents read match the types you ship.

Pricing

The whole product is free.

Every feature, MIT-licensed, forever. You pay only your own AI provider, at their prices, with spend caps you set. Paid tiers come later — and they'll sell what a single repo can't have, never the product itself.

The whole product

Open source

Free forever

Not a free tier of something bigger. The entire product, MIT-licensed.

Join the waitlist
  • The full pipeline: generate, review, verify, refresh
  • CLI, local web UI, and the GitHub Action
  • Every verifier and every feature — nothing gated
  • A self-contained MDX + Astro site you own, hosted anywhere
  • Runs on your Claude, Codex, or Gemini — or any API key
  • Your source never leaves your machine

Later, for teams — on the roadmap, not for sale yet

Cloud

Usage-based

For teams with many repos: a cross-repo Ask agent, docs-health across your fleet, SSO and audit. Sells what a single repo can’t have — never the core product.

Enterprise

Custom

Everything in Cloud, self-hosted on your infrastructure, with an SLA and hands-on support.

We never mark up tokens. You bring your own Claude, Codex, Gemini, or any API key — and pay that provider directly, exactly like your normal usage.

Verified docs, generated from your code

Stop maintaining docs by hand.

docstube is launching soon. Join the waitlist and we’ll send you a single email the day it’s ready — nothing else.

MIT licensed Bring your own AI Source stays local