3282 Commits
Author SHA1 Message Date
zeekay 2775f0c778 docs: explain native recursive learning, Kai hooks and research rollout
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / review (push) Successful in 2m57s
Hanzo CI/CD / cicd (push) Skipped
Hanzo CI/CD / test-amd64 (push) Failing after 5m49s
CI/CD / cicd (push) Failing after 5m52s
2026-10-24 20:27:52 -07:00
zeekay 07c3ab898a feat(pricing): update catalogue to live 561 models (500+)
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / review (push) Successful in 2m31s
Hanzo CI/CD / test-amd64 (push) Failing after 7m45s
Hanzo CI/CD / cicd (push) Skipped
CI/CD / cicd (push) Failing after 7m46s
2026-10-23 17:51:53 -07:00
zeekay 1077e3bab8 docs(cli): document unified deploy shorthands for sites and apps 2026-10-23 17:51:53 -07:00
zeekay b10b00afb9 docs(models): add Creative AI documentation for Koma, Iro, Mori, Oto, Koe, and Uta 2026-10-16 19:59:10 -07:00
zeekay cd39baedd0 feat(zen-models): add creative open foundations and proprietary research models 2026-10-16 19:55:14 -07:00
zeekay 02581149b8 fix(docs): canonicalize POST /v1/decisions with cache_state in early access 2026-10-16 19:41:43 -07:00
zeekay e3059ec876 docs(decisions): add Kai-1.7 Early Access guide and update decision models docs 2026-10-16 19:39:12 -07:00
zeekay 26f3b9d410 docs: link to open source examples and recipes across kai, zen, enso, kata, gen, dev 2026-10-16 19:05:29 -07:00
zeekay 87d9f2eaa6 docs: update Guard row to zooai/lifeguard with redirect from zoo-labs/lifeguard 2026-10-16 19:04:59 -07:00
zeekay b47b20bddb docs: remove convaiinnovations/laya references from model registry index 2026-10-16 19:04:59 -07:00
zeekay 331b932086 docs: add Hugging Face Hub model registry and interactive spaces specification 2026-10-16 19:04:59 -07:00
zeekay 0b3cf52a4b docs(cookbook): add modular decision recipes guide linking to source code and docs 2026-10-16 19:04:59 -07:00
zeekay 1f8544151c Enso: an enso-* answer names the Hanzo model that answered in X-Hanzo-Served, and X-Routed-Model is what auto resolved to
The page put X-Routed-Model on every Enso answer. The gateway sets it only
when it resolves auto (or zen-router) to a model; an enso-* id keeps its own
name in the body, and the gateway names the Hanzo model that answered in
X-Hanzo-Served, which is what the live answer carries.
2026-10-16 19:04:59 -07:00
zooqueenandHanzo Dev b2afc1c028 testnet and devnet: devnet signs in at id-dev.hanzo.ai with accounts of its own, its web app is app-dev.hanzo.ai, and the sandbox cards decline on purpose
Co-authored-by: Hanzo Dev <[email protected]>
2026-10-16 11:26:36 -07:00
zeekay e771d8e19b testnet: the sandboxes take the account token and no API key
Keys resolve through IAM's keys endpoint with the console's client, which
only mainnet's cloud holds; on testnet and devnet a key authenticates
nobody.
2026-10-16 05:21:55 -07:00
zeekay abe7b6fb18 testnet: authenticate with the account token, not a production key
API keys live in each network's own books, so an hk- key from
production is unknown on testnet and devnet; the hanzo.id token is
accepted by all three.
2026-10-16 05:20:47 -07:00
zeekay 8c74d8f36a Testnet and devnet: the two Square-sandbox copies of the cloud
api-test.hanzo.ai runs production's release, api-dev.hanzo.ai the dev
branch; both take only Square sandbox cards, route free models, and keep
their own books under one Hanzo identity. The page says which to pick,
how to point a client at one, and the sandbox cards to pay with.
2026-10-16 03:36:26 -07:00
zeekay 314f0b49cf Rail: send Help to hanzo.ai/support
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 14m46s
Hanzo CI/CD / cicd (push) Successful in 1h3m6s
CI/CD / cicd (push) Successful in 1h17m58s
No /docs/support page has ever existed, so every page linked a 404.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-15 14:52:14 -07:00
zeekay 0488e0964c Pricing: take the Enso tiers from /v1/models
The section rendered /v1/pricing's frozen Enso rows: no enso-pro, enso
as a paid tier, a fan-out description of enso-ultra, and GPQA scores
copied from hanzo.ai/enso. Read the ids and rates from the catalogue,
keep them in the snapshot for an offline build, and link the Enso page
for cache rates and chains.

