Zen
Zen is the open-weight model family from Zoo Labs Foundation, for two jobs: agentic coding that runs on your own machine, and marketing work — campaign copy in your brand's voice and the images and speech that go with it.
After this page you know which Zen model does which job, how to call it, where its weights are, and which generation is current.
Zen is the open-weight family of Zen LM, from Zoo Labs Foundation, a
501(c)(3) non-profit, and served on api.hanzo.ai. It is chosen for two jobs.
Agentic coding that runs locally. zen6 is a 27B dense model that reads
262,144 tokens natively and 1,048,576 with YaRN, and ships a speculative drafter
for faster decoding; its card reports 141 tokens a second on code completion on
one DGX Spark. zen6-flash is the same generation in ternary weights, 5.95 GB,
for an Apple Silicon laptop or one GPU. Hosted, both ids take a 1,000,000-token
context.
Marketing work. POST /v1/content/generate drafts
campaigns and social posts from a brief, with the brand-voice guidance you pass
and the Zen model you name, and files each one in the CMS as a draft. zen6
reads images and video beside the brief, and zen-vl reads images, documents
and charts. The Zen 3 weights make the images
(zen3-image) and speech (zen3-tts) that go with the copy.
Weights are published under huggingface.co/zenlm; each model card states its
license, base and serving instructions. The same ids answer hosted on
api.hanzo.ai.
Generations
| Generation | Models | Where | Status |
|---|---|---|---|
| Zen 7 | — | no weights; no id to call | research preview · Request access · succeeds Satori |
| Zen 6 | zen6, and zen6-flash, its ternary build | hosted; weights at zenlm/zen6 and zenlm/zen6-flash | available now |
| Zen 5 | zen5, zen5-coder, zen5-flash, zen5-mini, zen5-pro, zen5-evo, zen5-spark | hosted; GGUF builds on Hugging Face (zen5-gguf, zen5-coder-gguf, …) | earlier |
| Zen 3 | speech (zen3-asr, zen3-tts), image (zen3-image), zen3-vl, zen3-omni, zen3-nano, zen3-guard | weights on Hugging Face | shipped |
Task lines sit beside the generations: zen-embedding and zen-reranker
(0.6B, 4B, 8B) for retrieval, zen-guard for safety, zen-vl
for vision. zen-embedding-2 embeds text in 768 dimensions and takes dimensions
of 512, 256 or 128 for shorter vectors; a query prefix (task: search result | query: )
and a document prefix (title: none | text: ) belong in the text. Its vectors are not
zen-embedding's, so an index is built with one of the two. zen-free and hanzo/zen answer on the gateway too.
zen-router is a
classifier, not a generator; the gateway also accepts its name as an alias for
auto.
Zen 6 weights
zenlm/zen6 | zenlm/zen6-flash | |
|---|---|---|
| Weights | 27.3B dense, NVFP4 MLP and LM head, FP8 attention | ternary: 1.77 bits per weight packed (5.95 GB), 2.14 in 2-bit slots (7.21 GB) |
| Layers | 64: 48 linear-attention, 16 full-attention | the same 27B |
| Attention | 24 query heads, 4 key/value, head size 256 | |
| Vocabulary | 248,320 tokens | |
| Context | 262,144 native; 1,048,576 with YaRN | 262,144 |
| Inputs | text, images, video | text, images |
| Drafter | bundled, block-diffusion | bundled, 2.06 GB |
| Runs on | SGLang, NVIDIA Blackwell | llama.cpp, Metal or one GPU |
| Architecture | Qwen3_5ForConditionalGeneration (qwen3_5) | GGUF qwen35 |
Call one
curl https://api.hanzo.ai/v1/chat/completions \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "zen6",
"messages": [{"role": "user", "content": "Write a binary search in Rust."}]
}'Every hosted Zen id, with its context window and rate, is one request away and needs no key:
curl -s https://api.hanzo.ai/v1/models \
| jq -r '.data[] | select(.owned_by == "zenlm") | "\(.id)\t\(.context_window)\t\(.pricing.input_per_million)/\(.pricing.output_per_million)"'The gateway is the source of truth for ids, windows and rates. If this page and that command disagree, believe the command.
Run one yourself
hf download zenlm/zen6 --local-dir zen6
hf download zenlm/zen6-flash --local-dir zen6-flashEach card carries the serving command its model was built for: SGLang for
zen6, llama.cpp for zen6-flash and the GGUF builds. A server that speaks
/v1/chat/completions takes the same request as above with its own base URL.
Where Zen sits
Zen is the model that writes. It is not the model that picks which model writes — that is Enso — and it is not asked bounded questions a typed answer settles — that is Kai. An agent built on all three spends generative compute only where generation is the work.
Specifications: HIP-0039 for the
family; HIP-0904 records what each zenlm/zen6*
repository on Hugging Face holds.
License & attribution
Each repository's own license governs its files; the model card names it.
zenlm/zen6: Apache-2.0. Built from Qwen3.8-27B by the Qwen team (Apache-2.0); NVFP4 quantizationRadixArk/Qwen3.8-27B-NVFP4, drafterincoai/Qwen3.8-27B-DFlash2.zenlm/zen6-flash: Apache-2.0. Ternary Bonsai 2 27B by prism-ml (prism-ml/Ternary-Bonsai-2-27B-gguf), built from Qwen3.8-27B; drafterProCreations/Ternary-Bonsai-2-27B-DFlash2.zen-embedding-2: Apache-2.0. EmbeddingGemma 2 by Google DeepMind (google/embeddinggemma-2), served unchanged.