A TALKING BMO FROM ADVENTURE TIME THAT RUNS ITS AI WITH NO INTERNET
Say its wake word and this Adventure Time character listens, thinks and answers using AI models running on a Raspberry Pi inside it.
by brenpoly
AIDisplays
Built withRaspberry Pi3D printing
- difficulty
- ●●●●○
- time
- a weekend-plus
- license
- MIT
- repo
- repo ACTIVE1,113 stars
●●●●○ · a weekend-plus · MIT · 1,113 stars · repo ACTIVE
WHAT YOU’LL NEED
Jump to section
COMPAREE VERDICT
This is a complete offline-first voice assistant disguised as BMO from Adventure Time. It listens for a wake word with OpenWakeWord, turns speech into text with Whisper.cpp, thinks with a local LLM through Ollama and speaks back with Piper TTS, while the face on the touchscreen reacts. With a camera and the Moondream vision model it can look at things and describe them, and it can search DuckDuckGo when the model doesn't know an answer. brenpoly designed the case, fine-tuned the voice and wrote the Python agent that ties it all together. The code is MIT licensed; the 3D files are non-commercial only. The repository is thorough: install script, config file, face sequences and sound effects are all included, and the Releases page carries the BMO voice, 3D assets and PCB files. The classic trap is the voice: if the sample rate in agent.py doesn't match the voice model, BMO sounds slow and deep, and the README has a troubleshooting section for exactly that. The README asks for a Pi 5 (or a Pi 4 with at least 4GB of RAM); brenpoly's build uses a 16GB Pi 5 on an NVMe base with a UPS shield and battery, so the hardware bill is not small. You need to be comfortable in a terminal. If you want a cloud-free voice assistant with a lot of personality, this is one of the most complete projects of its kind.
IN THE REPO
GOOD TO KNOW
- —Code is MIT licensed. The README puts the 3D models under CC BY-NC-SA 4.0; the Printables listing shows CC BY-NC. Either way: non-commercial only.
- —STL and PCB files are on Printables (linked from the video description); the GitHub Releases page also has a 3D assets zip, PCB Gerbers and the controller sketch.
- —No BOM file: the README describes the hardware briefly, and the video description lists every component.
- —Custom BMO voice model downloadable from the Releases page (setup.sh fetches it automatically).
- —Software setup is scripted, but you need to be comfortable on the Raspberry Pi command line.
- —Non-commercial fan project, not affiliated with Cartoon Network or Warner Bros. Discovery.
Parts to buy
11 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
- Raspberry Pi 5 16GBFind
- Raspberry Pi Camera Module v2Find
- Pimoroni NVMe Base DuoFind
- Geekworm X1203 5V UPS shieldFind
- 3.7V lithium-ion batteryFind
- Freenove 5 inch touchscreenFind
- Adafruit Feather 32u4 Basic ProtoFind
- Mini USB microphoneFind
- Mini USB speakerFind
- 7 x 6mm momentary switchesFind
- 16 x 5x2mm magnetsFind
Can I build this?
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
Videos
I made a real BMO local AI agent with a Raspberry Pi and Ollama20:29
Full build video: hardware breakdown, enclosure design, software deep-dive, assembly and a demo of the finished agent.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 1.Check the hardware requirements (Pi 5 recommended (Pi 4 with 4GB RAM minimum), USB microphone and speaker, screen, Pi camera. The full component list is in the video description.)
- 2.Install Ollama and pull the models (The README walks you through installing Ollama and pulling the gemma and moondream models.)
- 3.Clone the repository and run setup.sh (The script installs system libraries, downloads Piper TTS and the BMO voice, and sets up the Python virtual environment.)
- 4.Download the 3D files from Printables (STL files for the case and the button PCB files.)
Resources
Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.
KNOWN ISSUES
- Model size matters: the README asks for a Pi 5, or a Pi 4 with at least 4GB of RAM. brenpoly's build uses a 16GB Pi 5.
- The custom BMO voice will sound slow and demonic if PIPER_RATE in agent.py does not match the sample_rate in the voice model's .json file. The README has a whole troubleshooting section on this.
- There is no BOM file in the repo: the component list lives in the YouTube video description.
- The 3D files are for non-commercial use only, so you cannot sell the case or builds of it.
- Camera rotation is a manual setting in config.json.
- The default wake word is 'Hey Jarvis', not 'BMO'. To change it, train your own model with OpenWakeWord and save it as wakeword.onnx.
Can I run this on a Pi 4?
The README lists a Raspberry Pi 5 as recommended, or a Pi 4 with at least 4GB of RAM. brenpoly's own build uses a Pi 5 with 16GB.
Where are the 3D files?
The STL and PCB files are on Printables (linked from the build video description), and the GitHub Releases page also carries a 3D assets zip, the controller PCB Gerbers and the controller sketch.
Why does the voice sound like a demon?
Sample rate mismatch. Check the sample_rate in the voice model's .json file and set PIPER_RATE in agent.py to the same number. The README troubleshooting section covers this, plus the length_scale setting.
Can I sell a build of this?
No. The 3D models are licensed for non-commercial use only, and BMO and Adventure Time are trademarks of Cartoon Network and Warner Bros. Discovery. The code itself is MIT.
Does it need internet at all?
Only for setup and for the optional web search: when the model doesn't know an answer, it can look it up on DuckDuckGo. Speech recognition, the language model and the voice run locally on the Pi.
Community builds
No community builds yet — be the first, we feature the best ones.
Discussion1
FROM THE COMPAREE TEAM
brenpoly's BMO runs speech recognition, a language model and a custom BMO voice on a Raspberry Pi with no cloud. What would you ask it first?
brenpoly
brenpoly designed and 3D printed the BMO enclosure and a small button PCB, fine-tuned a Piper voice to sound like BMO, and wrote the Python agent that ties together the wake word, Whisper, Ollama and Piper. The software is built as a blank canvas: swap the face images and sounds and it becomes a different character.
DISCLAIMER
- Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
- Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
- Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.
CompareeTEAM5d ago
Practical notes from our verification: the install script downloads Piper TTS and the custom BMO voice from the Releases page, so you do not have to hunt for dependencies. The README is unusually honest about the sample rate trap: skip the troubleshooting section and the voice will sound like a slow demon, and you will think Piper is broken. The case files are on Printables (linked from the video description) and also as a zip on the Releases page, together with the PCB Gerbers. The video is a full build walkthrough with chapters; the software installation steps are in the README.