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 doc0

Or read the documentationView on GitHub

doc0 — zsh
The doc0 TUI — a terminal showing the ASCII 'docs' logo above a list of popular documentation sites
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 --cursor` merges doc0 into `~/.cursor/mcp.json` in one command (Claude Code + Windsurf support coming).

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
# registry — point at your fork, or disable entirely
registryUrl: https://raw.githubusercontent.com/myorg/d0-registry/main/registry.json

# cache TTL for community-registry.json (default: 24h)
communityRegistryTtlMs: 3600000

# expose only your installed bundles to agents
mcp:
  installedOnly: true

# rebind TUI keys — all keybindings are overridable
keybindings:
  quit: q
  search: /
  back: b
  scroll_up: k
  scroll_down: j
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