Documint V1 backend for repo-native documentation operations
Project description
Documint
Documint is a repo-native documentation operations product for teams that ship APIs, SDKs, and MCP servers.
The first customer is this repository itself. V1 is deliberately narrow:
- Git is the source of truth.
- documentation changes happen through commits and PRs,
- the public site lives at
documint.xyz, - the backend detects doc drift and exposes a published-docs MCP surface,
- the product is not considered ready until it can keep its own docs current.
Product surfaces
/marketing and positioning/docspublished repo-backed documentation/appthe authenticated operator console for onboarding, traces, findings, patches, PRs, publishes, and tokens/p/:workspace/:project/docs/...hosted public docs generated from persisted publish deployments
Stack
apps/web: Next.js site and dashboardsrc/documint_mcp: Python backend, persistent control plane, drift engine, GitHub App integration, and MCP-style APIcontent/docs: published docs content for the self-dogfood projectalembic: schema migrations for the control-plane database
Local development
1. Install dependencies
npm install
cd apps/web && npm install && cd ../..
python -m pip install -e ".[dev]"
2. Create or migrate the database
documint db upgrade
For local dogfooding, schema creation and self-bootstrap can also be driven by env flags:
DOCUMINT_AUTO_CREATE_SCHEMA=trueDOCUMINT_AUTO_BOOTSTRAP_DEFAULTS=true
3. Run the backend
npm run dev:api
4. Run the site
npm run dev:web
The site expects the backend at http://127.0.0.1:8000 by default. Override with DOCUMINT_API_URL if needed.
5. Bootstrap the self project explicitly when auto-bootstrap is off
documint workspaces bootstrap-self
6. Run the queue worker when DOCUMINT_JOB_EXECUTION_MODE=queue
documint worker
7. Run the full dogfood smoke loop
npm run dogfood
This boots the backend and web app, verifies the public pages, runs drift and publish jobs, calls the MCP surface, and posts a signed GitHub webhook delivery against the local API.
Core API routes
GET /healthGET /runtimeGET /meGET /workspacesPOST /workspacesGET /snapshotGET /projectsPOST /projectsGET /projects/{project_id}POST /projects/{project_id}/rescanGET /projects/{project_id}/findingsPOST /projects/{project_id}/findings/{finding_id}/patchGET /projects/{project_id}/patchesGET /projects/{project_id}/patches/{patch_id}POST /projects/{project_id}/patches/{patch_id}/prGET /projects/{project_id}/publishesGET /projects/{project_id}/activityGET /sourcesGET /workspaces/{workspace_id}/tokensPOST /workspaces/{workspace_id}/tokensGET /integrations/github/appGET /integrations/github/installationsGET /integrations/github/installations/{installation_id}/repositoriesPOST /integrations/github/installations/{installation_id}/syncPOST /integrations/github/webhooksPOST /jobs/driftPOST /jobs/publishPOST /auth/cli/exchangePOST /internal/revalidateGET /artifacts/{artifact_id}/traceGET /public/projects/{workspace_slug}/{project_slug}/docs/{path}GET /mcpPOST /mcp
MCP tools
list_projectsanalyze_repositorydetect_doc_driftgenerate_doc_patchreview_doc_patchpublish_previewexplain_doc_traceget_project_activity
Release bar
Documint does not onboard external customers until it can do the following on this repo:
- produce a truthful project snapshot,
- detect stale documentation from source changes,
- generate a reviewable patch preview,
- publish a docs preview,
- expose those docs through the MCP surface.
Deployment shape
- Deploy
apps/webto Vercel with the project root directory set toapps/web. - Deploy the Python backend to Railway from the repository root using
railway.jsonand the root Dockerfile. - Point
DOCUMINT_API_URLat the public backend origin for the dashboard. - Set
API_BASE_URL,GITHUB_WEBHOOK_SECRET,GITHUB_APP_PRIVATE_KEY, andDOCUMINT_SELF_BOOTSTRAP_INSTALLATION_IDbefore configuring the GitHub App webhook. - Set Clerk env vars in both web and backend runtimes:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYCLERK_JWKS_URLCLERK_ISSUERCLERK_AUDIENCE
- Set
DOCUMINT_FRONTEND_REVALIDATE_URL,DOCUMINT_FRONTEND_REVALIDATE_SECRET, andDOCUMINT_INTERNAL_REVALIDATE_SECRETso publish jobs can invalidate hosted docs pages. - Set
PUBLIC_BASE_URL=https://documint.xyz,APP_BASE_URL=https://documint.xyz/app, andDOCUMINT_DEPLOY_COMMITif your runtime does not expose git metadata. - For a local containerized stack, run
docker compose up --build.
Production proof
/runtimemust report the deployed provider, environment, and commit source./appmust showlive api, notfallback data.npm run dogfoodnow verifies the live dashboard path as part of the self-test.
GitHub App loop
Documint V1 treats GitHub as the first event source for self-dogfooding:
- create a GitHub App with
push,pull_request,release,installation, andinstallation_repositoriesevents, - set the webhook URL to
https://<api-origin>/integrations/github/webhooks, - install the app on
skeehn/documint, - sync the installation repo catalog in
/app/onboarding, - let webhook deliveries trigger repo-backed drift checks,
- review the findings and proposed patch before opening or merging a docs PR.
Auth and operator flow
- Production
/approutes are protected with Clerk when Clerk is configured. - The backend accepts three credential types:
- service bearer token for internal bootstrap/admin flows
- hashed workspace API tokens for CLI and MCP
- Clerk JWTs for the operator app
- Production operator pages no longer render fake project state when the backend is unavailable. They render a degraded unavailable state instead.
Local full-stack options
npm run dogfoodis the fastest end-to-end local smoke test.docker compose up --buildruns the repo-native stack withweb,api, andredis.docker compose -f docker/docker-compose.dev.yml up --buildprovides the same stack from the legacydocker/entrypoint, now aligned with V1.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file documint_mcp-0.3.2.tar.gz.
File metadata
- Download URL: documint_mcp-0.3.2.tar.gz
- Upload date:
- Size: 11.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
238706d8e643487ab9c85891f724915c254b813cb34890baf7e3c886ab59757d
|
|
| MD5 |
cb7d29b6c675130bded26865b1a0b7eb
|
|
| BLAKE2b-256 |
a66588883ff308f27ad912a4246a80344c739bbc67d6ed915ec243a274c1767e
|
File details
Details for the file documint_mcp-0.3.2-py3-none-any.whl.
File metadata
- Download URL: documint_mcp-0.3.2-py3-none-any.whl
- Upload date:
- Size: 155.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4598434e6cc296d2c88a0b8ca2475ac44dce11eb5a3eef9167249cef3b68a69
|
|
| MD5 |
03227eca05d49983a1030d8d8dacbf27
|
|
| BLAKE2b-256 |
1dbd7b47f3cd22b316c1ec84922d6582c76d42235a5a9716d43f8ba40951445f
|