Files
zeekay 0f5536b707 hanzo.ai reads in the reader's language, and Arabic right to left
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.
2026-10-22 19:54:31 -07:00

57 lines
1.8 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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',
},
]