Open by default
Code, methodology and limitations are part of the result.
Local AI benchmarks / Düsseldorf, Germany
Efficiency is a feature, not a compromise. A bee doesn't carry a supercomputer in its head — it has just enough intelligence to do its job exceptionally well. We engineer AI the same way: our sub-1 MB C23 engine geist makes small models do real work on hardware you already own — whether that's ternary BitNet outpacing Microsoft's runtime on a Raspberry Pi, Gemma 4B answering questions from your own documents, or tiny models with the agent skills to drive real tools.
brew install geisten/tap/geist
geist -m bitnet-2b.gguf "What is the capital of France?"
Research focus
A bee navigates, communicates and builds with a brain of one million neurons — no supercomputer required, just enough intelligence for the job. That is our engineering standard. While much of the industry scales models up, we scale them down. The question behind every geisten project is simple: what is the smallest model that solves this problem?
We don't believe the future is one giant model running everywhere. It's thousands of focused models, each doing one job well, running where the data lives. That's why geisten starts from the constraints — memory, compute and the task itself — and publishes the measurements to prove what works.
Use the results to choose a system. Everything needed to repeat a measurement — code, weights and method — is linked from each entry.
Working principles
Code, methodology and limitations are part of the result.
A number without hardware, model and method is an impression, not a result.
Local execution is the starting point, not the add-on.
The smallest capable model is often the better system.
A result becomes useful when it can be repeated.
A model becomes useful when it touches real sensors and real interfaces.
Research journal
17.4 tok/s, CPU-only: a reproducible BitNet benchmark on a Raspberry Pi 5.
Benchmark / RuntimeLatency distribution instead of the average: what parallelism actually costs.
Investigation / RAGWhen retrieval can replace model size and where it cannot.
Notes / ArchitectureNotes on compact models and their suitability for fixed tasks.
Measurement, not impression
Faster than you can read, on an €80 computer, CPU-only. Same weights, same hardware: 2.1× bitnet.cpp. The engine is one binary under 1 MB.
| System | Measurement | geist | Reference |
|---|---|---|---|
| Raspberry Pi 5 / BitNet b1.58 2B-4T | Decode | 17.4 tok/s | 8.2 tok/s bitnet.cpp |
| AMD 9950X / BitNet b1.58 2B-4T | Decode | 103.1 tok/s | 54.3 tok/s bitnet.cpp |
| Raspberry Pi 5 / Gemma 4 E2B-it | Decode | 7.5 tok/s | 6.8 tok/s llama.cpp |
| AMD 9950X / Gemma 4 E2B-it | Decode | 48.6 tok/s | 44.1 tok/s llama.cpp |
| Model | Quantization | Size on disk | RAM required |
|---|---|---|---|
| BitNet b1.58-large | TQ2_0 | 207 MB | ≥ 1 GB |
| BitNet b1.58 2B-4T | i2_s | 1.1 GB | ≥ 4 GB |
| Gemma 4 E2B-it | Q4_K_M | 2.9 GB | ≥ 4 GB |
| Gemma 4 E4B-it | Q4_K_M | 4.6 GB | ≥ 6 GB |
CPU-only, identical GGUF weights, both engines warmed up and started from a cool baseline. References: llama.cpp d05fe1d (Raspberry Pi 5, OpenBLAS) and b9827 (AMD 9950X); bitnet.cpp is microsoft/BitNet master via its bundled llama-bench. Pi 5 measured June 2026 on a quiesced board (gcc 14.2, kernel 6.18); 9950X re-measured 13 July 2026 (16 threads). Energy and CPU-utilization columns are still missing — we are wiring them into the harness now, and they will appear here as measurements, not adjectives.
Projects in the open
A compact inference engine for small CPU systems. Statically linkable, one binary under 1 MB, with hand-written ARM NEON and AVX-512 kernels and a clear measurement interface.
A voice assistant for Home Assistant: about 2 seconds from voice command to action on a Raspberry Pi 5, fully offline. BitNet has no tool training — geist forces a valid tool call from outside the sampler, so a 2B base model routes and calls whitelisted tools anyway.
Direction of travel
Measurable CPU inference for small systems: one auditable C runtime, one binary, zero dependencies.
Aggressive quantization built into the runtime, not bolted on — optimised for CPUs, small GPUs and the Raspberry Pi 5.
Tight harness, fixed algorithms, whitelist-gated tools — evaluated against reproducible tasks.
Memory shaped for what these models can actually hold, plus efficient vision on embedded hardware.
Adaptive model behaviour: many specialised systems working together instead of one general model.
Build in public
geisten is open to developers, embedded engineers and researchers who want to make Efficient AI practical. If you measure something different on your hardware, that is not a problem — that is a data point. Discussions, bug reports and reproducible counter-measurements are welcome.