Shimmy: A Single-Binary Rust WebGPU Inference Server That Skips Python and llama.cpp
Pure-Rust WebGPU inference engine, OpenAI-API compatible, GGUF native, runs on any GPU. No Python. No llama.cpp. Single binary.
At a glance
- What is it?
- Shimmy is a single-binary, OpenAI-compatible inference server for GGUF models, built entirely in Rust with a WebGPU engine. It targets developers who want local inference without Python or C++ dependencies, but its certification list is narrow and its roadmap is still young.
- Who is it for?
- Adopt Shimmy if you need a lightweight, single-binary, OpenAI-compatible server for certified GGUF models on local GPUs, and you want to avoid Python and C++ toolchains entirely. Do not adopt it if you rely on uncertified architectures, need SafeTensors inference beyond loading, or require Mixture-of-Experts support, which is still roadmap work.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- Michael-A-Kuykendall/shimmy6,013 ★ · +290
| Repository | 2026-07-29 | 2026-11-13 |
|---|---|---|
| Michael-A-Kuykendall/shimmy | 5.7k | 6k |
290 Stars in the last 107 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What Shimmy Actually Replaces
Shimmy is a local inference server that speaks the OpenAI API. It reads GGUF model files and serves them over HTTP endpoints like /v1/chat/completions. The pitch is direct: it is a single binary written entirely in Rust, with no Python runtime and no llama.cpp backend. The README says it is a single binary, and the engine underneath is called Airframe, a pure-Rust WebGPU (WGSL) transformer engine. The problem it solves is operational friction. If you have ever installed llama.cpp or Ollama, you know the dependency chain: Python bindings, C++ compilation, or a heavy runtime. Shimmy removes that. It is aimed at developers who want to point existing OpenAI SDKs at a local server without changing their code or their toolchain. The certification list is specific: 12 model families, 26 model/quant combinations, each passing a three-box regimen of MATH, INFERENCE, and DETERMINISM. That is a narrow but concrete promise, and it is the first thing to check before adopting.
The Airframe Engine and WebGPU Path
The core mechanism is Airframe, a WebGPU compute shader engine written in WGSL. The README describes it as pure Rust, and the inference runs through WebGPU, which means it targets NVIDIA, AMD, Intel, integrated GPUs, and Apple Silicon. There are no backend flags to set, no CUDA or ROCm selection. The model specification is auto-derived from GGUF metadata, so there are no hardcoded per-model constants. That is a design choice that reduces maintenance but also means the engine must handle a variety of architectures generically. The README claims F32 accumulation precision with deterministic output: same model, same seed, same parameters, same output. That is a strong claim, and it is backed by a certification process, but the certification only covers the named model/quant combinations. For anything outside that list, you are relying on the generic architecture recognition, which the README explicitly says does not equal certification. The WebGPU approach is the differentiator, but it also imposes a constraint: you need a GPU that supports WebGPU. That is most modern GPUs, but not all, and not in all environments, such as older servers or some virtualized setups.
Getting It Running: Commands and Config
The quick start is short. You install with cargo install shimmy --locked, then run shimmy serve --model-path /absolute/path/to/model.gguf --bind 127.0.0.1:11435. The bind address and port are explicit, which is useful for local-only setups. Then you can list models with shimmy list --short and hit the OpenAI-compatible endpoint with curl. The example uses a chat completion request with a model name like tinyllama-1.1b, which matches the certified combination. Configuration comes through environment variables, including SHIMMY_MAX_CTX for extended context via YaRN RoPE scaling. The README points to docs/quickstart.md for full install, GPU, and VRAM sizing, and docs/CONFIGURATION.md for env vars. The setup assumes you have a Rust toolchain, which is a prerequisite, but that is a single dependency compared to Python plus C++.
The Certification Ledger and Its Limits
The certification process is the most distinctive feature. The README says every supported model passes a three-box regimen: MATH, INFERENCE, and DETERMINISM. There is a certification ledger, and certification applies to the named model/quant combination. That means Llama-3.2-3B-Instruct with Q4_K_M is certified, but the same model with a different quant is not. The list covers 12 families, including Llama, Qwen3, Qwen2, Qwen3.5, Phi-3, Phi-2, Gemma-2, Gemma-4, DeepSeek-R1, Ministral, and StarCoder2. But there are gaps. Gemma-2-9B-it is listed as supported but its certification is pending, per the v2-roadmap. SafeTensors format is supported for model loading via safetensors_native, but full Airframe-native inference for SafeTensors is still roadmap work. That means you can load a .safetensors file, but the engine may not run it natively yet. The README is honest about this, but it is a real limitation if you have models in that format. The certification ledger is a strong quality signal, but it also means the supported model universe is small. If your model is not on the list, you are in untested territory.
TurboShimmy and the KV Cache Trade-off
One feature stands out: TurboShimmy, an INT4 KV cache compression that the README claims reduces KV-cache memory by about 7 times in tested configurations. The example is running Llama-3.2-3B on a 4GB GPU. That is a meaningful claim because KV cache size is often the bottleneck for long context windows. The mechanism is INT4 quantization of the cache, which trades precision for memory. The README's feature list gives only the memory reduction, not the quality impact on outputs. This is a feature to test yourself, because the certification regimen may not cover the compressed cache mode. The README also mentions YaRN RoPE scaling via SHIMMY_MAX_CTX for extended context. That is a separate mechanism, and the docs/EXTENDED_CONTEXT.md presumably explains the limits. The trade-off is clear: you can run larger models on smaller GPUs, but you are accepting a lossy cache. For a production system, you need to measure whether the output quality degradation is acceptable for your use case.
Where Shimmy Is the Wrong Tool
Shimmy is not a general-purpose inference runtime. If you need to run a model that is not in the certified list, you are on your own. The README says architecture recognition does not automatically mean certification, so the safety net is thin. Also, the v2.0+ migration removed llama.cpp, MLX, HuggingFace, and RustChain backends, so Shimmy is now a pure Airframe product. Cargo.toml makes the Airframe WebGPU engine the default feature and notes that --no-default-features gives a CPU-only build, so a machine without WebGPU needs that build. Another wrong use case is when you need to serve multiple models with different architectures that are not certified. The auto-derivation from GGUF metadata is clever, but it is not a guarantee. For a production API that must serve arbitrary models, a more mature runtime like llama.cpp or vLLM might be safer, despite the Python and C++ dependencies.
Alternatives: Ollama and llama.cpp in Contrast
Cargo.toml describes Shimmy as an Ollama-compatible inference server. Ollama supports a much wider range of models out of the box, and it has a model management system with ollama pull. Shimmy's quick start points at a GGUF file on disk, and model acquisition is covered in docs/quickstart.md. The difference in approach is fundamental: Ollama wraps a C++ engine and offers convenience, while Shimmy strips everything down to a single Rust binary with a WebGPU engine. The trade-off is that Ollama is easier for model discovery, but it brings the dependency weight that Shimmy avoids. Another alternative is llama.cpp directly, which gives you full control over the engine but requires you to build or install a C++ binary and manage its command-line flags. Shimmy's default build uses the Airframe WebGPU engine, with a CPU-only build available through --no-default-features. So the choice is between a minimal, Rust-native server with a small certified model list, versus a heavier, more flexible runtime with broader hardware support. Shimmy is the right choice only if you value the simplicity and the Rust purity over model coverage.
Maintenance, License, and Upgrade Path
The repository metadata lists Apache-2.0, while Cargo.toml declares MIT and the README badge links to the MIT licence. The README emphasizes that Shimmy will be free forever, with no pivot to paid, and it is funded by sponsorship. That is a sustainability model worth noting: the project depends on sponsorship for certification and compatibility work. The recent release history shows v2.6.3 on 2026-08-29, v2.6.4 on 2026-08-30 and v2.6.5 on 2026-10-19, which suggests active maintenance, but it also means the API or behavior could change quickly. The v2.x line removed several backends, so upgrading from v1.x requires migration, as documented in docs/MIGRATION_v2.md. That is a significant upgrade cost if you are on an older version. For new adopters, the maintenance cost is low: it is a single binary, so updates are just a cargo install or a binary replacement. But the dependency on Airframe means you are tied to that engine's roadmap, including MOE support and SafeTensors inference, which are not yet done. Before adopting, check the CHANGELOG and the Airframe changelog to understand the pace of changes and whether the project is stable enough for your needs.
Editorial conclusion
Adopt Shimmy if you need a lightweight, single-binary, OpenAI-compatible server for certified GGUF models on local GPUs, and you want to avoid Python and C++ toolchains entirely. Do not adopt it if you rely on uncertified architectures, need SafeTensors inference beyond loading, or require Mixture-of-Experts support, which is still roadmap work. Before committing, verify that your exact model and quantization combination appears in the certification ledger, check the SHIMMY_MAX_CTX behavior for your context length, and confirm your GPU meets the WebGPU requirements. Shimmy is free (the repository metadata says Apache-2.0, Cargo.toml says MIT), but its long-term viability depends on continued sponsorship and the Airframe engine's maturity, so test it against your specific workload before replacing an existing inference stack.
Frequently asked questions
Is shimmy the inference engine or the server?
The README splits the two: Shimmy is the server, Airframe is the engine, and Airframe sits in a separate repository at v0.4.4. The repository's own one-line description calls shimmy a pure-Rust WebGPU inference engine, which is the engine's role rather than the server's.
What license is shimmy released under?
The files here disagree. The license recorded for the repository is Apache-2.0, while Cargo.toml declares `license = "MIT"` and the README badge links to opensource.org/licenses/MIT. The root holds both a LICENSE file and a NOTICE file, and neither the metadata nor Cargo.toml resolves which one governs.
Which port does shimmy listen on?
The quick start binds 127.0.0.1:11435. The Dockerfile exposes 11435 and binds 0.0.0.0:11435, while docker-compose.yml sets SHIMMY_PORT to 11434, publishes 11434 to the host and sets SHIMMY_HOST to 0.0.0.0, so every interface rather than loopback.
Does shimmy run SafeTensors models natively?
SafeTensors files load through `safetensors_native`, and the README says full Airframe-native inference for SafeTensors remains roadmap work. The Cargo.toml description still advertises native SafeTensors support as a shipped feature.
How much does shimmy shrink KV cache memory?
The README puts TurboShimmy's INT4 KV cache at about 7 times lower KV-cache memory in tested configurations, enough for Llama-3.2-3B on a 4 GB GPU. The compose file calls the same switch a cut of KV cache VRAM of about 60 percent, and leaves the enabling line commented out.
Official sources
Was this useful?