mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
Every word the landing, the header menus, the phone sheet, the footer,
the help corner and the way in (sign-in, sign-up, the reset, the
invitation, the callback, onboarding, the 404) write goes through
@hanzo/i18n's t(): one sentence is one message, its figures, names and
links arguments; copy written as data is phrase('…') where written and
t(label) where drawn. Plans, the chart, the API states and the lines
lib/kai and lib/enso build for the landing do the same.
Right to left: <html lang dir> is set before the first paint (the
package's bootScript first in the head); a figure, clock, range or
price outside a sentence is isolated; sides are logical gui props, the
layout's [data-join] corners logical, a bar grows from the start;
arrows along the line mirror (Onward for "words ->" links). The repo
dates read in the reader's language.
Gates select by slot, never by an English label (rtl, help). New gate
translated.spec.ts: in Arabic the landing at 1440 and 390, every menu
open, the phone sheet, sign-in, sign-up and the app signed in hold no
authored English, nothing scrolls sideways, every range is isolated;
French the same for English's commonest words. What another package
draws with no words prop is listed by name (@hanzo/ui's Footer label,
@hanzo/build's composer row and suggestions).
@hanzo/i18n 0.5.3 (the catalogs: 1,443 keys, every offered locale
complete), @hanzo/app 0.2.1 (the app's words). The link gate imports
the terms versions from @hanzo/app, the one SDK main now resolves.
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
/**
|
||
* Zen 6 on three machines Hanzo owns, measured by Hanzo on 2026-09-23.
|
||
*
|
||
* These are the throughput readings from that day's runs, one machine each, the
|
||
* same figures the company's own one-pager states. They are not the engine
|
||
* comparison — that is /benchmarks/inference, where the Hanzo engine is read
|
||
* against another runtime cell by cell — and they are not a weight card's
|
||
* numbers, which the page quotes separately and labels as the publisher's.
|
||
*
|
||
* Each machine runs its own build of the same generation: the NVFP4 weights on
|
||
* Grace-Blackwell, a 4-bit build on Strix Halo, and an MLX build on Apple
|
||
* silicon. Decode is one request unless a row says otherwise. Change a figure
|
||
* only from a new run, and change the date with it.
|
||
*/
|
||
import { phrase } from '@hanzo/i18n'
|
||
|
||
export const MEASURED = '2026-09-23'
|
||
|
||
export interface Desk {
|
||
/** The machine, as the reader would name it. */
|
||
machine: string
|
||
/** Its memory, which is what decides what fits. */
|
||
memory: string
|
||
/** How the generation is built for it, as authored English (`phrase`): a page draws it with `t()`. */
|
||
build: string
|
||
prefill: string
|
||
decode: string
|
||
/** One more reading the run recorded, when it has one. */
|
||
more?: string
|
||
}
|
||
|
||
export const DESKS: readonly Desk[] = [
|
||
{
|
||
machine: 'NVIDIA Grace-Blackwell',
|
||
memory: '121 GB unified',
|
||
build: phrase('NVFP4 weights'),
|
||
prefill: '~2,400',
|
||
decode: '~43',
|
||
more: '50.6 tok/s decoding code · 112 tok/s across 8 requests',
|
||
},
|
||
{
|
||
machine: 'AMD Strix Halo',
|
||
memory: '128 GB unified',
|
||
build: phrase('4-bit build'),
|
||
prefill: '1,150–1,400',
|
||
decode: '~34',
|
||
more: '262K context, in two slots',
|
||
},
|
||
{
|
||
machine: 'Apple silicon',
|
||
memory: 'unified memory',
|
||
build: phrase('MLX build'),
|
||
prefill: '500–690',
|
||
decode: '64–81',
|
||
},
|
||
]
|