12345{ "tab": "MCP", "mcp": "mcp-tools.json", "base": "mcp" }
"..." rest expansion to interleave custom MDX pages with auto-generated ones, same as OpenAPI tabs.initialContent field — prepend custom MDX content above auto-generated release entries in changelog tabs:12345{ "tab": "Changelog", "changelog": "https://github.com/owner/repo", "initialContent": "changelog/intro" }
.md imports, so relative image paths and links resolve correctly..yaml or .json OpenAPI spec now triggers an automatic re-sync so API reference pages update without restarting the dev server.<VideoBackgroundShader>. Supports dotStyle="ascii" for an ASCII character atlas effect, configurable dot size, color, and fade gradients.<Li> elements are properly spaced.<Tabs> no longer show the panel title twice.syncNavigation calls during rapid file saves are serialized, preventing interleaved state corruption.full mode when the page has no other asides.pagesDir (e.g., a repo-root README.md) is imported into a page and contains relative links back to pages, those links are now correctly resolved to absolute slug paths instead of raw filesystem-relative paths.README.md at the repo root imported via import Readme from '../../README.md' that contains [OpenAPI](./website/src/openapi.md) now resolves to /openapi instead of the unresolvable ../../website/src/openapi. Hash fragments and query strings are preserved.motion as optional dependency — motion was accidentally removed in 0.18.0. Added it back so user projects that depend on it don't break on install.12▲ holocron found 3 invalid internal links across 2 pages. ▲ holocron 2 pages with MDX errors. Fix the syntax issues listed above.
knownPaths.HOLOCRON_TOKEN accepted as env var alias for HOLOCRON_KEY — the Vite plugin, deploy command, and AI chat auth now check both HOLOCRON_TOKEN and HOLOCRON_KEY (first defined wins). Useful when your CI already has a HOLOCRON_TOKEN secret.render-openapi.tsx was incorrectly marked 'use client', pulling safe-mdx and its transitive chain into the client bundle. The format package (CJS-only) caused:1The requested module "format/format.js" does not provide an export named "default"
'use client' directive so the OpenAPI renderer stays server-side.@fastify/deepmerge, image-size, and motion from the package.HOLOCRON_TOKEN accepted as env var alias for HOLOCRON_KEY — deploy and all API commands now check both HOLOCRON_TOKEN and HOLOCRON_KEY (first defined wins). Useful when your CI already has a HOLOCRON_TOKEN secret and you don't want to rename it.RequestExample and ResponseExample wrapped them in a CodeGroup inside a CodeCard, producing a double frame. Now they render as a single tabbed panel with each example as a named tab.@holocron.so/vite/app outside the holocron Vite plugin (e.g. inside a @cloudflare/vitest-pool-workers test running in workerd) crashed with Cannot find module './styles/globals.css'. The import now resolves from the package src/ directory which is stable from both src/ and dist/.changelog URL and Holocron fetches the repository's published releases at build time, rendering one page with a Mintlify-compatible <Update> entry per release (newest first, drafts skipped):1234{ "tab": "Changelog", "changelog": "https://github.com/owner/repo" }
mode: center (left nav hidden) with a right-side notice explaining it's generated from GitHub releases. Release notes are Markdown and are safely escaped so a release body can never break the page. Set a GITHUB_TOKEN / GH_TOKEN to avoid rate limits; the token is only ever sent to api.github.com. Transient GitHub outages render a warning page instead of failing the build.mode: center) — hide the left navigation sidebar per-page, matching Mintlify's mode layout control:1234--- title: Landing mode: center ---
default / wide / frame keep the left nav; center / custom hide it and center the content. All five names are accepted so existing Mintlify frontmatter works unchanged.rendering: static — opt a page into build-time prerendering. Static pages render to HTML + RSC data at build for faster delivery and cheaper hosting. Use it for pages whose content never depends on the incoming request:1234--- title: Overview rendering: static ---
ssr, which renders on every request so pages can react to per-request data like cookies.examples map), Holocron renders all of them as a tabbed code group instead of showing only the first. Example names become the tab labels:123456789responses: '201': content: application/json: examples: Confirmed order: value: { id: 'order-001', status: 'pending' } Empty order: value: { id: 'order-002', items: [] }
description fields (Markdown by spec) now render as formatted HTML — headings, lists, inline code, links, emphasis, code blocks — everywhere they appear: endpoint summary, parameters, schema properties, request bodies, and responses. The page <meta> description is still flattened to clean plain text. (Closes #96)/index paths resolve to their canonical href — the */index forms now 308-redirect to the canonical href at runtime (query strings preserved) and count as valid targets for broken-link detection, so links to /guide/index no longer 404 or get flagged as broken.@holocron.so/vite/prism export — reuse Holocron's vendored Prism bundle (prismjs core + ~300 grammars in one ESM module) to highlight code outside MDX, without shipping a duplicate bundle:123import { Prism } from '@holocron.so/vite/prism' const html = Prism.highlight(code, Prism.languages[lang], lang)
bleed prop on CodeBlock accepts 'both' | 'right' | 'none' — control how a code block bleeds into the page margins. 'both' (or true) bleeds both sides, 'right' only the right margin, 'none' (or false) stays inside the parent.base slug prefix accepts a leading slash — the base field on OpenAPI and Changelog tabs is a slug prefix, so a leading slash is now allowed and ignored ("/docs/api" behaves like "docs/api"); trailing slashes are trimmed. The field was renamed from openapiBase to base and is now shared across virtual-tab providers.<Above> hero spans the full grid width including the side rails.globals.css edits — editing Holocron's global stylesheet hot-reloads without a full page refresh.SUBSCRIPTION_REQUIRED error. The CLI now surfaces the server's actionable message plus the upgrade URL instead of a generic Failed to create deployment:123npx -y @holocron.so/cli deploy # A Holocron Pro subscription is required for this deployment. # Subscribe to continue: https://holocron.so/...
login — when a saved session token is expired or invalid, the CLI now tells you to run the login command again instead of failing with a confusing error.@holocron.so/vite/mdx export — import Holocron MDX components in your own .tsx files:1import { Card, CardGroup, Callout, Steps, Step } from '@holocron.so/vite/mdx'
width or height on <Image> or <img> in MDX, those values are now preserved instead of being overridden with the natural image size. When only one dimension is provided, the other is computed proportionally from the aspect ratio.<Marquee>, card grids, and other flex layouts now use a definite pixel width capped at 100% instead of width: 100%, which caused circular sizing dependencies in flex items./holocron-api/ namespace — avoids collisions with user API routes.d to toggle dark mode — press d anywhere on the page to switch between light and dark mode. Skips when focus is in an input, textarea, or contenteditable, and ignores modifier combos (Cmd+D, Ctrl+D, etc.)<blockquote> for plain MDX — standard markdown > quoted text now renders with a left border accent and italic muted text. GitHub-style callouts (> [!NOTE], etc.) still render as Callout components--type-nav-group-size CSS variable — controls font-size of sidebar group titles. Override it to customize sidebar typography:123:root { --type-nav-group-size: 14px; }
caches.open() could throw in hosted environments where Cache API is unavailable, causing a 500. Now falls back to direct fetchpreventDefault() no longer accidentally trigger the dark mode toggleaddNoExternal for @holocron.so/vite now runs in all Vite environments (client, ssr, rsc)@holocron.so/vite and not hoisted in strict pnpm. Virtual modules like virtual:app-entry can't resolve bare spiceflow imports because they have no filesystem location. A resolveId hook now resolves spiceflow from holocron's own source directory.@holocron.so/vite/src/* resolveId hook that was only needed when spiceflow was a workspace dependency.resolveId hooks for spiceflow and @holocron.so/vite/src/* that were only needed when spiceflow was a workspace dependency. Vite's default resolution now handles everything correctly, fixing transitive dep resolution in strict pnpm workspaces.import type ensures it only loads when the config panel is opened.whoami command with multi-org support — holocron whoami now shows your user info, all organizations with IDs and roles, and projects grouped per org:1npx -y @holocron.so/cli whoami
holocron projects create accepts --org [orgId] to target a specific organization. When you belong to multiple orgs and no --org is passed, an interactive picker appears.integrations field in docs.json injects client-side analytics scripts. Supports Fathom, Plausible, Pirsch, GA4, GTM, PostHog, Mixpanel, Hotjar, Heap, Segment, Clarity, Amplitude, LogRocket, and Clearbit:1234567{ "integrations": { "ga4": { "measurementId": "G-XXXXXXXXXX" }, "plausible": { "domain": "docs.example.com" }, "fathom": { "siteId": "ABCDEF" } } }
<Marquee> MDX component — infinite scrolling content strip, available directly in MDX without imports. Supports horizontal and vertical directions, fade edges, configurable speed, and hover deceleration:1234<Marquee duration={30} fade slowOnHover> <img src="/logos/github.svg" /> <img src="/logos/vercel.svg" /> </Marquee>
logo.text config field — display a site name next to the logo in the navbar:1{ "logo": { "light": "/favicon.svg", "text": "My Docs" } }
layout (maxWidth, sidebarWidth, columnGap, radius) and fonts (fontSize, heading.fontSize) fields for customizing page geometry and font sizes without custom CSS.--radius, customizable via layout.radius.sidebarTitle frontmatter — use a long title for SEO while keeping the sidebar label short.--key option for holocron create — pass an existing API key to skip the entire cloud setup flow (no device flow login, no project creation, no API key creation). The key is written directly to .env:1npx -y @holocron.so/cli create my-docs --key holo_xxxxxxxxxxxx
placement field that controls where they render. "sidebar" (the new default) places anchors at the top of the left navigation sidebar with icon and label. "tabs" places them in the header tab bar, preserving the previous behavior. You can mix both placements in the same config:12345678{ "navbar": { "links": [ { "label": "GitHub", "url": "https://github.com/...", "placement": "sidebar" }, { "label": "Changelog", "url": "/changelog", "placement": "tabs" } ] } }
.md/.mdx extensions stripped from internal links — links like [guide](/getting-started.md) are now automatically rewritten to /getting-started at build time. Previously these links were excluded from broken-link validation and would serve raw markdown or 404. Reference-style links and JSX href attributes are also handled.<script> now reads the holocron-theme cookie before first paint, preventing the theme from flashing or resetting during RSC streaming.vite build now removes old client/, rsc/, ssr/ directories from dist/ before building, preventing stale artifacts from leaking into fresh builds. Cache files are preserved for incremental builds.12345678```ts title="vite.config.ts" highlight="3-5" lines=false bleed=true import \{ defineConfig \} from 'vite' import holocron from '@holocron.so/vite' export default defineConfig(\{ plugins: [holocron()], \}) ```
title="..." or bare words → filename/label header above the code blockhighlight="1-3,7" → dims non-highlighted lines with a background overlaylines=false → hides line numbers (on by default)bleed=true → extends the code block into page margins0.875em. Background pill is hidden, color uses full-contrast var(--foreground) to match heading text. H2 headings also get a decorative divider line (previously h1 only).var(--primary) instead of hardcoded green values, so they automatically match the site color theme.diagram, ascii, box) use line-height: 1.3 instead of 1.6, improving vertical alignment of box-drawing characters and connected lines..inline-code now uses var(--foreground) in both light and dark mode instead of hardcoded rgba() values, so it adapts to custom themes..md/.mdx imports at remark level — imported markdown files are now spliced directly into the page's mdast tree before any remark plugins run. Headings from imported files appear in the TOC automatically, images go through the normal build-time processor, and all remark plugins (callouts, code groups, mermaid, etc.) apply to the inlined content. Recursive imports are supported with cycle detection. Each imported file is parsed exactly once and the mdast is reused for import extraction, image dep collection, and pre-building spliced nodes. Pages without .md imports skip the full AST parse entirely via a regex fast path.knownPaths config field — suppress false broken-link warnings when mounting docs alongside other routes (API endpoints, dashboards, external apps). Supports exact paths and prefix wildcards:123{ "knownPaths": ["/api/*", "/dashboard", "/blog/*"] }
.md/.mdx files included in AI chat context — imported markdown snippets and shared fragments are now sent to the AI chat agent during local dev, matching production behavior where they were already included via docs.zip.--grid-content-width is now wrapped in min(720px, ...) so it never grows beyond 720px regardless of grid geometry.scroll-margin-top now uses --sticky-top instead of --header-height, adding breathing room below the navbar when navigating to #id anchors.wrangler dev. The Spiceflow RSC entry now uses the real custom entry file instead of routing through a virtual module, so vite-rsc can walk the import graph and collect all CSS dependencies.react-server export map fallback, so Holocron no longer needs to carry private path aliases for safe-mdx, safe-mdx/parse, and safe-mdx/client.workspace:^ references unresolved in the published package.json.wrangler dev. The Spiceflow RSC entry now uses the real custom entry file instead of routing through a virtual module, so vite-rsc can walk the import graph and collect all CSS dependencies.react-server export map fallback, so Holocron no longer needs to carry private path aliases for safe-mdx, safe-mdx/parse, and safe-mdx/client..md/.mdx files — imported markdown files (e.g. import Guide from "./snippets/guide.md") now go through the same build pipeline as regular pages: all remark plugins (GitHub callouts, code groups, etc.), image resolution (dimensions, placeholders, copy to public), and normalization. Previously these were loaded as raw strings and parsed at render time without any processing..md/.mdx files now show up in the left sidebar table of contents in correct document order. Previously imported components were opaque JSX nodes, so their headings were invisible to the TOC./foo), relative (./foo, ../bar), hash fragments, and query strings..mdx URLs — pages were already served as raw markdown at /<slug>.md for AI agents. Now .mdx URLs work identically, returning the same content with text/markdown content-type./docs.zip — the /docs.zip endpoint now includes imported markdown files (snippets, shared fragments, files outside pagesDir) alongside navigation pages.pnpm install resolves it automatically./.md (404) on the root page instead of /index.md.isExternalHref used new URL() origin comparison that produced different results on server vs client for relative paths. Replaced with a consistent regex.<div> wrapper.docs.json colors and styles now hot-reloads correctly without stale CSS artifacts.$schema URL in scaffolded projects — holocron create now writes "$schema": "https://holocron.so/docs.json" instead of the old unpkg URL that depended on npm publish timing and internal file paths.frontmatter-schema.json is generated alongside the config schema, describing all supported MDX frontmatter fields (title, description, icon, SEO meta, hidden, etc.). Add $schema: "https://holocron.so/frontmatter.json" to your MDX frontmatter for IDE autocomplete and validation.docs.json — the config JSON schema now references external enum schemas for lucide and Font Awesome icon names. IDEs that support $ref resolution fetch icon name lists on demand from holocron.so, giving you autocomplete for all 4,000+ supported icon names.cn() utility (clsx + tailwind-merge) — all components now use a shared cn() following the shadcn convention. This fixes a bug where passing className to <Logo> would completely replace the base sizing classes instead of merging with them. All components with className props now merge correctly via tailwind-merge.text prop on <Logo /> — pass <Logo text="My Docs" /> to render an AI-generated logo using that text, bypassing the site config logo entirely.muted-foreground for a cleaner active state.@holocron.so/vite, avoiding duplicate framework versions at runtime.<Logo /> MDX component — render the configured site logo directly inside docs content. It uses the same resolved light, dark, and generated logo variants as the navbar and footer.1<Logo />
pagesDir as a Tailwind source, so utility classes used in MDX content and imported docs components are included in the generated CSS.@fontsource-variable/jetbrains-mono, avoiding a third-party font request for the default monospace font.jsonc code blocks now reuse Prism's JSON grammar instead of rendering without highlighting.docs.jsonc — holocron create generates the starter config as JSONC, so new projects can keep comments and trailing commas in the same config file Holocron reads by default.1npx -y @holocron.so/cli create my-docs
overflow-x-hidden on chat text containers silently triggered vertical scrollbars due to CSS spec behavior. Content now grows naturally without nested scroll regions.--primary when colors.light is not set — if you only configure colors.primary without an explicit colors.light, the dark mode accent was identical to light mode, making links unreadable on dark backgrounds. Now auto-generates a lighter variant via color-mix(in oklch, <primary> 40%, white), roughly matching Tailwind's 200-scale lightness. If you explicitly set colors.light, your value is still used as-is.@cloudflare/vite-plugin was loaded via async import(), leaving an unresolved Promise in the plugins array. Spiceflow couldn't detect it, so noExternal: true was never set for SSR/RSC environments. Bare npm imports like isbot and history stayed external, crashing Dynamic Workers at runtime. The plugin is now imported synchronously and placed before spiceflow in the plugin array..slot-main img { height: auto !important } rule was overriding the explicit height: 100% set by the Image component for pixelated placeholder overlays. The global rule has been removed; height: auto and max-width: 100% are now applied only on specific image paths that need them.py-1.5 to py-1.dist/.holocron — when HOLOCRON_DEPLOY=1 is set, the Vite plugin now sets build.outDir to dist/.holocron instead of dist/, keeping deploy artifacts separate from normal platform-specific builds.holocron deploy now writes to dist/.holocron instead of dist/, keeping deploy artifacts isolated from platform-specific Vite builds (Cloudflare vs Node.js)--skip-build flag — builds always run during deploy. The separate output dir makes the flag unnecessaryholocron deploy now supports GitHub Actions OIDC authentication natively. No HOLOCRON_KEY secret needed; just set permissions: id-token: write in your workflow:123456permissions: id-token: write contents: read steps: - uses: actions/checkout@v4 - run: npx holocron deploy
spiceflow as a direct dependency — holocron create generates a leaner package.json. Spiceflow is a transitive dependency of @holocron.so/vite so users don't need to install it separately.holocron login, or GitHub Actions OIDC) instead of only the first two.@cloudflare/vite-plugin is now a direct dependency — users deploying to Cloudflare Workers no longer need to install it separately. It ships as a transitive dep of @holocron.so/vite.pagesDir is set — specs inside a custom pagesDir (e.g. pagesDir: "./src" with api.yaml in src/) now resolve correctly. Previously only the project root was probed, causing "OpenAPI spec not found" errors. The error message now lists all probed locations when neither has the file..env write path has been moved to the CLI deploy command. The Vite plugin no longer writes HOLOCRON_KEY or HOLOCRON_BRANCH to .env during build. Deploy authentication is now fully handled by holocron deploy.>=1.25.1-rsc.0 — fixes deploy failures where the SSR entry wasn't nested inside the RSC output directory, causing "deployment must include worker/ssr/index.js" errors.@fontsource-variable/inter instead of loading from third-party CDNs (rsms.me, Google Fonts). No external font requests on default config. Google Fonts preconnect tags only appear when you explicitly configure a custom Google font.permissions: id-token: write is set, the Vite plugin automatically mints a GitHub OIDC token and registers the deployment without any secret configuration:12345# No HOLOCRON_KEY secret needed permissions: id-token: write steps: - run: npx holocron deploy
#prism conditional import. SSR/RSC get a noop stub, then the client adds highlighting during hydration. Reduces SSR bundle by ~500KB and avoids the CJS global crash in Dynamic Workers.holocron-stable chunk in the RSC build. The entry chunk shrinks to ~20KB of virtual modules, while the stable chunk stays content-addressable across deploys for maximum KV dedup.listen() guard moved to renderChunk — the auto-start listen() call is now appended to the final RSC entry chunk after bundling, keeping import.meta.url correct even when code splitting moves framework code into dependency chunks.createRequire fix — createRequire(import.meta.url) calls in bundled CJS helpers are replaced at build time when HOLOCRON_DEPLOY=1, preventing module evaluation crashes in Dynamic Workers.HOLOCRON_DEPLOY=1 is set (by holocron deploy), @cloudflare/vite-plugin is auto-injected. Users don't need it in their vite.config.ts.### `config` now appear correctly in the sidebar and table of contents instead of showing as empty entries.app and default.yaml browser entry alias — the yaml package is aliased to its browser entry at build time, fixing resolution issues in the browser bundle.@cloudflare/vite-plugin optional peer dependency — added as optional so pnpm install doesn't warn when deploying to non-Cloudflare targets.holocron deploy command — build and deploy your docs site to holocron.so with a single command. Content-addressable uploads skip unchanged files across deploys:1holocron deploy
--branch flagholocron_url and holocron_deployment_id as GitHub Actions step outputsdocs.json and syncs it server-side--skip-build to deploy an existing dist/HOLOCRON_KEY env var or holocron login session123holocron login # logs into holocron.so holocron --api-url https://preview.holocron.so login # separate session holocron whoami # shows current server's user
--api-url flag — all commands now respect a top-level --api-url option instead of per-command -u/--url flags.create command UX — reuses existing login session instead of re-authenticating, appends -docs to the generated folder name, and skips the "start dev server?" prompt when dependencies weren't installed.holocron login fails fast with a clear message in non-interactive environments instead of hanging on stdin.decorativeLines in your config to "none", "lines", "dashed", or "lines-with-dots" (default):1{ "decorativeLines": "dashed" }
cache-control in page frontmatter to control HTTP caching headers per page:1234--- title: My Page cache-control: public, max-age=3600 ---
?raw imports in MDX modules — MDX files can now import raw text content from other files using Vite's ?raw query suffix.docs.jsonc config discovery — Holocron discovers config files in Mintlify-first order: docs.json, docs.jsonc, then holocron.jsonc. JSONC comments and trailing commas work without renaming your Mintlify config.holocron CLI bundled with vite package — installing @holocron.so/vite now also provides the holocron CLI command. No separate @holocron.so/cli install needed.HOLOCRON_KEY — deployment registration now only needs HOLOCRON_KEY (removed HOLOCRON_PROJECT). The project is resolved from the key server-side.listen() with import.meta.main — the built dist/rsc/index.js can now be imported by another framework (e.g. Next.js catch-all route) without starting a second server..sidebar-animate CSS class.@holocron.so/vite now exports config types and the JSON schema for programmatic config validation.0.21 to 0.16 oklch lightness for better contrast.holocron create command — scaffold a new docs project from a starter template with interactive setup. Optionally connects to holocron.so for AI chat and analytics:1holocron create my-docs --name "My Docs"
docs.json, MDX pages, vite.config.ts, and .env with your API key.projects list and projects create commands — manage projects for your org:12holocron projects create --name "My Docs" holocron projects list
HOLOCRON_PROJECT is no longer needed. Just set HOLOCRON_KEY:1holocron keys create --name production --project <projectId>
HOLOCRON_API_KEY to HOLOCRON_KEY — shorter env var name. Update your .env and CI secrets.docs.jsonc config support — the scaffold now outputs docs.json with a $schema URL pointing to the published npm package for IDE autocomplete.1234/.well-known/agent-skills/index.json /.well-known/agent-skills/{name}/SKILL.md /.well-known/skills/index.json /.well-known/skills/{name}/SKILL.md
/sitemap.xml, raw .md page URLs, and /docs.zip. Base-path deployments use relative URLs, and AI-user-agent redirects skip the well-known routes so JSON discovery stays machine-readable./llms.txt: every docs site now exposes a standard agent entry point that links to /docs.zip first, then individual raw markdown pages:1https://docs.example.com/llms.txt
.mdx and .md snippets, including files outside the docs root, and Holocron resolves them through the same safe-mdx rendering pipeline as normal pages:12345import Intro from './snippets/intro.mdx' import Readme from '../../README.md' <Intro /> <Readme />
<Visibility>: docs can render content only for humans or only for agent-facing markdown output:1234567<Visibility for="humans"> This appears on the website. </Visibility> <Visibility for="agents"> This appears in `.md` routes and docs.zip. </Visibility>
<details> support: copied docs that use native HTML details/summary blocks are normalized into Holocron's existing Expandable component.> [!NOTE], > [!TIP], and > [!WARNING] now render as Holocron callouts.Link where appropriate.mdx fences now reuse Prism's Markdown grammar so nested fenced code blocks inside MDX examples get syntax highlighting."openapi": "spec.yaml" to any navigation tab and Holocron processes the spec at build time, extracts all operations grouped by tag, and generates virtual pages with full endpoint documentation:12345678{ "navigation": { "tabs": [ { "tab": "Docs", "pages": ["index"] }, { "tab": "API Reference", "openapi": "openapi.yaml" } ] } }
openapiBase slug prefix — control the URL prefix for generated OpenAPI pages (defaults to "api"). Set to "" for no prefix:1{ "tab": "API", "openapi": "spec.yaml", "openapiBase": "reference" }
title but no H1 in the body get a heading injected automatically.text-sm instead of text-xs.bg-accent for cleaner tab panels.@tailwindcss/vite and tailwindcss as dependencies — were incorrectly in devDependencies causing missing styles in production.assistant.enabled config field to disable the AI chat widget.lucide:icon-name syntax to keep using Lucide icons.--prose-gap token.<Hero> → <Above> — update your MDX files if you use Hero directly.<Above> — components in this section now render correctly.<p> element.@types/node dependency.scrollbar-gutter: stable prevents layout shift.login, logout, whoami commands — authenticate with holocron.so via BetterAuth device flow. The CLI opens your browser, you approve, and the session token is saved locally:123holocron login holocron whoami holocron logout
keys create, keys list, keys delete commands — manage API keys for deploying docs sites. Keys are scoped to your org and can authenticate the hosted AI proxy via HOLOCRON_API_KEY:123holocron keys create --name production holocron keys list holocron keys delete <keyId>
spiceflow/client with types auto-derived from the website routes and safe error handling via errore patterns.docs.json (or holocron.jsonc) for navigation, tabs, groups, anchors, redirects, footer, banner, fonts, colors, SEO metadata, and favicon. Renders MDX pages with editorial typography, code blocks (Prism with all languages), callouts, tables, accordions, expandable fields, cards, steps, frames, panels, badges, tooltips, and more.navigation.tabs for switching sidebar content, navigation.versions for a version selector dropdown, and navigation.dropdowns (or navigation.products) for product-scoped navigation. Each switcher owns its own inner tab/group tree.123import { createHolocronApp } from '@holocron.so/vite/app' const holocronApp = await createHolocronApp() const app = new Spiceflow().use(holocronApp)
docs.json all hot-reload without a full page refresh./<page>.md URLs, redirects AI user-agents to .md endpoints, exposes /sitemap.xml with .md hints, and bundles all docs as /docs.zip.currentColor. Supports emoji, URL, and structured { name, library } icon objects.react-medium-image-zoom.@layer holocron — all styles wrapped in a CSS layer. Uses shadcn v2 CSS variable convention for full theme customization.:id), trailing wildcards (*). Query strings preserved. 301 status./docs.virtual:holocron-config and virtual:holocron-pages for programmatic control.<Aside> scoped to its section, <Aside full> spans multiple sections. RequestExample/ResponseExample auto-widen the sidebar.noindex meta.