Your agents write the code. doc0 gives you the context.
Docs written from your code that stay current as you push.
For engineering teams whose codebase lives in one person’s head: doc0 maps your repository, writes its wiki, and rewrites the pages a change touches as you push. Your team and your AI agents ask it from Slack, Linear or the editor.
A real run of doc0, sped up in places. A repository is picked and Generate pressed. doc0 maps 263 files and 2,260 symbols, then writes the wiki: 48 pages in 5 minutes 35 seconds. A page about the RegExp Router shows the lines it was written from and a diagram. The docs chat answers how to protect one route with JWT. A coding agent asks doc0 what breaks if compose() changes.
- Claude Code
- Cursor
- Codex
- VS Code
- Windsurf
- Slack
- Linear
- GitHub
Set up Claude Code, Cursor or Codex with npx @alessandro-afloarei/doc0 setup
Your codebase shouldn’t live in one person’s head.
Right now, that person is you.
Onboarding
Every new hire asks you how the system works, one question at a time.
Changing code
Your agents read raw files and guess what calls what.
Trusting the docs
The docs you have went stale months ago, so nobody reads them.
And it isn’t just you. Of more than 28,000 professional developers asked by Stack Overflow:
30%
hit a knowledge silo ten or more times a week.
49%
often answer questions they’ve already answered.
53%
say waiting on answers often disrupts their work.
Source: Stack Overflow, 2024 Developer Survey.
You can’t answer every question yourself. You can hand your team and your agents a wiki written from your code.
From your repository to docs that stay current.
Connect a repo before lunch. Read its wiki after.
01
Connect your repo
Install the doc0 GitHub app on the repositories you choose.
02
doc0 maps your code
The functions, calls and imports it can read, linked only where your code proves it.
03
Your wiki is written
A technical wiki for engineers and a user guide for everyone else.
04
It stays current
As you push, doc0 rewrites the pages a change touches.
See it on a real codebase.
Open a wiki doc0 wrote from a project you know, and ask it anything.
dub
dubinc/dub

The modern link attribution platform
25.1k stars on GitHubUpdated October 12, 2026
next.js
vercel/next.js

The React Framework
143.3k stars on GitHubUpdated October 12, 2026
mem0
mem0ai/mem0

The Memory Layer for AI Agents
68.4k stars on GitHubUpdated October 11, 2026
hono
honojs/hono

Web framework built on Web Standards
32.8k stars on GitHubUpdated October 12, 2026
drizzle-orm
drizzle-team/drizzle-orm

A TypeScript ORM for SQL databases
36.2k stars on GitHubUpdated October 12, 2026
fumadocs
fuma-nama/fumadocs

