Files
hanzo.network/LLM.md
T
zeekayandHanzo Dev 1c0c67e696 serve hanzo.network from hanzoai/static, not Pages or CF Pages
.github/workflows now holds sync.yml alone, carrying refs to git.hanzo.ai; every
build runs natively there from .hanzo/workflows.

.hanzo/workflows/deploy.yml publishes ghcr.io/hanzoai/hanzo-network:<sha> and does
not deploy — the operator CR in hanzoai/universe names which tag is live.

The GitHub Pages workflow it replaces is dead, not moved: Pages did not survive
the hanzoai -> hanzo-apps transfer, so the repo's pages API is 404 and every run
since 2026-03-04 ends "Failed to create deployment (status: 404) … Ensure GitHub
Pages has been enabled". Relocating a guaranteed 404 to the forge buys nothing.
public/CNAME goes with it: that file is a Pages control file, and neither
hanzoai/static nor Cloudflare reads it.

The live host is a Cloudflare Pages project built through CF's Git integration,
outside every workflow file here — nothing in this commit changes what serves
today.

The Dockerfile ends FROM ghcr.io/hanzoai/static:v0.5.1 with dist at /public and
runs it with -spa: 98 BrowserRouter routes plus the app's own path="*" NotFound
need the fallback, or every deep link 404s. Measured against the image: -spa
returns 200 for /account/billing, and without it a missing path 404s.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-27 08:46:57 -07:00

4.0 KiB

hanzo.network

Marketing site for Hanzo Network, the decentralized AI compute marketplace (hanzo.network). Provides the public-facing site for distributed GPU compute, AI inference, and provider marketplace features.

Stack

  • React 18 + TypeScript (Vite 5, SWC)
  • React Router v6 (client-side routing)
  • Tailwind CSS v4 + Radix UI primitives
  • Framer Motion (animations), Three.js (3D)

Structure

src/
  App.tsx              # Root router -- NetworkLanding as homepage
  pages/
    NetworkLanding.tsx  # Homepage (/) -- GPU compute marketplace landing
    ...                 # Shared pages (same as other Hanzo sites)
  components/          # Shared component library

Key Routes

  • / -- NetworkLanding (decentralized compute: GPU marketplace, pricing, provider network)
  • All other routes -- Shared product/marketing/account pages from common codebase

Commands

pnpm install
pnpm dev            # Vite dev server
pnpm build          # Production build to dist/
pnpm preview
pnpm lint

NetworkLanding Focus

The homepage highlights:

  • Distributed GPU compute (training + inference)
  • Cryptographic verification of workloads
  • Decentralized P2P infrastructure (no single point of failure)
  • Instant scaling (1 to 1000 GPUs)
  • Global edge network (sub-100ms latency)
  • Provider marketplace (contribute idle compute, set prices)
  • Stats: 100K+ GPU hours, 50+ regions, 99.9% SLA, $0.10/GPU-hour

Serving chain

push to main
  -> .github/workflows/sync.yml     carries refs to git.hanzo.ai (nothing else)
  -> .hanzo/workflows/deploy.yml    runs natively on the forge
       docker build .               Dockerfile: pnpm build
                                    -> FROM ghcr.io/hanzoai/static:v0.5.1
       docker push                  ghcr.io/hanzoai/hanzo-network:<short-sha>
  -> hanzoai/universe               infra/k8s/operator/crs/hanzo-network.yaml
       spec.image.tag: <short-sha>  set by a human, never by the build
  -> hanzoai/ingress                hanzo.network -> Service hanzo-network:80 -> :3000

hanzoai/static is a Go binary on scratch, run with -spa because this is a 98-route BrowserRouter: without the fallback every deep link 404s instead of reaching index.html for the router (and for the app's own path="*" NotFound). HANZO_STATIC_CSP in the CR allows fonts.googleapis.com / fonts.gstatic.com for the Inter stylesheet index.html links, and api.hanzo.ai in connect-src for the pricing fetch and the chat widgets.

Not live from here yet

hanzo.network is served today by the Cloudflare Pages project hanzo-network (hanzo-network.pages.dev is byte-identical to the live host), built through CF's Git integration — outside every workflow file in this repo. That is the deploy path this migration retires.

Reconcile BEFORE anyone pins a tag in the CR: the live bytes are not built from main. The served index.html links /favicon.svg, /favicon.ico and /logo.svg; main's still links img/28d53ec4-….png. Those exact lines come from origin/fix/broken-links (0efe650, the real @hanzo/brand blocky-H). Building an image from main as it stands would regress branding, so land that branch first. CF Pages is not rebuilding main on push — main has been pushed repeatedly since 2026-06-23 and the live bytes never changed — which is also why pushing this migration cannot disturb the live site.

Promotion order: publish an image -> set spec.image.tag in crs/hanzo-network.yaml -> add - hanzo-network.yaml to crs/kustomization.yaml -> confirm the pod is Running and a deep link returns 200 -> only then repoint hanzo.network DNS off CF Pages. The CR is committed INERT (empty tag, absent from kustomization.yaml); promoting an App with no image tag takes the host down instead of leaving it alone.

Notes

  • Shares the same component library and routes as hanzo.app, hanzo.id, hanzo.one, and sensei.group. Only NetworkLanding.tsx and index.html metadata are unique.
  • Brand color is cyan (#06b6d4) in the dev console message, vs red for other Hanzo sites.