Hanzo
Hanzo Skills Reference

Hanzo Docs - Multi-Brand Documentation Platform

Hanzo Docs is the multi-brand documentation platform behind docs.hanzo.ai — a pnpm/turbo monorepo of 35 packages covering MDX processing, UI, search, i18n, and OpenAPI reference generation. Serves Hanzo, Lux, Zoo, and Zen documentation with per-brand theming.

Overview

Hanzo Docs is the multi-brand documentation platform behind docs.hanzo.ai. It is a pnpm/turbo monorepo of 35 packages — MDX processing, two UI component sets (Radix and headless), full-text search, i18n, and reference generators for OpenAPI and TypeScript — composed into Next.js documentation sites. The same packages serve Hanzo, Lux, Zoo, and Zen documentation with per-brand theming.

NOTE: This is a documentation framework, not a plain Next.js MDX site. Content enters a build through exactly one of three routes: authored MDX in content/docs/, generated reference synced from hanzoai/openapi, or ported upstream OSS docs mirrored with attribution.

Why Hanzo Docs?

  • Composable framework: 35 packages you compose, not a fixed template
  • Multi-brand: 4 brands from one codebase (Hanzo, Lux, Zoo, Zen)
  • MDX-powered: Markdown with React components (live code, diagrams)
  • Auto-generated API docs: From OpenAPI spec
  • Full-text search: Across all documentation sites
  • Versioned: Documentation tied to SDK versions

When to use

  • Writing or updating documentation for any Hanzo brand
  • Adding API reference pages
  • Creating tutorials or guides
  • Modifying the documentation platform itself
  • Adding a new brand/product documentation site

Quick reference

ItemValue
Repogithub.com/hanzo-docs/docs (hanzoai/docs redirects here)
FrameworkNext.js 16 with MDX, React 19, Tailwind 4
Packages35
Apps21
Devpnpm dev
Buildpnpm build
Port3000 (dev)

Brand Sites

BrandURLBuild
Hanzodocs.hanzo.aiapps/docs/ in this repo — the hub
Luxdocs.lux.networkseparate deployment of the @hanzo/docs-* packages
Zoodocs.zoo.ngoseparate deployment of the @hanzo/docs-* packages
Zendocs.zenlm.orgseparate deployment of the @hanzo/docs-* packages

A brand site is a standalone deployment only when it needs independent versioning and its own audience. Otherwise it is a section of the hub — the hub links out to standalone sites, it never copies their content.

Project Structure

docs/
├── apps/                    # 21 apps
│   ├── docs/                # docs.hanzo.ai — THE hub, one build
│   │   └── content/docs/    # authored MDX + generated + ported sections
│   └── ...                  # legacy per-product sites, migrating into the hub
├── packages/                # 35 packages, published as @hanzo/docs-*
│   ├── core/                # source loading, search, i18n
│   ├── mdx/                 # MDX processing, collections
│   ├── radix-ui/            # @hanzo/docs-ui — full UI with Radix primitives
│   ├── base-ui/             # @hanzo/docs-base-ui — headless UI
│   ├── openapi/             # OpenAPI → reference pages
│   ├── typescript/          # auto type tables from source
│   ├── twoslash/            # TypeScript hints in code blocks
│   ├── cli/                 # scaffolding & customization
│   └── ...                  # tailwind, story, obsidian, python, epub, ...
├── examples/                # runnable starters (Next.js, Astro, React Router, ...)
├── pnpm-workspace.yaml
└── package.json

Development

git clone https://github.com/hanzo-docs/docs.git
cd docs
pnpm install

# Dev the hub (docs.hanzo.ai)
pnpm dev

# Dev a single package
pnpm dev --filter @hanzo/docs-ui

# Build for production
pnpm build

# Lint MDX
pnpm lint

# Check broken links
pnpm check-links

Writing Documentation

MDX Page

---
title: "Chat Completions"
description: "Create chat completions with the Hanzo API"
---

import { CodeBlock, ApiEndpoint, Callout, SDKTabs } from "@hanzo/docs-components"

# Chat Completions

<Callout type="info">
  This endpoint is OpenAI-compatible.
</Callout>

<ApiEndpoint method="POST" path="/v1/chat/completions" />

## Request

<SDKTabs>
  <SDKTabs.Tab lang="python" title="Python">
    {`from hanzoai import Hanzo
client = Hanzo()
response = client.chat.completions.create(
    model="zen-70b",
    messages=[{"role": "user", "content": "Hello"}],
)`}
  </SDKTabs.Tab>
  <SDKTabs.Tab lang="typescript" title="TypeScript">
    {`import Hanzo from "hanzoai"
const client = new Hanzo()
const response = await client.chat.completions.create({
    model: "zen-70b",
    messages: [{ role: "user", content: "Hello" }],
})`}
  </SDKTabs.Tab>
</SDKTabs>

Adding a Section

The default is a section of the hub, not a new site:

# 1. Add MDX under the hub's content tree
mkdir apps/docs/content/docs/<section>

# 2. Register it in apps/docs/content/docs/meta.json under a movement

# 3. Team-owned sections live in their own hanzo-docs/<team> content repo,
#    mounted here as a git submodule at content/docs/<team>/

Spin up a standalone site only when a section needs independent versioning, its own release cadence, and its own audience.

Redirects

Service-specific docs have vanity URLs:

  • orm.hanzo.aihanzo.ai/docs/services/orm
  • hanzo.ai/docs/api → Full API reference
  • hanzo.ai/docs/sdks/python → Python SDK guide
  • hanzo/python-sdk.md - Python SDK (documented here)
  • hanzo/js-sdk.md - JS SDK (documented here)
  • hanzo/hanzo-brand.md - Brand guidelines for docs styling
  • hanzo/hanzo-cloud.md - Cloud dashboard (links to docs)

How is this guide?

On this page