The beautiful & flexible React.js docs framework
13.5k stars on GitHubUpdated October 12, 2026
Understand your app without reading the code.
doc0 reads your repository once and writes down how it works. You read pages, not files.
Written from your code
A technical wiki for engineers and a user guide for everyone else, from the same repository.
Current as you push
A change rewrites the pages it touches.
Cited to the line
In the technical wiki, sections list the files and lines they were written from.
Yours to edit
Edit any page. Your edits stay when the code changes.
Diagrams of how it fits
Pages draw the flows and parts they explain.
dubinc/dub
Webhooks and PostbacksWebhook Constants and Failure Thresholds
The webhook subsystem defines strict operational thresholds and identifier prefixes to govern endpoint reliability and automatic disabling.
Sources: apps/web/lib/webhook/constants.ts:3-65, apps/web/lib/webhook/constants.ts:62-63
Callback Processing and Failure Handling
The callback handler evaluates delivery status codes to manage consecutive failures, automated cleanups, and external payout event statuses.
Sources: apps/web/app/api/webhooks/callback/route.ts:49-100, apps/web/app/api/webhooks/callback/route.ts:72, apps/web/app/api/webhooks/callback/route.ts:52-64
Execution Call Chain and Request Verification
Incoming webhook requests flow through a strictly ordered intake and verification sequence before reaching event handlers:
Sources: apps/web/app/api/dub/webhook/route.ts:9-39
Updated on October 5, 2026 · Commit 7c93d97
Your docs come from a map of your code, not a guess.
doc0 first maps your repository: the functions, calls and imports in the languages it reads. A call joins the map only when your code proves it.
Walkthroughs come from the map
A technical page about a flow is handed real call paths from the map and walks you through them, step by step.
Names checked against your code
The functions and classes a page names are looked up in the map. When too many are missing, the page goes back for a rewrite.
Quotes copied from your lines
A page quotes your code by pointing at its lines, and doc0 copies them in. Each link opens them at the commit the page was written from.
dubinc/dub
Creating a link checks its URL
calls, proved through an import
processLink
apps/web/lib/api/links/process-link.ts:28calls, proved through an import
getUrlFromString
packages/utils/src/functions/urls.ts:34calls, proved in the same file
isValidUrl
packages/utils/src/functions/urls.ts:1
Your team asks in Slack and Linear. Your agents ask from the editor.
Both get their answers from the same wiki and map, where the question comes up.
Answers in Slack and Linear
On the Team plan, your team mentions doc0 where the question comes up.
Agents set up with one command
Run
npx @alessandro-afloarei/doc0 setupin your repository.Answers show their sources
doc0 names the wiki pages and code it answered from.
DUB-42 · Verify webhooks came from Dub
Product: What does the Dub-Signature header on a webhook contain?
- Searching documentation
- Searching documentation
doc0: Based on the documentation, the Dub-Signature header contains a cryptographic HMAC SHA-256 signature of the request payload. Specifically: Generation: It is computed (via createWebhookSignature() / crypto.createHmac()) as a SHA-256 HMAC digest of the payload/stringified request body using the webhook or postback secret (e.g., DUB_WEBHOOK_SECRET or the partner's postback secret). Verification: On receiving endpoints (such as POST /api/dub/webhook), the incoming Dub-Signature header is extracted and compared against the computed HMAC digest using timingSafeCompare() to verify the integrity and authenticity of the request.
#doc0-dub-demo
Support: How many failed deliveries before Dub disables a webhook?
- Searching documentation
- Searching documentation
doc0: Dub automatically disables a webhook after 20 consecutive delivery failures (WEBHOOK_FAILURE_DISABLE_THRESHOLD = 20). Additionally: Dub sends failure notification alerts at 5, 10, and 15 consecutive failures (WEBHOOK_FAILURE_NOTIFY_THRESHOLDS). If a delivery succeeds before hitting the disable threshold, the consecutive failure count is reset to 0. (Reference: Webhooks and Postbacks)
~/dub
You: Add a delivery attempt counter to webhook retries.
- doc0_get_minimal_context
- doc0_search_docs
- doc0_get_page
Claude Code: QStash already counts attempts: each callback it sends to /api/webhooks/callback carries a retried field, but webhookCallbackSchema drops it, so I'll record attempt = retried + 1 with every webhook event. Plan (from doc0's Webhooks and Postbacks page, Callback Processing and Failure Handling, then the code): 1. apps/web/lib/zod/schemas/webhooks.ts: add retried: z.number().default(0) to webhookCallbackSchema (lines 99-106) and attempt: z.number() to webhookEventSchemaTB (lines 109-122). …
See what a pull request changes before you read the diff.
doc0 turns a pull request into a map of the functions it adds, changes and removes, and the calls between them. It opens from the doc0 check on the pull request.
acme/api
ExampleReplay failed refunds from the dead-letter queue #213
Change 1 of 2: Replay failed refunds each night
- DeadLetterQueue.drain in src/refunds/dead-letter.ts, added.
- markRefundStuck in src/refunds/stuck.ts, removed. markRefundStuck is removed but still called in refunds-page.ts:52.
- processRefund in src/refunds/process.ts, changed: no longer calls markRefundStuck.
- replayFailedRefunds in src/jobs/replay-refunds.ts, added: now calls DeadLetterQueue.drain, now calls processRefund.
- registerJobs in src/jobs/schedule.ts, changed: now calls replayFailedRefunds.
- RefundsPage in src/admin/refunds-page.ts, unchanged: still calls markRefundStuck, calls processRefund.
Measured on public code you can check.
How precise the map is, how fast a wiki is written, and how well its claims hold up against the code.
- Calls checked against the TypeScript compiler
- 99.9%
- of the 8,786 calls doc0 drew in Next.js that the compiler could check, the compiler drew too.
- Time to write Hono’s wiki
- 5 min 35 s
- 263 files mapped and 48 pages written, in the run the video above shows.
Claims that held up against the code, out of 100
86
In a blind test on 10 public repos, more of doc0’s claims held up against the code than DeepWiki’s or Google CodeWiki’s, on all 10. See how we tested
- doc086
- DeepWiki59
- Google CodeWiki43
Pricing
Start with a 3-day trial
Every plan includes the technical wiki and the user guide, AI chat and full-text search. Most docs platforms bill per site and per seat. doc0 doesn't.
Pro
billed annually
For individual developers with private repos.
- Document up to 500,000 lines of code monthly
- Unlimited public projects
- 5 private projects
- Technical & user guide docs
- Knowledge graph & API detection
- Unlimited MCP queries
- Custom domain
- Export to Markdown
Team
Recommendedbilled annually
For teams where engineering, product, and support all need code context.
Unlimited team members
- Document up to 2,000,000 lines of code monthly
- Slack bot & Linear agent
- 20 private projects
- Deep research mode
- Everything in Pro
Enterprise
For organizations with custom allowances, security reviews, and procurement.
Custom allowance
- Everything in Team
- Custom line allowance and repository limits
- Security questionnaire & DPA
- Priority support
Lines are counted from your own source code. Vendored and generated files never count, and test files are excluded by default.
Connect your repository, and check the wiki it writes.
Connect a repo, spot-check the wiki, then decide.
No copy of your repository
Your repository is cloned, analyzed in memory and deleted. We keep indexed chunks to write and update your docs, encrypted at rest and deleted with your project.
Never used to train models
Your code is used for inference only, on every plan.
You choose who sees what
Keep a project private, publish the technical wiki or the user guide on its own, and give each teammate a role.
Prefer to talk first? Book a demo (opens in a new tab)