Across the cloud, insights, bot, engine, ml and router sites the copy read
"SOC 2 compliance", "SOC 2 ready" and "HIPAA / SOC2 ready"; the vault skill
page and its card led with "PCI DSS Level 1" and "PCI DSS-compliant". Hanzo
holds none of these — no report, no auditor, no attestation letter — and
hanzo.ai/trust already says so, so the docs were contradicting our own trust
page. Vault's architecture is the part that was true and it stays: card
tokenization inside an isolated cardholder data environment, which is what
keeps a customer's PCI scope small. The 99.9% uptime SLA on the cloud stat
row goes too; it was a guarantee with no contract under it.
Co-authored-by: Hanzo Dev <[email protected]>
Zen and enso are Hanzo's own families. Several surfaces described them by
whose API they imitate, or filed them under a competitor's namespace.
- zen-docs embeddings: drop the "Upstream: text-embedding-3-large by OpenAI"
row that presented zen-embedding as a rebadge; correct dimensions to the
1024 the gateway actually returns.
- zen-docs pricing: Zen was priced as "3x the upstream Fireworks inference
cost", with a claim that every model page discloses its upstream model and
provider. Rates are per model; state that instead. Same framing removed
from platform pricing.
- bot-docs gateway config: "anthropic/zen5" -> "hanzo/zen5"; hanzo is the
provider id Bot actually uses (src/commerce/tier-model.ts).
- zen-docs: curl and the Hanzo SDKs lead; upstream-SDK samples move below a
labelled wire-compatibility section. Anthropic Messages page keeps its
substance, loses the drop-in framing.
- Marketing sites: replace provider/model resell counts used as positioning
with what the product is. Our families lead the model grid; third-party
rows stay, since those integrations are real.
- Neutral placeholder for a proxy key in our own samples.
Provider lists Bot genuinely connects to (LM Studio, vLLM, LiteLLM) are left
alone, as is the zen5 expert-pool table, which is real architecture lineage.
Co-authored-by: Hanzo Dev <[email protected]>
Two independent defects made every documented 'first API call' fail:
1. FICTIONAL MODEL IDS. `zen-omni` and `zen-coder` appear ZERO times in the
live catalog (api.hanzo.ai/v1/models, 440 models). Every SDK sample -
python, typescript, go, cpp, swift, kotlin - told the customer to call a
model that does not exist, so even a correct request 400s. Corrected to the
real ids: zen5 and zen5-coder.
2. DEAD HOST + STALE PINNED MODEL. llm.hanzo.ai is retired and 301s (a POST
returns the literal string 'Permanent Redirect', not a completion), and
`claude-sonnet-4-5-20250929` is long superseded. Both removed: the host is
gone from customer-facing docs entirely rather than documented as retired,
and pinned upstream ids give way to our own current zen5.
50 files. Verified against the live catalog, not assumed.
The <script src="analytics.hanzo.ai/script.js" data-website-id> tag is a shim:
it talks to a read LENS instead of the one ingestion front door, so a docs site
could only ever produce pageviews — no errors, no product events, and a separate
per-site id to keep in sync. Replaced across all 12 sites with @hanzo/event
POSTing api.hanzo.ai/v1/event, which Cloud fans server-side into the web
(analytics), product (insights) and error (sentry) lenses. `product` is the only
per-site knob; Cloud resolves the tenant, so no site carries an id any more.
One implementation, not twelve: packages/analytics (@hanzo/docs-analytics)
mounts the provider, adds a pageview per client-side route change, and honors
Global Privacy Control / Do-Not-Track by disabling the client outright. The main
hub's inline Insights snippet goes too — that lens is already fed by the one
stream.
Co-authored-by: Hanzo Dev <[email protected]>
Our own docs branded a Hanzo product as an 'AI Gateway' (/docs/llm title+H1,
skills index, and ~90 files across docs/bot-docs/cloud). Renamed to 'AI API'
to match hanzo.ai/app/bot. Third-party product names are facts about someone
else's product and are NOT rewritten: 'Vercel AI Gateway' restored verbatim
(same carve-out as LiteLLM); HanzoBot's own 'Gateway' transport untouched.
Pins ghcr.io/hanzoai/static 0.4.1 -> v0.5.1: only v0.5.1 carries 79ac4f9
(serve directory index in place), so docs was the last host 301ing /docs/x/
-> /docs/x/index.html, which poisons Next's router into prefetching
.../index.html/__next._tree.txt — 8 failed requests per page load.
Purge "LLM gateway" / "unified proxy" / vs-LiteLLM framing across all
Hanzo-authored docs, marketing, and skill copy per SDK-ARCHITECTURE brand
rules. Hanzo is a full AI SDK / AI cloud, not a proxy.
- "LLM Gateway" → "AI Gateway"; hero/positioning copy → "one API for every
model". "unified proxy"/"unified gateway" removed from Hanzo copy.
- Drop "Fork of LiteLLM" / LiteLLM-as-backbone positioning. Keep genuine
third-party LiteLLM integration docs, the bot's own WebSocket Gateway
protocol, and functional config keys (litellm_params, LITELLM_MASTER_KEY)
intact.
- SDK links → canonical homes: zen-docs API table (go get
github.com/hanzo-go/sdk, pip install hanzo, npm i @hanzo/ai, cargo add
hanzo); org preset SDK entries point js-sdk→hanzo-js/sdk,
python-sdk→hanzoai/python-sdk (flagship).
Generated/synced trees (apps/spec/content/docs HIP corpus and
projects/hanzoai/bot, both gitignored) are out of this repo's committable
scope — their brand fix belongs in the source repos.
Co-authored-by: Hanzo Dev <[email protected]>