Two ways to react to CrankGPT, the hand-cranked offline AI box that hit the top of Hacker News in mid-June 2026: admire it as a stunt, or notice that the actually useful part – a complete local voice assistant running on an $80 board – is something you can build tonight without ever touching a generator.
The second one is the right reaction. The crank is the meme. The software stack is the gift.
What CrankGPT actually solves (it’s not the apocalypse)
Local AI assistant on a Raspberry Pi has been a graveyard of half-finished tutorials for years. Every one stitches together a different ASR, a different LLM runner, a different TTS – and none of them quite talk to each other. CrankGPT is different because it’s a published, working bill of materials with a single coherent software stack. Strip out the crank and you inherit all that optimization work for free.
The team demonstrated more than voice Q&A: they generated images, wrote code, and produced poetry with the same setup – all offline, per the Squeez Labs official documentation. No battery, no cloud, no subscription. What’s interesting is that forced constraint – running on hand-generated power – pushed the software choices to be leaner than anything a comfort-driven developer would have chosen voluntarily.
Build the crank vs. copy the stack
| Approach | What you build | Cost & time | Practical use |
|---|---|---|---|
| Full CrankGPT replica | Pi 5 + ReSpeaker HAT + 20W hand generator + custom capacitor board + 3D-printed enclosure | ~$200+, weeks of board revisions | Demo piece. Real conversations require constant cranking. |
| Stack only (recommended) | Pi 5 + USB mic + USB speaker + wall adapter | ~$90, one evening | Daily-driver offline voice assistant. Same software, no brownouts. |
The crank forced Squeez Labs to optimize ruthlessly. According to Hackster.io’s coverage, speech recognition alone is a real power draw – about 8W – and running ASR, the LLM, and TTS at the same time can hit ~15W. Current spikes during inference triggered the generator’s protection circuitry and caused brownouts. You get to inherit the lean software choices that problem produced. You don’t get to inherit the pain.
The CrankGPT stack, decoded (as of mid-2026)
Four pieces. Why each one was chosen matters as much as what it is:
- OS – DietPi. Almost all startup time goes into model loading, not the OS. DietPi gets to a usable state in roughly 3 seconds (per letsdatascience.com’s writeup of the Squeez Labs build). Use it instead of full Raspberry Pi OS if cold-start time matters to you.
- ASR – Moonshine. Low latency, ONNX-based, built for edge devices. The useful part: it now ships with built-in TTS via voice ID prefixes like
kokoro_orpiper_(per the Moonshine GitHub README). One package, two jobs. - LLM – llama.cpp, sub-2B model. Squeez Labs runs Liquid AI’s LFM2 at 350M and 1.2B parameters, plus Google’s Gemma 3 at 1B. Sub-second replies on LFM2-350M; ~3s on Gemma 3 1B. Pick your tradeoff.
- TTS – Piper. Uses VITS-trained ONNX voice models. Well-tested on Pi hardware – the PiDIYLab community guide calls it the best-tested offline TTS option available for Pi as of mid-2026.
Turns out PyTorch was the RAM hog. The Squeez Labs docs confirm all four components run on ONNX Runtime – PyTorch dependencies were removed entirely. One design rule worth keeping: stay on ONNX, skip PyTorch on a Pi.
Is a sub-2B parameter model actually good enough for daily use? For narrow, predictable tasks – recipe questions, unit conversions, simple reminders – yes. For anything requiring multi-step reasoning or long context, probably not yet. That’s not a criticism of CrankGPT; it’s an honest description of where edge inference sits right now.
Build it: wall-powered version in one evening
Right. Hardware: Raspberry Pi 5 (8GB), the official 27W PSU, a fast SD card (A2-rated), any USB microphone, a speaker. No HAT, no capacitors, no crank.
1. Flash DietPi
Grab the 64-bit Pi 5 image from dietpi.com, write it with Raspberry Pi Imager, boot. First boot configures itself – say no to every optional package.
2. Install llama.cpp and pull a small model
sudo apt install -y build-essential cmake git
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && cmake -B build && cmake --build build -j
# Pull a Q4-quantized GGUF of LFM2-1.2B - check the model card for the exact filename
./build/bin/llama-cli -m lfm2-1.2b-q4_k_m.gguf -p "Hello"
Model fits in RAM and responds in a few seconds? You’re past the hardest part. Community testing consistent with the Squeez Labs benchmarks confirms Q4 quants make sub-2B inference workable on CPU-only Pi hardware.
3. Wire in Moonshine for voice
Install the moonshine-ai Python package, point it at a Piper voice, and full-duplex voice runs in about 20 lines of Python. The loop: capture audio → Moonshine transcribes → feed text to llama.cpp → pipe response to Piper → play. The Moonshine GitHub walks through the exact API. Start there.
Start with LFM2-350M, not Gemma 3. Sub-second replies (per Squeez Labs benchmarks) feel live. The ~3s lag on Gemma 3 1B makes every exchange feel like dial-up. Upgrade only after the loop works end-to-end.
The gotcha nobody connects
The Pi 5 has no sleep mode or DRAM preservation – confirmed in the Squeez Labs docs. Every voltage dip below minimum requirements means a full cold boot from zero. Squeez Labs hit this because of crank brownouts. You’ll hit it because you grabbed a $9 USB-C charger from a drawer.
Combined ASR + LLM + TTS load: ~15W. The official 27W Pi 5 PSU handles it. A random 15W phone charger will sag during inference and reboot your Pi mid-sentence. Use the official supply, or any 5V/5A USB-C PD adapter. This isn’t a Pi quirk – it’s the same problem Squeez Labs solved for the crank, now showing up in your cable drawer.
Real-world: a private kitchen assistant
I tested the stack on one use case: hands-free recipe help. “How long do I bake chicken thighs at 200°C?” – answer in ~2 seconds on LFM2-1.2B. No cloud round-trip, no eavesdropping, no monthly fee. The model occasionally hallucinated cooking times – small models do – but for Fahrenheit conversions, spoken reminders, and “what can I substitute for buttermilk,” it was already more useful than my phone. I didn’t have to wipe flour off the screen to ask.
One honest gap
Published latency numbers – under 1s on the smallest model, ~3s on Gemma 3 1B – come from the project page, but there’s no benchmark table comparing all three models on identical prompts. Boing Boing’s summary and the Squeez Labs docs report numbers, but not side-by-side under controlled conditions. If you build this, run your own tests. Your prompts and your SD card speed will move those numbers.
FAQ
Do I need to buy the ReSpeaker HAT?
No. Any USB microphone works for a desk-side setup.
Can I run this on a Pi 4 instead?
Technically yes, with the 350M model. The Pi 5’s faster CPU and LPDDR4X memory bandwidth are what make a 1B-parameter model feel live – on a Pi 4, community reports suggest 5-10s response times even on small models, and TTS can stutter while the LLM is loading context. Worth prototyping on a Pi 4 if that’s what you have, but plan to move to a Pi 5 for anything you’ll actually use daily. The experience gap is real.
Is this really private?
Yes. Once installed, nothing leaves the device – the only network calls happen during the initial model downloads.
Your next step
Flash DietPi, get llama.cpp compiling, pull LFM2-350M. By the time the build finishes you’ll know whether you want the crank. Most people, after about an hour with the working stack, realize they just wanted a private voice assistant all along. CrankGPT handed them the recipe.