mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
Calculator, captable, careers, cloud, compare, contact and contact-sales, customers, dashboards, dataroom, datastore, dev, download, enso, enterprise, extension, family, integrations, investors, kai, learn, legal and their components say their words through t() in client code, <T> in server components and phrase() where copy is held as data; one sentence is one key, figures and links its arguments. Rebased on main: in every conflict main's file stands (its copy, layout and styling) and only the wrapping is added back, including copy main added since. Claude-Session: https://claude.ai/code/session_015XYKLjZtDTJEnMo4eK3AFH
95 lines
4.5 KiB
TypeScript
95 lines
4.5 KiB
TypeScript
'use client'
|
||
|
||
import { ArrowRight, Apple, Bot, Brain, Cloud, Lock, MonitorSmartphone, Settings, Wifi, Zap } from 'lucide-react'
|
||
import { useI18n } from '@hanzo/i18n/react'
|
||
import { ProductLanding } from '@/components/product/ProductLanding'
|
||
import { ProductFooter } from '@/components/products/ProductFooter'
|
||
|
||
/**
|
||
* Hanzo Desktop, through the ONE product kit.
|
||
*
|
||
* A fourth cluster of the same duplicated shape — computer, desktop, gallery
|
||
* and world scored 83–97% identical on their className sets. Hero, a six-card
|
||
* grid, a call to action, written out four times. They now pass one typed
|
||
* props object to `ProductLanding` and carry zero layout classes of their own.
|
||
* See LLM.md, "Tailwind is NOT gone".
|
||
*
|
||
* EVERY WORD IS THE ONE THAT WAS HERE, with the same one deletion /node and
|
||
* /network took: a trailing "Get started with X" card whose two links were the
|
||
* docs and GitHub, both of which the hero and the card above it already reach.
|
||
* ProductFooter was nested inside it, so it also rendered narrower than on
|
||
* every other product page; out here it is the width it is everywhere else.
|
||
*/
|
||
|
||
export default function HanzoDesktopPage() {
|
||
const { t } = useI18n()
|
||
return (
|
||
<>
|
||
<ProductLanding
|
||
badge={t("Native Desktop Client")}
|
||
badgeIcon={MonitorSmartphone}
|
||
title={"Hanzo Desktop"}
|
||
tagline={t("Build agents on your own machine")}
|
||
lede={t("A window for making agents and letting them work together. Each one runs on a model you pick — local or on Hanzo Cloud — and what it touches stays on the machine unless you send it somewhere. macOS, Windows and Linux; 4GB of memory and 2GB of disk.")}
|
||
ctas={[
|
||
{ label: t("Download"), href: "https://docs.hanzo.ai/docs/apps/desktop", icon: ArrowRight },
|
||
{ label: "GitHub", href: "https://github.com/hanzoai" },
|
||
]}
|
||
what={{
|
||
title: t("What you can build in it"),
|
||
sub: t("Free and open source. Download it, and the first agent is a few minutes of clicking."),
|
||
pillars: [
|
||
{
|
||
icon: Cloud,
|
||
title: t("Nothing to scaffold"),
|
||
body: t("An agent is made in the window: give it a job, some tools, and a model. There is no project to create first and no file to check in before it exists."),
|
||
},
|
||
{
|
||
icon: Brain,
|
||
title: t("Local model or cloud model, per agent"),
|
||
body: t("Point one agent at a model running on your machine and another at one on Hanzo Cloud. It is a setting on the agent, not a decision about the whole install."),
|
||
},
|
||
{
|
||
icon: Bot,
|
||
title: t("They work together"),
|
||
body: t("Agents share context and hand steps to each other, so a job that needs several of them is one workflow instead of you copying between three chat windows."),
|
||
},
|
||
{
|
||
icon: Wifi,
|
||
title: t("It works with the network off"),
|
||
body: t("With a local model pinned, an agent keeps running when the connection goes. Nothing has to be uploaded for it to do its job."),
|
||
},
|
||
{
|
||
icon: Lock,
|
||
title: t("Your keys stay on your machine"),
|
||
body: t("Keys and the data an agent touches stay local. An agent that has to pay for something spends from a key you hold, on hardware you own."),
|
||
},
|
||
{
|
||
icon: Settings,
|
||
title: t("MCP is how it reaches your tools"),
|
||
body: t("Agents speak the Model Context Protocol, so a tool you have already connected elsewhere works here without a second integration written for this app."),
|
||
},
|
||
],
|
||
}}
|
||
stats={{
|
||
title: t("Available everywhere you work"),
|
||
sub: t("Native installers for macOS (Apple Silicon + Intel), Windows, and Linux."),
|
||
items: [
|
||
{ icon: Apple, value: "macOS", label: "arm64 + intel" },
|
||
{ icon: MonitorSmartphone, value: "Windows", label: "x64 + arm64" },
|
||
{ icon: Zap, value: "Linux", label: "deb + rpm + AppImage" },
|
||
],
|
||
}}
|
||
finalCta={{
|
||
title: t("Download it and build one"),
|
||
sub: t("Pick a model, describe the job, hand it the tools. If the model is a local one, the whole thing runs without an account."),
|
||
buttons: [
|
||
{ label: t("View on GitHub"), href: "https://github.com/hanzoai" },
|
||
],
|
||
}}
|
||
/>
|
||
<ProductFooter slug={"desktop"} name={"Desktop"} />
|
||
</>
|
||
)
|
||
}
|