doc0

doc0

A terminal-native documentation runtime. Browse any framework’s docs in a TUI, expose the same cache to your agent over MCP, and keep everything local. One config file. One cache. Zero servers.

$ npm i -g doczero

then: doc0doc0 mcp install

Or read the documentationView on GitHub

doc0 — zsh
01tui

A real browser, in your terminal.

Run `doc0 <id>` to open the Ink TUI: tree on the left, rendered Markdown on the right, forward/back history, `/` to search, `Enter` to open. Same layout for installed bundles and remote URL docs.

doc0 stripe / webhooks / quickstart[browse]
Press / to refine search
# Receive Stripe webhook events
Webhooks notify your server of asynchronous events. Configure an
endpoint, verify the signature, then return 2xx within 30 seconds.
## Forward events to localhost
$ stripe listen --forward-to localhost:3000/webhook
> Ready! Your webhook signing secret…
────────[qQuit][/Search][bBack][fForward][j/kScroll][EnterOpen]────────
02mcp

Your agent runs the same CLI — over MCP.

`doc0 mcp` is a stdio MCP server. Four tools: find_docs, read_docs, grep_docs, list_docs. Most agent flows are a single find + single read. `doc0 mcp install` sets up any of six clients in one command — Cursor, Claude Code, Windsurf, Antigravity, Zed, and OpenCode.

Explored 3 files, 1 command
Ran Find Docs in doc0
Thought briefly
Ran Grep Docs in doc0
Thought briefly
Ran Read Docs in doc0
Ran Read Docs in doc0

Stripe retries webhook deliveries with exponential backoff over 3 days when the endpoint returns non-2xx or times out.

  • Return 2xx quickly; queue slow work in a background job.
  • Verify signatures with Stripe.webhooks.constructEvent.
03local

One config file. You own every byte of it.

Everything doc0 does is driven by `~/.d0rc`. Point at your own registry fork, disable the community source for air-gapped networks, rebind every TUI key, tighten or loosen cache TTLs, or restrict MCP to installed bundles for a team setup.

~/.d0rcyaml · user-owned
# excerpt — yours can be longer
registryUrl: https://raw.githubusercontent.com/
  myorg/d0-registry/main/registry.json

# cache TTL for community index (default: 24h)
communityRegistryTtlMs: 3600000

# agents: only installed bundles
mcp:
  installedOnly: true

# every TUI key is overridable
keybindings:
  quit: q
  search: /
  back: b
  # …
registryUrl

Your fork, false for air-gapped, or override with D0_REGISTRY_URL.

communityRegistryTtlMs

How long to cache the community registry before re-fetching.

mcp.installedOnly

Hide community and seed docs from MCP; curated bundles only.

keybindings

Remap quit, search, navigation, scroll, and more.

doc0 doctor · doc0 registry status

Validate registry entries and inspect cache before a team rollout.

community registry

One JSON file on GitHub. PRs are the UI.

No servers. No accounts. Open a PR against doc0team/d0-registry and your docs source ships to every user within 24h.

How the registry works →
~/.d0rc
# point at your own fork
registryUrl: https://raw.githubusercontent.com/
  myorg/d0-registry/main/registry.json

# or disable entirely
registryUrl: false