CLI tool
Michael-A-Kuykendall/shimmy avatar
Michael-A-Kuykendall/shimmy

Shimmy: A 5MB 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.

5,876 stars569 forksRustApache-2.0

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 16 days 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 September 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE 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 5MB alternative to Ollama, 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, 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. One thing to note: the binary size is claimed at 5MB, which is plausible for a Rust binary with no heavy runtime, but the README does not give a measured size for the installed binary. 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-1B-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 does not specify the quality impact on outputs, only the memory reduction. 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. That means there is no fallback if WebGPU is not available on your GPU. If you are on a machine without WebGPU support, such as an older server or a headless environment without a GPU, Shimmy will not run. The README does not specify CPU fallback, and the WebGPU requirement is explicit. 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

The README positions Shimmy as an alternative to Ollama. Ollama is a larger binary, typically over 1GB, and it bundles llama.cpp under the hood. Ollama supports a much wider range of models out of the box, and it has a model management system with ollama pull. Shimmy does not have that; you must supply your own GGUF file. 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. llama.cpp also supports CPU inference, which Shimmy does not appear to. So the choice is between a minimal, GPU-only, 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 project is under Apache-2.0, which is permissive and allows commercial use with attribution. 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 release history shows three releases within two days (v2.6.1, v2.6.2, v2.6.3), 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 under Apache-2.0, 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.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes