mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
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]>
89 lines
4.1 KiB
TypeScript
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" />
|
|
</>
|
|
)
|
|
}
|