Skip to main content

MASHBOX Labs

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

Licence: Apache-2.0 TPU v6e Python 3.12 Hugging Face X

Qwen3.8-27B on one TPU v6e chip

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

31 models and files run in mashbox: 3 MASHBOX builds and 28 GGUF files of 19 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-4
TPU 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 Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 14.75 tok/s for one request
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 Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 3.98 tok/s for one request
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.8-27B
Model GGUF file Architecture Quant Level Runs on
Qwen3.8-27B
by Qwen
Qwen3.8-27B-Q4_K_M.gguf
from ggml-org, 18.97 GB
qwen35 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 0.38 tok/s for one request
TPU v6e-1
huihui-ai (1 file): Qwen3.8-27B
Model GGUF file Architecture Quant Level Runs on
Qwen3.8-27B
by Qwen
Huihui-Qwen3.8-27B-abliterated-UD-DW-Q4_K_M.gguf
from huihui-ai, 16.55 GB
qwen35 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 0.32 tok/s for one request
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 (2 files): Qwen3.5-9B, Qwen3.8-27B
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
Qwen3.8-27B
by Qwen
Qwen3.8-27B-Q4_K_M.gguf
from lmstudio-community, 16.81 GB
qwen35 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 0.36 tok/s for one request
TPU v6e-1
peculiar-ragdoll (1 file): Qwen3.8-27B
Model GGUF file Architecture Quant Level Runs on
Qwen3.8-27B
by Qwen
Dirk-Qwen3.8-27B-UD-Q4_K_M.gguf
from peculiar-ragdoll, 16.46 GB
qwen35 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 0.29 tok/s for one request
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 (7 files): gemma-3-1b-it, Qwen3-0.6B, Qwen3-1.7B, Qwen3-4B-Instruct-2507, Qwen3.5-4B, Qwen3.5-9B, Qwen3.8-27B
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 Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 16.31 tok/s for one request
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-4B-Instruct-2507
by Qwen
Qwen3-4B-Instruct-2507-Q4_K_M.gguf
from unsloth, 2.5 GB
qwen3 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 1.74 tok/s for one request
TPU v6e-1
Qwen3.5-4B
by Qwen
Qwen3.5-4B-Q4_K_M.gguf
from unsloth, 2.74 GB
qwen35 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 1.43 tok/s for one request
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
Qwen3.8-27B
by Qwen
Qwen3.8-27B-UD-Q4_K_M.gguf
from unsloth, 16.46 GB
qwen35 Q4_K_M Quick check
Runs on TPU v6e-1: short check against llama.cpp (4 prompts x 32 tokens), 0.32 tok/s for one request
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.8-27B: time to ready on one TPU v6e-1. Hardware: one TPU v6e-1 (Google Cloud, asia-northeast1-b, on demand) vs one TPU v6e-1 (Google Cloud, us-east5-b).

Qwen3-30B-A3B: quality vs file size, 20 files. Hardware: a frozen llama.cpp CPU scorer (16 threads, AMD EPYC 7502P / 7B13) vs the same scorer and the same 10,240 positions for every rival file.

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.

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 gguf package (GGUF files).
  • Hugging Face for hosting the weights and uv for a one-line Python 3.12.

Metadata

Release files for mashbox 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mashbox 0.1.9
File Size Uploaded Provenance Actions
mashbox-0.1.9.tar.gz 634.5 kB Without provenance Details for mashbox-0.1.9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mashbox 0.1.9
File Interpreter ABI Platform Actions
mashbox-0.1.9-py3-none-any.whl Python 3 none any Details for mashbox-0.1.9-py3-none-any.whl

Total release size: 1.3 MB

Release files / mashbox-0.1.9.tar.gz

Download URL mashbox-0.1.9.tar.gz
Size 634.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2a53a2b73bc9e5e6fbcfb02a5c7080662616cea2fc757b84ba36ea3accb5ff0b
BLAKE2b-256 checksum
How to use checksums
b764faccaed0fd4a72ea285916568fd403ef9e45f8e465fcd4180ae38305abad
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.9-py3-none-any.whl

Download URL mashbox-0.1.9-py3-none-any.whl
Size 691.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9228e0b2e04175d39ce448769867af93897e1b7de1fd07cb146f3b0f49c6ffd4
BLAKE2b-256 checksum
How to use checksums
830330cffc74e84e93f0b77fb5e09561c888afa0757f6d69d48ea17154f48cbd
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.9

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page