Files
zooqueenandHanzo Dev 44dc824103 Point the API keys page at the console and every Get API key control at KEYS
The keys page's heading links to platform.hanzo.ai/api-keys ("Manage in the
console") and docs.hanzo.ai/docs/api-keys; settings' Heading takes an action
row for it. /api, /network, a model page, /zen/models, /kai/guide and the
blockchain products' closing control open KEYS from components/home/nav-data
instead of a literal, the docs, the console's root, /signup or /login.
e2e/gates/keys.spec.ts asserts API keys sits between Usage and View all plans
in the account menu, opens /settings/organization/keys, and that the page
links to the console and the docs; the menu half needs @hanzo/rooms 0.1.33.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-07 08:15:31 -07:00

89 lines
4.1 KiB
TypeScript

'use client'
import { Activity, ArrowRight, Coins, Cpu, Globe, Shield, Zap } from 'lucide-react'
import { ProductLanding } from '@/components/product/ProductLanding'
import { ProductFooter } from '@/components/products/ProductFooter'
import { KEYS } from '@/components/home/nav-data'
/**
* Network, through the ONE product kit — /node's other half.
*
* See app/(marketing)/node/page.tsx for why this pair takes six pillars under
* one heading where the /ledger trio took 3 + 3: this page has ONE card
* section, so splitting it would need a second heading nobody wrote.
*
* EVERY WORD IS THE ONE THAT WAS HERE. Same deletion as /node, same reason:
* the trailing "Get started with Network" card offered the docs and GitHub,
* which the hero and this final card already reach, so the card that survives
* is the one carrying a destination of its own — "Two ends of the same
* fabric", which is how a reader gets from buying compute to providing it.
*/
const DOCS = 'https://docs.hanzo.ai/docs/network'
const GITHUB = 'https://github.com/hanzoai'
export default function NetworkPage() {
return (
<>
<ProductLanding
badge="Compute Marketplace"
badgeIcon={Globe}
title="Hanzo Network"
lede="hanzo.network is the fabric that hanzod nodes form. Put a machine on it and it serves models to whoever the cluster routes there. Ask the fabric for a model and it finds a peer that already has it loaded."
ctas={[
{ label: 'Buy Compute', href: DOCS, icon: ArrowRight },
{ label: 'Run a Node', href: '/node' },
]}
what={{
eyebrow: 'The Fabric',
title: 'How the Network Works',
sub: 'Machines join, declare what they can serve, and the cluster routes on what is actually loaded',
pillars: [
{
icon: Globe,
title: 'Peers, not regions',
body: 'There is no region menu to choose from. A node discovers its peers over the fabric, and the topology is whatever is connected right now — you can ask it and read the answer.',
},
{
icon: Coins,
title: 'Metered by the work',
body: "A tenth of the block reward funds AI compute, and a provider's share is scaled by the level of the work it did. No subscription, no seat, nothing billed while a machine sits idle.",
},
{
icon: Shield,
title: 'Proof of AI',
body: "A node's confidential-compute tier is attested rather than declared, and what it earns is scaled by that attestation and by a trust score. A claim about a machine is worth nothing on its own.",
},
{
icon: Cpu,
title: 'Whatever the peers have loaded',
body: 'Ask the cluster which models it serves, which node would answer for one, and where a model nobody has loaded should be placed. Routing follows what is really in memory.',
},
{
icon: Zap,
title: 'One command to join',
body: 'hanzo fabric join names a network and starts the node on it. If you would rather lend the machine to builds than to inference, hanzo runner offers the same box as a CI runner.',
},
{
icon: Activity,
title: 'Anchored, not asserted',
body: 'Work is ordered on the Hanzo L2 and committed to Lux as a Merkle root, under a stake-weighted validator set. What you can check is what settled, not what a status page says.',
},
],
}}
finalCta={{
icon: Globe,
title: 'Two ends of the same fabric',
sub: 'Take a key and call it, or bring a machine and serve it. Most people who do the second started by doing the first.',
buttons: [
{ label: 'Get an API Key', href: KEYS, icon: ArrowRight },
{ label: 'Provide Compute', href: '/node' },
{ label: 'View on GitHub', href: GITHUB },
],
}}
/>
<ProductFooter slug="network" name="Network" />
</>
)
}