MASHBOX Labs makes open models run faster and cheaper on TPUs and accelerated hardware, as well as exploring the future of the intersection of AI and gaming.
Quickstart • Models • Docs • Hugging Face • Coding agents
Qwen3.8-27B on one TPU v6e chip: first-time install to first answer (sped up 10x).
Quickstart
From your own machine, with the Google Cloud CLI set up (docs/google-cloud.md does that from a new Google account). This runs Qwen3.8-27B on one TPU v6e chip:
gcloud compute tpus tpu-vm create mashbox-1 --zone=us-east5-b --accelerator-type=v6e-1 --version=v2-alpha-tpuv6e
gcloud compute tpus tpu-vm ssh mashbox-1 --zone=us-east5-b --command='python3 -m pip install uv && python3 -m uv tool install --python 3.12 "mashbox[tpu]" && ~/.local/bin/mashbox run qwen3-8-27b --prompt "Write a haiku about the sea."'
gcloud compute tpus tpu-vm delete mashbox-1 --zone=us-east5-b --quiet
The chip's system Python is 3.10 and JAX for TPU needs 3.12, so the second line installs uv, which brings its own Python 3.12 and puts the mashbox command in ~/.local/bin. The first run downloads the 26.9 GB weights file and the compile cache; with them on disk, the server on a TPU v6e-1 is ready in 69.6 s. If the create command says the zone has no capacity, use another zone from step 6 of the setup guide in all three lines.
The chip bills from create to delete: one TPU v6e chip is $2.70 an hour at Google's on-demand list price. To serve Qwen3.8-27B with an OpenAI-compatible API instead, see docs/models/qwen3-8-27b.md.
Models
26 models and files run in mashbox: 3 MASHBOX builds and 23 GGUF files of 18 models.
MASHBOX builds
Models we port or make ourselves. A BSHJ build is our weights file for the model, run on our TPU kernels. Measured is each one's number against its baseline, on the chip named.
| Model | What it does | Chips | Measured | Weights |
|---|---|---|---|---|
| Hy-Nomas by Tencent Hunyuan |
World model: text and movement keys in, video out | TPU v5e: Not tested yet TPU v6e (v6e-1): One chip: the full pipeline fits on a single TPU v6e chip (32 GB), 2.46 s of compute per second of video, main model quantized. This version of mashbox run starts on a v6e-4TPU v5p slice (v5p-8): Not tested yet TPU v6e slice (v6e-4): Supported |
Compute per second of video, quality preset, Tencent decoder, 1.00 = real time: 1.045 s (TPU v6e-4) Compute per second of video, quality preset, MASHBOX Fast decoder: 0.689 s (TPU v6e-4) |
Hy-Nomas-TPU |
| Qwen3.8-27B by Qwen |
LLM: text in, text out | TPU v5e (v5e-4): Supported TPU v6e (v6e-1): Supported TPU v5p slice (v5p-8): Not tested yet TPU v6e slice (v6e-4): Supported |
38.1 vs 31.4 tok/s vs vLLM on the same chip, 1 request at a time; 74.84 tok/s with speculative decoding (--mtp 2), 1 request at a time, greedy; 37.77 tok/s with it off; 326.6 vs 1,606.7 s first start to ready, weights on disk, empty compile caches, vs vLLM on the same chip type (TPU v6e-1). All results | Qwen3.8-27B-TPU |
| Track2Rig by MASHBOX Labs Experimental |
Rigging: 3D point tracks in, rig (JSON and glTF) out | CPU: Supported TPU v5e: Not tested yet TPU v6e: Supported TPU v5p slice (v5p-8): Not tested yet TPU v6e slice (v6e-4): Not tested yet |
0.784% vs 0.915% held-out error vs SSDR at the same bone count, synthetic test set with noisy, partly hidden tracks, % of body size, lower is better; 6.24% vs 7.73% joint error vs SSDR, % of body size, lower is better (CPU, AMD EPYC 7502P). All results | Track2Rig |
GGUF files that run in our engine
GGUF files from other publishers, run as they are by mashbox. Level and Runs on say how far each file has been checked; a speed shows only where a chip run measured it on our kernels.
bartowski (9 files): Falcon3-1B-Instruct, granite-3.3-2b-instruct, Llama-3.2-1B-Instruct, Llama-3.2-3B-Instruct, Mistral-7B-Instruct-v0.3, Qwen2.5-0.5B-Instruct, Qwen2.5-1.5B-Instruct, Qwen2.5-7B-Instruct
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| Falcon3-1B-Instruct by Technology Innovation Institute |
Falcon3-1B-Instruct-Q8_0.gguf from bartowski, 1.78 GB |
llama |
Q8_0 | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 1.3e-12, top-1 144/144; llama.cpp's own path top-1 143/144; greedy 4 x 16 tokens: 4 identical, 0 near tie TPU: Not tested yet |
n/a |
| granite-3.3-2b-instruct by IBM |
ibm-granite_granite-3.3-2b-instruct-Q4_K_M.gguf from bartowski, 1.55 GB |
granite |
Q4_K_M | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 3.3e-12, top-1 145/145; llama.cpp's own path top-1 144/145; greedy 4 x 16 tokens: 4 identical, 0 near tie TPU: Not tested yet |
n/a |
| Llama-3.2-1B-Instruct by Meta |
Llama-3.2-1B-Instruct-Q4_K_M.gguf from bartowski, 0.81 GB |
llama |
Q4_K_M | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 4.2e-12, top-1 133/133; llama.cpp's own path top-1 130/133; greedy 4 x 16 tokens: 3 identical, 1 near tie |
TPU v6e-1 |
| Llama-3.2-3B-Instruct by Meta |
Llama-3.2-3B-Instruct-IQ4_XS.gguf from bartowski, 1.83 GB |
llama |
IQ4_XS | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 3e-12, top-1 133/133; llama.cpp's own path top-1 128/133; greedy 4 x 16 tokens: 4 identical, 0 near tie TPU: Not tested yet |
n/a |
| Mistral-7B-Instruct-v0.3 by Mistral AI |
Mistral-7B-Instruct-v0.3-Q3_K_M.gguf from bartowski, 3.52 GB |
llama |
Q3_K_M | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 4.4e-12, top-1 150/150; llama.cpp's own path top-1 143/150; greedy 4 x 16 tokens: 3 identical, 1 near tie TPU: Not tested yet |
n/a |
| Qwen2.5-0.5B-Instruct by Qwen |
Qwen2.5-0.5B-Instruct-Q4_K_M.gguf from bartowski, 0.4 GB |
qwen2 |
Q4_K_M | Tested | TPU v6e-1 |
| Qwen2.5-1.5B-Instruct by Qwen |
Qwen2.5-1.5B-Instruct-Q4_K_M.gguf from bartowski, 0.99 GB |
qwen2 |
Q4_K_M | Tested | TPU v6e-1 |
| Qwen2.5-1.5B-Instruct by Qwen |
Qwen2.5-1.5B-Instruct-Q5_K_M.gguf from bartowski, 1.13 GB |
qwen2 |
Q5_K_M | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 1.2e-11, top-1 131/131; llama.cpp's own path top-1 129/131; greedy 4 x 16 tokens: 4 identical, 0 near tie TPU: Not tested yet |
n/a |
| Qwen2.5-7B-Instruct by Qwen |
Qwen2.5-7B-Instruct-Q4_K_M.gguf from bartowski, 4.68 GB |
qwen2 |
Q4_K_M | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 1.1e-11, top-1 131/131; llama.cpp's own path top-1 124/131; greedy 4 x 16 tokens: 3 identical, 1 near tie |
TPU v6e-1 |
ggml-org (1 file): Qwen3.5-0.8B
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| Qwen3.5-0.8B by Qwen |
Qwen3.5-0.8B-Q8_0.gguf from ggml-org, 0.83 GB |
qwen35 |
Q8_0 | Tested | TPU v6e-1 |
ibm-granite (1 file): granite-3.3-2b-instruct
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| granite-3.3-2b-instruct by IBM |
granite-3.3-2b-instruct-Q4_K_M.gguf from ibm-granite, 1.55 GB |
granite |
Q4_K_M | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 3.1e-12, top-1 145/145; llama.cpp's own path top-1 144/145; greedy 4 x 16 tokens: 3 identical, 1 near tie TPU: Not tested yet |
n/a |
LGAI-EXAONE (1 file): EXAONE-3.5-2.4B-Instruct
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| EXAONE-3.5-2.4B-Instruct by LG AI Research |
EXAONE-3.5-2.4B-Instruct-Q4_K_M.gguf from LGAI-EXAONE, 1.64 GB |
exaone |
Q4_K_M | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 8e-12, top-1 141/141; llama.cpp's own path top-1 138/141; greedy 4 x 16 tokens: 4 identical, 0 near tie TPU: Not tested yet |
n/a |
lmstudio-community (1 file): Qwen3.5-9B
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| Qwen3.5-9B by Qwen |
Qwen3.5-9B-Q4_K_M.gguf from lmstudio-community, 5.63 GB |
qwen35 |
Q4_K_M | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 1.5e-12, top-1 135/135; llama.cpp's own path top-1 134/135; greedy 4 x 16 tokens: 4 identical, 0 near tie |
TPU v6e-1 |
Qwen (5 files): Qwen2.5-0.5B-Instruct, Qwen2.5-1.5B-Instruct, Qwen2.5-Coder-1.5B-Instruct, Qwen3-14B, Qwen3-4B
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| Qwen2.5-0.5B-Instruct by Qwen |
qwen2.5-0.5b-instruct-q4_k_m.gguf from Qwen, 0.49 GB |
qwen2 |
q4_k_m | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 2.6e-11, top-1 131/131; llama.cpp's own path top-1 126/131; greedy 4 x 16 tokens: 3 identical, 1 near tie |
TPU v6e-1 |
| Qwen2.5-1.5B-Instruct by Qwen |
qwen2.5-1.5b-instruct-q4_k_m.gguf from Qwen, 1.12 GB |
qwen2 |
q4_k_m | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 1.2e-11, top-1 131/131; llama.cpp's own path top-1 125/131; greedy 4 x 16 tokens: 3 identical, 1 near tie |
TPU v6e-1 |
| Qwen2.5-Coder-1.5B-Instruct by Qwen |
qwen2.5-coder-1.5b-instruct-q4_k_m.gguf from Qwen, 1.12 GB |
qwen2 |
q4_k_m | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 2.1e-12, top-1 131/131; llama.cpp's own path top-1 124/131; greedy 4 x 16 tokens: 3 identical, 1 near tie |
TPU v6e-1 |
| Qwen3-14B by Qwen |
Qwen3-14B-Q4_K_M.gguf from Qwen, 9 GB |
qwen3 |
Q4_K_M | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 3.3e-12, top-1 131/131; llama.cpp's own path top-1 130/131; greedy 4 x 16 tokens: 4 identical, 0 near tie |
TPU v6e-1 |
| Qwen3-4B by Qwen |
Qwen3-4B-Q4_K_M.gguf from Qwen, 2.5 GB |
qwen3 |
Q4_K_M | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 1.7e-11, top-1 131/131; llama.cpp's own path top-1 129/131; greedy 4 x 16 tokens: 4 identical, 0 near tie |
TPU v6e-1 |
unsloth (5 files): gemma-3-1b-it, Qwen3-0.6B, Qwen3-1.7B, Qwen3.5-4B, Qwen3.5-9B
| Model | GGUF file | Architecture | Quant | Level | Runs on |
|---|---|---|---|---|---|
| gemma-3-1b-it by Google DeepMind |
gemma-3-1b-it-Q4_K_M.gguf from unsloth, 0.81 GB |
gemma3 |
Q4_K_M | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 2.4e-07, top-1 142/142; llama.cpp's own path top-1 138/142; greedy 4 x 16 tokens: 3 identical, 1 near tie TPU: Not tested yet |
n/a |
| Qwen3-0.6B by Qwen |
Qwen3-0.6B-Q8_0.gguf from unsloth, 0.64 GB |
qwen3 |
Q8_0 | Tested | TPU v6e-1 |
| Qwen3-1.7B by Qwen |
Qwen3-1.7B-Q4_0.gguf from unsloth, 1.06 GB |
qwen3 |
Q4_0 | Checked on CPU Runs, checked against llama.cpp on CPU: same weights NMSE 6.6e-12, top-1 131/131; llama.cpp's own path top-1 124/131; greedy 4 x 16 tokens: 2 identical, 2 near tie TPU: Not tested yet |
n/a |
| Qwen3.5-4B by Qwen |
Qwen3.5-4B-Q4_K_M.gguf from unsloth, 2.74 GB |
qwen35 |
Q4_K_M | Tested | TPU v6e-1 |
| Qwen3.5-9B by Qwen |
Qwen3.5-9B-Q4_K_M.gguf from unsloth, 5.68 GB |
qwen35 |
Q4_K_M | Tested Runs, checked against llama.cpp on CPU: same weights NMSE 2e-12, top-1 135/135; llama.cpp's own path top-1 134/135; greedy 4 x 16 tokens: 3 identical, 1 near tie |
TPU v6e-1 |
Full catalog, with the run command for each file.
Every number names the chip it was measured on; each model's guide has all its results. Options for any model: ~/.local/bin/mashbox run <model> --help.
Results
Each chart names the hardware on both sides.
Qwen3-30B-A3B is not in this package: this chart compares quantized files of it, each scored the same way.
What you get
- One command per model.
mashbox run <model>downloads the weights, checks every file's sha256, loads the model and serves it. - Fits on fewer chips. Qwen3.8-27B runs on a single TPU v6e chip (32 GB) from a 26.94 GB weights file at 8.01 bits per weight, with 99.72% top-1 agreement against Qwen's own bf16 weights.
- Fast starts. Models ship their compiled TPU kernels, and Qwen3.8-27B also ships a precompiled compile cache for TPU v6e, so a start skips compiling: Qwen3.8-27B on TPU v6e-1 is ready in 69.6 s with it, 326.6 s without it.
- An OpenAI-compatible server for the language models, with batching: 8 requests at once share the chip.
- Works with Claude Code, Codex and Pi. The server also speaks the Anthropic Messages and OpenAI Responses APIs, so coding agents can use a model you serve as their LLM: Use with coding agents.
- Docs for coding agents. AGENTS.md gives an agent the rules and the steps to set up a chip, run a model and delete the chip; llms.txt lists the docs.
- Named files. Every weights file on Hugging Face is named by its type (for example
Qwen3.8-27B-BQ8_R.bshj), with size, bits per weight and measured quality next to it.
TPU v6e and v5e
| TPU v6e | TPU v5e | |
|---|---|---|
| Memory per chip | 32 GB | 16 GB |
| Memory bandwidth per chip | 1,638 GBps | 800 GiBps |
| Peak bf16 per chip | 918 TFLOPs | 197 TFLOPs |
| Peak int8 per chip | 1,836 TOPs | 393 TOPs |
| Create with | --accelerator-type=v6e-1 --version=v2-alpha-tpuv6e |
--accelerator-type=v5litepod-1 --version=v2-alpha-tpuv5-lite |
| Zones to try first | us-east5-b, europe-west4-a | us-central1-a |
v6e is the default. A model too big for one v5e chip (16 GB) splits across the 4 chips of a v5e-4 when its row says so; the models table says which chips each model runs on. Specs from Google's v6e and v5e pages. More in docs/chips.md.
TPU v6e (one chip and a v6e-4) against one NVIDIA H100 at Google Cloud list prices, with the memory bandwidth of each and the cost per 1M output tokens of Qwen3.8-27B (27B parameters, dense): TPU or GPU: price and bandwidth.
Open code, compiled kernels
The source of the model ports, CLI, runtime, demo apps and docs is in this repo, under Apache-2.0. Each model ships with its own compiled TPU kernels (our Culet kernels) and, where we built one, a precompiled compile cache, only what that model needs: mashbox run downloads them from the model's Hugging Face repo and checks them against the sha256 in models.json. Models that list plain JAX as tested also run without them, slower. The compiled files are under the MASHBOX Kernel Licence: free for personal use, research and evaluation, and for any use by companies under US$1M annual revenue. Larger companies in production: hello@mashbox.gg.
Coding agents
Use a model as your agent's LLM. Claude Code, Codex and Pi work with every LLM that mashbox run serves: start the server, open the tunnel, set the agent's base URL. Settings for each agent and measured results: Use with coding agents.
Let an agent set it up. AGENTS.md gives an agent the rules and the steps, from a Google account to a run and a deleted chip, and tells it to ask you before anything that costs money. llms.txt lists the docs.
Community and links
| Docs | mashbox.gg/docs |
| Models and weights | huggingface.co/mashbox-labs |
| News | x.com/mashboxgg |
| Bugs and model requests | GitHub issues, see CONTRIBUTING.md |
| Security reports | SECURITY.md |
| Companies | hello@mashbox.gg |
Licence
Our code is under the Apache License 2.0. The compiled kernels and compile cache are under the MASHBOX Kernel Licence. Model weights keep each model's own licence, shown on its Hugging Face card and kept unchanged in licenses/. Details: docs/licence.md.
Citation
@software{mashbox,
author = {{MASHBOX Labs}},
title = {mashbox: open models that run faster and cheaper},
url = {https://github.com/mashbox-labs/mashbox},
year = {2026}
}
Thank you
- Tencent Hunyuan for Hy-Nomas and Qwen for Qwen3.8-27B, and for releasing their weights.
- The JAX and Pallas teams, and Google Cloud TPU.
- llama.cpp and the ggml authors for GGUF; mashbox reads GGUF files with their
ggufpackage (GGUF files). - Hugging Face for hosting the weights and uv for a one-line Python 3.12.
Metadata
Release files for mashbox 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mashbox-0.1.8.tar.gz | 629.7 kB | Without provenance | Details for mashbox-0.1.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mashbox-0.1.8-py3-none-any.whl | Python 3 | none | any | Details for mashbox-0.1.8-py3-none-any.whl |
Total release size: 1.3 MB
Release files / mashbox-0.1.8.tar.gz
| Download URL | mashbox-0.1.8.tar.gz |
|---|---|
| Size | 629.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
be14a6e2f57411a0da04997e4275bdc3e67c6d3fbc5fc35f610c83bf7f630ba7
|
|
BLAKE2b-256 checksum How to use checksums |
53c992a09bef8108bc0f50448f8e705d74b3abef9f6d7f16334027de9d348f67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / mashbox-0.1.8-py3-none-any.whl
| Download URL | mashbox-0.1.8-py3-none-any.whl |
|---|---|
| Size | 686.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
49e4d7c884a7fcb6f344cba4e92492517dbb744db1cf36232a9e972d16cc8bda
|
|
BLAKE2b-256 checksum How to use checksums |
0097298f76e71c777772a387e9ee3dc3c35cc84e4e52a41d773eaa922354d94c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for mashbox 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.