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

FULL CAD BOM FIRMWARE DOCS

AIDisplays

Built withRaspberry Pi3D printing

difficulty
●●●●○
time
a weekend-plus
license
MIT
repo
repo ACTIVE1,113 stars
1
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.

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 items

From 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?

Print3D printed case, STL files on Printables (non-commercial licence)
BuyRaspberry Pi 5 16GB, Raspberry Pi Camera Module v2, Pimoroni NVMe Base Duo, Geekworm X1203 5V UPS shield, 3.7V lithium-ion battery, Freenove 5 inch touchscreen, Adafruit Feather 32u4 Basic Proto, mini USB microphone, mini USB speaker, 7 x 6mm momentary switches, 16 x 5x2mm magnets
Tools3D printer, soldering iron for the button PCB, terminal access to the Raspberry Pi
SkillsIntermediate Linux command line, basic soldering, patience with voice model sample rates
TimeA weekend-plus: printing the case, assembly and the scripted install, then time for voice and camera tweaks
Cost$$$, driven mostly by the 16GB Pi 5, NVMe base, UPS shield and touchscreen
SafetyRuns on a 3.7V lithium-ion battery through the UPS shield: don't crush or puncture the cell when closing the printed case and don't leave it charging unattended. No mains voltage involved.

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 projects

Gallery

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 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. 2.Install Ollama and pull the models (The README walks you through installing Ollama and pulling the gemma and moondream models.)
  3. 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. 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?

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.

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.

GitHub Web

Star the project on GitHub

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.