Print a rate as exactly as the gateway states it, so enso-ultra reads
$5.236 and not $5.24. The free-model line no longer holds two dollar
signs in one paragraph, which remark-math typeset as an equation.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-15 14:52:14 -07:00
zeekay ff736ace53 Point stale Enso tier lists at the Enso page
Chat, the glossary, the models index, the workspace sheet and the
coding guides named enso as a paid tier and enso-flash at a 262K
window, and none named enso-pro. Name enso-auto and the three paid
tiers, and link the Enso page for prices. The workspace sheet's
escalation and savings figures were computed on the old prices; they
go.

The Claude Code guide and settings example fill the Haiku, Sonnet and
Opus slots the way hanzo --claude --cloud does.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-15 14:52:14 -07:00
zeekay bc7d42e2b9 Enso: price the tiers and name what serves them
The page listed reasoning settings and called enso-pro the same path as
enso. Lead with the tiers production serves: the job each is for, its
input, output and cache rates beside the Claude tiers it stands in for,
the chain behind it, the depth lift that serves enso-auto, Claude
Code's slots, and one agent turn priced with cached tokens. The router
keeps its sections below.

The chains follow the Artificial Analysis Coding Agent Index (v1.5),
labelled as third-party. X-Hanzo-Served names the Enso id, not the
model behind it, so the page says that.

