docs.json config into a full documentation site. It runs as a Vite plugin, builds locally, and deploys anywhere.1npx -y skills add remorses/holocron
1npx -y @holocron.so/cli create
vite.config.ts. Run pnpm install && pnpm dev and you're live.1pnpm add @holocron.so/vite react react-dom vite
vite.config.ts:123456import { defineConfig } from 'vite' import { holocron } from '@holocron.so/vite' export default defineConfig({ plugins: [holocron()], })
docs.json at the project root:12345678910{ "name": "My Docs", "colors": { "primary": "#6366f1" }, "navigation": [ { "group": "Getting Started", "pages": ["index"] } ] }
index.mdx:12345678--- title: Welcome description: My documentation site. --- # Welcome This is my first Holocron page.
1npx vite
http://localhost:5173 and you should see your docs site.12npx vite build node dist/rsc/index.js
vite build, deploy the output anywheredocs.json schema and MDX components.md per page, /llms.txt, /docs.zip, skill discovery| Area | Mintlify | Holocron |
| Hosting | Cloud only | Self-hosted, or holocron.so managed hosting |
| Build | Cloud build on push | Local vite build, standard CI |
| Pricing | Starts at $150/mo | Free, open source (MIT) |
| Git workflow | Mintlify-managed deploys | Standard git: PRs, branches, diffs |
| Config | docs.json | Same docs.json (compatible) |
| Components | Proprietary MDX set | Same components, open source |
| API reference | Interactive playground | Read-only API reference from OpenAPI |
| Search | Algolia / built-in | Orama (local, zero config) |
| Custom domains | Dashboard setting | Your hosting provider |
| Analytics | Built-in dashboard | Bring your own |
| AI exports | /llms.txt, .md routes | /llms.txt, /docs.zip, .md routes, skill discovery |
| Custom routes | Not possible | Mount alongside a Spiceflow app |
| Framework | Proprietary | Vite + React Server Components |
.passthrough(), so you can paste a full Mintlify docs.json without validation errors. Fields Holocron does not consume are silently ignored.1pnpm add @holocron.so/vite react react-dom vite
123456import { defineConfig } from 'vite' import { holocron } from '@holocron.so/vite' export default defineConfig({ plugins: [holocron()], })
docs.json works as-is. Holocron's schema accepts unknown Mintlify fields; the runtime ignores fields it does not consume.1npx vite
http://localhost:5173.title, description, icon, sidebarTitle, tag, hidden, deprecatedcolors, logo, favicon, navbar, footer, redirects, appearance, fonts, banner{ "tab": "API Reference", "openapi": "openapi.json" } generates pages from your spec| Area | Mintlify | Holocron |
| Hosting | Mintlify cloud | Self-hosted (Node.js or Cloudflare Workers) |
| Build | Cloud build on push | Local vite build |
| API playground | Interactive playground | Read-only API reference |
| Analytics | Built-in dashboard | Bring your own |
| Custom domains | Dashboard setting | Your hosting provider |
| Search | Algolia/built-in | Orama (local, built-in) |
docs.json + MDX files │ ▼ ┌────────────────┐ │ Vite Plugin │ reads config, syncs navigation tree, processes MDX │ (holocron()) │ └───────┬────────┘ │ ▼ ┌────────────────┐ │ Spiceflow │ React Server Components framework │ + Tailwind │ auto-added by the plugin └───────┬────────┘ │ ▼ Full docs site with search, OpenAPI, dark mode, AI exports
holocron.so:1npx -y @holocron.so/cli deploy
permissions: id-token: write to your workflow.12npx vite build node dist/rsc/index.js
12npx vite build npx wrangler deploy
wrangler.jsonc setup..md routes: append .md to any page URL to get raw markdown. https://your-site.com/quickstart.md/llms.txt: an index of all pages with titles and .md URLs. Agents read this to discover the site structure./docs.zip: download every page as a .md file in one zip. Agents can grep it locally./.well-known/agent-skills/index.json exposes your docs as an installable AI skill.12curl https://your-site.com/llms.txt curl -L https://your-site.com/docs.zip -o docs.zip
my-docs/ ├── index.mdx # pages are MDX files ├── guides/ │ ├── install.mdx │ └── deploy.mdx ├── docs.json # navigation and config ├── vite.config.ts # one-line plugin setup ├── package.json └── public/ # static assets (logos, images)