Files
zeekay ebae7a24d0 Zen names no model the gateway does not serve
zen-image, zen-voice, zen-music, zen-video and zen-rerank have no account behind
them: /v1/models lists none, and a call answers 404 or 500. llms.txt offered them,
the models page featured zen-image and the lineup counted zen-rerank as served.
2026-10-17 09:29:49 -07:00

195 lines
5.7 KiB
TypeScript

/**
* The Zen lineage, said once and drawn from here.
*
* Which generation answers is lib/zen's `NOW`. This file is the history, and
* the ids the gateway listed on 2026-10-09 (`GET /v1/models`, 17 `zen*` ids;
* `hanzo/zen` was in the index and 404 on its own URL, so it is not here).
* An id outside `SERVED` is left off the page rather than drawn as callable.
* Re-check the gateway before trusting this list.
*
* Zen 5.8 is the serving bridge in the family record. The gateway did not
* list it on that read, and its model pages forward away, so the page says
* so and does not offer it as an id to call.
*/
import { FLASH, NEXT, NOW } from '@/lib/zen'
export type GenStatus =
| 'Historical'
| 'Open weights'
| 'Retired'
| 'Shipped'
| 'Served only'
| 'Current'
| 'Research preview'
export type FigureKind = 'dense' | 'wide' | 'branch' | 'sparse' | 'paths' | 'bridge' | 'practical' | 'research'
export interface GenRef {
label: string
href: string
}
export interface GenerationStep {
id: string
/** The numeral on the rail. `5.8` is the bridge, not a full generation. */
mark: string
name: string
period: string
status: GenStatus
theme: string
summary: string
/** What the diagram is, in words. */
shape: string
figure: FigureKind
/** Smaller than a numbered generation. */
bridge?: boolean
servedIds: readonly string[]
references?: readonly GenRef[]
}
/** Ids the gateway listed. Order is not significance. */
export const SERVED = [
'zen-embedding',
'zen-embedding-2',
'zen-free',
'zen-guard',
'zen-scribe',
'zen-vl',
'zen-voice-mini',
'zen5',
'zen5-coder',
'zen5-evo',
'zen5-flash',
'zen5-mini',
'zen5-pro',
'zen5-spark',
'zen6',
'zen6-flash',
] as const
export const JOBS_OF = ['Generate', 'Code', 'See', 'Speak and listen', 'Retrieve', 'Guard'] as const
export type Job = (typeof JOBS_OF)[number]
/** Where a served id sits. Unknown shapes stay in Generate. */
export function jobOf(id: string): Job {
if (id.includes('coder')) return 'Code'
if (id.includes('embed') || id.includes('rerank')) return 'Retrieve'
if (id.includes('guard')) return 'Guard'
if (/scribe|voice|foley|music/.test(id)) return 'Speak and listen'
if (/(^|-)(vl|vision|image|video|omni)(-|$)/.test(id)) return 'See'
return 'Generate'
}
const HF = 'https://huggingface.co/zenlm'
export const LINEAGE: readonly GenerationStep[] = [
{
id: 'zen1',
mark: '01',
name: 'Zen 1',
period: 'Q4 2023',
status: 'Historical',
theme: 'Foundation',
summary:
'Dense multilingual experiments at 7B, 14B and 72B, to prove an open foundation could scale. These are not models the gateway serves.',
shape: 'One dense block.',
figure: 'dense',
servedIds: [],
},
{
id: 'zen2',
mark: '02',
name: 'Zen 2',
period: 'Q2 2024',
status: 'Historical',
theme: 'Go longer',
summary:
'128K context, the first production deployments, and code and math specialists. From research model to production model. The context got longer. The architecture did not get more decorative.',
shape: 'The same block, wider.',
figure: 'wide',
servedIds: [],
},
{
id: 'zen3',
mark: '03',
name: 'Zen 3',
period: '2024',
status: 'Open weights',
theme: 'More than language',
summary:
'The line branched: sparse experts, vision, audio, image, retrieval and safety. This is where Zen becomes a family. None of these ids are in the live catalog. Open-weight specialist artifacts are still published.',
shape: 'One line, six branches.',
figure: 'branch',
servedIds: [],
references: [
{ label: 'zenlm/zen3-omni', href: `${HF}/zen3-omni` },
{ label: 'zenlm/zen3-tts', href: `${HF}/zen3-tts` },
{ label: 'zenlm/zen3-guard', href: `${HF}/zen3-guard` },
],
},
{
id: 'zen4',
mark: '04',
name: 'Zen 4',
period: '2025',
status: 'Retired',
theme: 'Scale up',
summary:
'Frontier-scale experts and a longer context. Retired. Not a current production model, and not a public download.',
shape: 'Large, and sparse.',
figure: 'sparse',
servedIds: [],
},
{
id: 'zen5',
mark: '05',
name: 'Zen 5',
period: '',
status: 'Shipped',
theme: 'Agentic generation',
summary:
'Code, long context, and smaller and host-specific variants. Older pages described a much larger routed checkpoint. It was not published. These are the models that were.',
shape: 'Paths for tools and hosts.',
figure: 'paths',
servedIds: ['zen5', 'zen5-coder', 'zen5-evo', 'zen5-flash', 'zen5-mini', 'zen5-pro', 'zen5-spark'],
},
{
id: 'zen58',
mark: '5.8',
name: 'Zen 5.8',
period: '',
status: 'Served only',
theme: 'Serving bridge',
summary:
'A served-only bridge between Zen 5 and Zen 6, with no public weights. The gateway does not list it now.',
shape: 'A thin serving step.',
figure: 'bridge',
bridge: true,
servedIds: [],
},
{
id: 'zen6',
mark: '06',
name: NOW.name,
period: '',
status: 'Current',
theme: 'Dense again',
summary: `${NOW.name} is a practical dense model: hybrid attention, a long context, images and video, speculative decoding, and ${FLASH.name}, a ternary build that fits a laptop. Available now.`,
shape: 'Smaller, and solid.',
figure: 'practical',
servedIds: NOW.ids,
},
{
id: 'zen7',
mark: '07',
name: NEXT.name,
period: '',
status: 'Research preview',
theme: 'Research preview',
summary: `${NEXT.name} has no public weights and no callable id. Its architecture, size, modalities and date are not stated. Research preview — not currently available.`,
shape: 'The release path, unresolved past the preview.',
figure: 'research',
servedIds: [],
},
]