The Enso paper moved to a private repository; link the public Hanzo
Router paper in its place, here and on Smart routing.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-15 14:52:14 -07:00
zeekay 748f18eedf Coding tools: link the measured runs through hanzo.ai/benchmarks
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 14m46s
Hanzo CI/CD / cicd (push) Successful in 44m36s
CI/CD / cicd (push) Successful in 59m26s
The pages name only endpoints the API document has, and /v1/research is
not in it, so the build refused the five run links. hanzo.ai/benchmarks
draws the same runs live.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-15 07:50:04 -07:00
zeekay b602b68bbe Coding tools: desktop apps and editors, the add-once toolset, Windows, measured speed
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / cicd (push) Failing after 5m19s
Hanzo CI/CD / test-amd64 (push) Successful in 15m52s
CI/CD / cicd (push) Failing after 21m16s
A page for Claude Desktop, Cursor, VS Code, Windsurf, Zed, JetBrains and
the Codex, Claude Code and Continue apps: hanzo-mcp as an MCP server, and
the app's own model on api.hanzo.ai with an OpenAI- or Anthropic-
compatible setting. Cursor, Grok, Antigravity and Gemini take the toolset
once in their own configuration. Windows installs through npm and
`hanzo upgrade`. The coding page states the measured runs, each linked.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-15 07:25:07 -07:00
zeekay f5db8298f8 Coding agents: hanzo upgrade runs each agent's own updater, uv for Aider and OpenHands
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 13m15s
Hanzo CI/CD / cicd (push) Successful in 1h14m14s
CI/CD / cicd (push) Successful in 1h27m34s
Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-14 23:26:58 -07:00
zeekay 200e317789 Coding agents: Cline and Oh My Pi on Hanzo's models with the toolset, Open Interpreter, and what a linked run prints
Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-14 23:20:19 -07:00
zeekay 11ea731bfb Migrate from Anthropic, Gemini, OpenRouter and any coding agent; OpenHands; benchmarks linked through hanzo.ai
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 16m11s
Hanzo CI/CD / cicd (push) Successful in 1h14m39s
CI/CD / cicd (push) Successful in 1h30m56s
Four migration guides: the Anthropic Messages API at /v1/messages with a
bearer key, Gemini models on the OpenAI-compatible routes as google/*,
OpenRouter's provider/model names at api.hanzo.ai/v1 with Enso to pick,
and keeping whatever coding agent you run under `hanzo --<agent>`. Each
was checked against the gateway. OpenHands joins the agent pages. The
coding hub links its measurements through hanzo.ai/benchmarks, since the
research API is not in the document the endpoint gate reads.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-14 22:08:18 -07:00
zeekay 3ed2d6a326 Coding tools: every agent hanzo runs, how to sign up and pay, and what Enso and Kai take off its plan
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 12m53s
Hanzo CI/CD / cicd (push) Failing after 5m34s
CI/CD / cicd (push) Failing after 18m33s
The coding pages taught `hanzo code claude` and `--no-route`, which the
CLI retired, and named five agents. They now follow CLI 8.5.703:
`hanzo --<agent>` for Claude Code, Codex, Cursor, Antigravity, Gemini,
Qwen, OpenCode, Kilo, Crush, Goose, Aider, Hermes, Pi, Copilot, Amp,
Grok Build, Cline, Continue, Kimi, Oh My Pi, Letta and Kode, each with
how the Hanzo toolset reaches it and whether --cloud moves its model
calls onto Hanzo. The hub page covers signing up through hanzo.id,
plans and payment, handing work to Enso and Kai, reading the session
summary, `hanzo upgrade`, and the research runs behind every number.
The quickstart installs from hanzo.sh first and links the guide, and the
index lists it.

Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
2026-10-14 21:43:19 -07:00
zeekay e333b992c9 Kai docs name kai-1.2, its reach and its noul answer
Production serves kai-1.2 (kai-1 with arm Z2's yes/no reader) on v0.4.5.
Kai reads 32,768 tokens, marks a read past its trained 1,024 extrapolated,
and refuses only past 32,768. A noul answer is its probability alone, and
kai-1.2 does not read a noul's criteria. The kai-1 harness and the v0.3.14
answers stay, labelled as kai-1's. Latency is production's: 38 ms p50 for
one yes/no question, 13.9 s for 100.
2026-10-14 17:29:56 -07:00
zeekay 24f459d587 Give the esign, helpdesk and zen-dub pages style objects, not strings
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 5m8s
Hanzo CI/CD / cicd (push) Successful in 30m34s
CI/CD / cicd (push) Successful in 35m48s
Once these pages compile they are rendered, and React refuses a string
style prop: the prerender of /docs/projects/hanzoai/esign stopped the
export. Each style attribute is now the object form of the same
declarations.
2026-10-12 06:47:02 -07:00
zeekay 8afdb7da83 Make the 13 ported project pages parse as MDX
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 8m55s
Hanzo CI/CD / cicd (push) Failing after 24m44s
CI/CD / cicd (push) Failing after 33m45s
The build skips a page its MDX fails to compile and still exits 0, so the
s3, kv, ci, ml, datastore and nine more project pages were not on the site.
Void tags (img, source, br) are self-closed, unquoted attribute values quoted,
HTML comments written as MDX comments, a stray </div> and an unclosed
<details> dropped, and the lowercase {name} placeholders in datastore's JSX
spaced so the project loader's escape leaves them alone.
2026-10-12 01:03:35 -07:00
zeekay 500e8d1197 Guides for Claude Code, Codex, Cursor and Antigravity through hanzo code
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 20m9s
Hanzo CI/CD / cicd (push) Successful in 54m8s
CI/CD / cicd (push) Successful in 1h14m26s
One page per tool: install, sign in, what the wrapper routes and what it does
not (Cursor and Antigravity keep their own backend and are neither routed nor
metered), how to read a session's usage and savings, and how to keep the tool's
own plan with --no-route. coding.mdx now lists all five agents.
2026-10-11 22:49:25 -07:00
zeekay 56bed2d117 Zen: zen-embedding-2, and whose model it is
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 32m47s
Hanzo CI/CD / cicd (push) Successful in 48m1s
CI/CD / cicd (push) Successful in 1h20m51s
zen-embedding-2 serves on api.hanzo.ai: text in 768 dimensions, shorter
by `dimensions`, prefixes in the text, its own vector space. It is
EmbeddingGemma 2 by Google DeepMind (Apache-2.0), which the License &
attribution section names and zen.upstream keeps out of the rest.

Claude-Session: https://claude.ai/code/session_01SCPMGSQsLNF2YtHFL4bwyp
2026-10-08 22:24:10 -07:00
zeekay cd8f216ab9 Build the reference from cloud v8.5.647, which serves keys/{id}
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 4m0s
Hanzo CI/CD / cicd (push) Failing after 7m35s
CI/CD / cicd (push) Failing after 11m40s
The API keys page teaches PATCH and DELETE /v1/account/keys/KEY_ID, and
the pinned document (ec340375a) has no /v1/account/keys/{id}, so the
endpoint guard stopped every publish since that page landed. Cloud
e2d5eae3c (v8.5.647) serves it.

That document states the key classes on the `type` field a caller sends
and reads back, two levels under the schema, and the key-type reader
walked six deep and stopped at the schema. It walks eight now, enough to
reach a field's own sentence.

It also serves `train`, which files under Intelligence beside `ml`.
2026-10-05 02:18:44 -07:00
zeekay 2e28c2ebdc Draw every code block in the Hanzo code theme
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 11m54s
Hanzo CI/CD / cicd (push) Failing after 9m5s
CI/CD / cicd (push) Failing after 21m3s
The theme is codeTheme from @hanzo/ui/core: Dracula on dark, GitHub
Light on light, the one every Hanzo surface draws. lib/shiki.ts and each
app's source.config.ts import it rather than naming a theme, so vesper
and github-dark are gone. @hanzo/ui moves to 8.27.83, the first release
that carries it.

A block's code area paints the theme's own ground and ink from the pre
shiki wrote, #282a36 in the dark, rather than the site's panel.

The docs home drew its hero and its eight domain snippets as plain text,
and so did the models page's fallback request. The hero highlights its
three doors in a server part (components/hero.tsx); the snippets and the
fallback are Example props in the MDX. No highlighter reaches the
browser.
2026-10-04 23:41:47 -07:00
zeekay 42a9666f68 API keys: who edits a key, and what a limited key cannot do 2026-10-04 22:21:39 -07:00
zeekay 853a4d1981 API keys: many keys, each its own permissions, budget, rate and expiry
A person holds as many keys as they like and creating one never touches
another. Document the new shape of /v1/account/keys (PATCH to edit,
DELETE /{id} to revoke one), the product/read permission entries and
read-only keys, budgets, rates and expiry, what an org admin sees, and
the corrected CSRF address and cache window.
2026-10-04 21:26:42 -07:00
zooqueenandHanzo Dev 0bd96670e3 Document kai-1, the build /v1/decisions serves
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 16m4s
Hanzo CI/CD / cicd (push) Successful in 14m45s
CI/CD / cicd (push) Successful in 30m54s
models/kai: the results are kai-1's on the frozen harness, with
calibration error beside accuracy, the device the runs were measured
on, where Kai is behind, and the cardinality suite. The held-out
comparison named stage a5 only; kai-1 has not been run on held-out
rows, and the page says so. The architecture is described as built:
a factorized two-tower reader with a cross-attention head, and a
retrieval dual encoder above 160 options; score is a choice over the
levels, not an ordinal link. The paper link pointed at no public page.

decisions: 1 to 100 questions; a question and its state read 1,024
tokens together; checkpoint kai-1 and the routing fields v0.3.14 sends;
a noul's confidence; unrounded probabilities; Jev at $0.042 per million
input tokens; the errors with v0.3.14's statuses and messages.

guides/migrate/jev: the same limits; an over-long state is refused, not
truncated; options read to 512 tokens; Kai counts the request's text
once; kai-1's figures and an answer from its runtime; no latency until
one of the served build is published; Jev through Hanzo can answer 503
upstream_unavailable.

Cookbook: the recipes call api.hanzo.ai with a key, and the answers
they quote are kai-1's. models/index: Kai is served by API only.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 14:14:31 -07:00
zooqueenandHanzo Dev 7f3cde43cd Say Enso routes, Kai decides, Zen reasons, in that order
Zen's verb is reasons, not generates or writes, and the trio reads in the
order a request meets it. The docs hero, the Models section's description,
its role table and its sidebar order, and the cookbook now say so, and the
Zen page drops "generative" from what the family is.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 13:49:57 -07:00
zooqueenandHanzo Dev 65e563d218 Lead the docs landing with Enso, Kai, Zen and the whole catalogue
The landing opened on a pill and the CLI install; the three model families
and the catalogue they sit in were four screens down. They now follow the
headline: Enso routes, Kai decides, Zen reasons, each with its docs page
and its hanzo.ai page, and beneath them one full-width banner with the
model count, the maker count and a link to /docs/models.

The three cards are one row when three fit at 220px and one column
otherwise, never two and an orphan: the track floor is a third of the row
above 692px and the whole row below it, so the width alone picks.

Nothing on them is typed. gen-pricing-page already reads GET /v1/models for
the rates; it now also records the distinct ids, the distinct makers and
Kai's rate under `catalogue` in openapi-specs/pricing.json, and keeps the
committed copy when the catalogue does not answer. The count is floored to
the hundred so it stays true between builds, and the two "Over 400 models"
lines on the page read the same figure.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 13:49:57 -07:00
zooqueenandHanzo Dev 177618d7a0 Dev on hanzo.ai: runs, templates, projects, your own machines, and what is paid
One page for Hanzo Dev in the browser, first in the Dev section: the composer's
choices, Templates (filters, the sheet, the copy published at <project>.hanzo.app,
a failed build's reason with Publish again and Fix it with Dev), Machines (install,
hanzo login, hanzo beat free, hanzo link for a shared shell paid from the balance,
and runs only on a machine whose runner claims them), and what needs a plan or credit.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 10:17:22 -07:00
zooqueenandHanzo Dev 777d789c93 Hold the docs tests to the checkout CI makes: studio/ skipped, a minute per test
Hanzo CI/CD / test (linux-amd64) (push) Skipped
Hanzo CI/CD / test (linux-arm64) (push) Skipped
Hanzo CI/CD / test-advisory (push) Skipped
Hanzo CI/CD / test-amd64 (push) Successful in 7m17s
Hanzo CI/CD / cicd (push) Successful in 27m37s
CI/CD / cicd (push) Successful in 34m59s
On the forge runner the checkout carries the hanzo-docs/studio-docs submodule,
whose pages name its own /api/ paths, so no-api-prefix.test skips studio/ as it
skips the projects/ mirror. The runner's sandbox parses the API document slower
than vitest's 5s default, so the docs project allows a minute per test.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 09:31:33 -07:00
zooqueenandHanzo Dev 92728e4e43 Say the confidential-computing workloads are compatible with HIPAA, GDPR and SOC 2
hanzoai/ci's certclaims check refuses a framework named beside a certificate word
(attestation, here) unless the line says compatible with, compliant with or built to.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 09:11:00 -07:00
zooqueenandHanzo Dev 6f959d609f Take out the guest key snippet: api.hanzo.ai refuses the key and lists no zen-free
420b65d80 put a curl call on the landing hero, /docs, /docs/quickstart and
/docs/api-keys that sends `Authorization: Bearer guest_temp_key` with model
`zen-free`. /v1/chat/completions answers that key 401, and /v1/models lists no
`zen-free`. apps/docs/scripts/quickstart.test.ts refuses a first-call page that
names a model the catalogue does not list, so the docs test failed on it.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-04 09:10:19 -07:00
zooqueenandHanzo Dev 420b65d80a feat(docs): provide instant developer guest API key curl snippet
Co-authored-by: Hanzo Dev <[email protected]>
2026-10-01 13:46:58 -07:00
zeekay 3b77105813 The docs read /v1/models rates from its per-million keys and say that pricing.prompt and completion are per token. 2026-09-30 14:55:49 -07:00
zeekay d4e0db1673 feat(analytics): docs send through @hanzo/event and the tag manager; the GA4, Pixel, Insights and analytics scripts leave every layout; the one consent banner 2026-09-30 07:15:43 -07:00
zeekay 07d81d0dcf File environment under Intelligence, beside agent 2026-09-30 06:53:49 -07:00
zeekay f1d620130c Make the docs CTA "Try Hanzo", to hanzo.ai/login
Every conversion CTA reads "Try Hanzo" and goes to sign-in; payment comes
after it. The landing's close now does that in place of "Choose plan".

It no longer fires plan_clicked: it is not a plan choice, and the page view
and the $click that <Hanzo> autocaptures already record it. That leaves the
EVENTS re-export in @hanzo/docs-analytics with no caller, so it goes too.
2026-09-30 02:38:21 -07:00
zeekay a38d96c672 Load no vendor tag on docs.hanzo.ai
GA4 and the Meta Pixel went into the root layout's <head> and into
@hanzo/docs-analytics, loaded on every page before any consent was asked,
beside a second and third Hanzo stream with their own keys. A vendor tag
loads only through the @hanzo/event tag manager, after consent, so both go,
and the docs report on the one @hanzo/event stream again.

This reverts 81733ecc4a and 6f0e2b2533.
2026-09-30 02:38:17 -07:00
zeekay 33320dc6cf Render the reference from cloud ec340375a, the customer contract without the operator's operations 2026-09-30 02:23:01 -07:00