Files
zeekayandHanzo Dev 0536073e63 catalog: one host, one answer — the api.hanzo.ai mirror and its auth fork are gone
This worker served two hosts and gave one of them two different documents.

On catalog.hanzo.ai it is a public read-only edge cache, which is what it is for.
On api.hanzo.ai it was a second implementation of paths the cloud origin owns and
publishes, reached by an ingress carve of /v1/models* + /v1/pricing* — so all 23
of apps/pricing's pricing routes were described and unreachable (14 of the 21
literal GETs answered this worker's 404: the registry holds 10 addresses, the
document holds 23, and they overlap in 7), and GET/POST /v1/models/{model}/access
were uncallable in production — 404 on GET, 405 on POST, since this worker allows
only GET, HEAD, OPTIONS.

`authedOrigin` was the shape of the problem, not a feature. A request WITH a token
was proxied to api.cloud.hanzo.ai and one WITHOUT got the marketing catalog: one
URL, two documents, chosen by a header no OpenAPI document can express and no SDK
can predict — plus a second API host to keep alive. Both are deleted with the
ingress carve (hanzoai/universe fd18448).

The test that pinned the fork is replaced by one that pins its absence: a token
changes nothing here, and no upstream is dialled.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-01 10:59:16 -07:00

980 B

Hanzo Public Catalog

Cloudflare edge-cached, daily-refreshed public read-only catalog for Hanzo. Serves the model + pricing catalog to public consumers (marketing site, pre-login model browsing, docs) without a token, so api.hanzo.ai can stay fully authenticated.

Live: https://catalog.hanzo.ai

curl https://catalog.hanzo.ai/v1/models    # OpenAI-compatible model catalog
curl https://catalog.hanzo.ai/v1/pricing   # full pricing catalog
curl https://catalog.hanzo.ai/v1/plans     # subscription / cloud plans
curl https://catalog.hanzo.ai/             # self-describing index

This is the only host it serves. api.hanzo.ai is the authenticated API and the cloud origin owns every path on it — including /v1/models and /v1/pricing/*, which this worker used to intercept at the ingress. See LLM.md for what that cost.

See LLM.md for architecture, the resource registry, routing, and how to add a new cached resource.