What You’re Building: A Tiny Body with a Local AI Soul
A DIY AI assistant on a local AI microcontroller is a small, always-available system that performs speech recognition, runs an offline language model, and speaks back to you without depending on the internet, cloud APIs, or remote servers, making it ideal for privacy‑conscious hobbyists and developers who want full control over their edge AI ESP32 projects.
Think of this as giving a compact device both a body and a soul. In one flavor, Stack-Chan Minimal uses a tiny robot body powered by an M5Stack AtomS3R AI Chatbot Kit, which combines the AtomS3R with an audio interface and a 3D‑printed casing. The result is a keychain‑sized companion that can listen, think, speak, show facial expressions, and optionally move while exposing the speech‑to‑text, offline language model, and text‑to‑speech pieces in a way you can poke and modify. In another flavor, NanoMind‑S3 focuses on compact LLM deployment, running a fully dense 15.2M‑parameter LLaMA‑2 model on a single ESP32‑S3 DevKitC‑1 using bare‑metal C and a serial terminal.
Both projects prove that modern conversational AI does not need a data center to be useful. One quotable takeaway from NanoMind‑S3 is: “The model generates short, coherent children's stories in real time through a serial terminal interface … at approximately 2.96 tokens per second.” That’s not laptop‑fast, but it is hands‑on, hackable, and completely offline.
What You Need: Hardware, Local AI Services, and a Bit of Patience
Before you start wiring and flashing firmware, it helps to know what you’re signing up for. You’re building two kinds of DIY AI assistant: a face‑and‑voice robot and a text‑only compact LLM on an edge AI ESP32. Both are reproducible builds aimed at Makers, developers, and hobbyists, but neither is plug‑and‑play. Expect to spend more time configuring tools and models than tightening screws.
| Layer | Stack-Chan Minimal | NanoMind-S3 |
|---|---|---|
| Core board | M5Stack AtomS3R AI Chatbot Kit (AtomS3R + audio interface + 3D‑printed body) | ESP32‑S3 DevKitC‑1 N16R8 with 16MB Flash and 8MB Octal PSRAM |
| AI role | Robot body and Wi‑Fi link to local STT, LLM, and TTS | Fully dense 15.2M‑parameter LLaMA‑2 TinyStories model on‑chip |
| Interface | Face display, microphone, speaker, optional motion | USB serial terminal (UART) for prompts and outputs |
| Backend services | whisper.cpp for speech recognition, llama.cpp or Ollama for conversation, piper‑plus for TTS | Bare‑metal C firmware; model weights quantized in Python exporter |
On the Stack-Chan side, you’ll run speech recognition, the offline language model, and text‑to‑speech on a host device such as a PC or Android phone, then connect over Wi‑Fi. On the NanoMind side, everything happens inside the ESP32‑S3: the board’s dual‑core Xtensa LX7 at 240MHz and 8MB of 80MHz Octal PSRAM handle real Transformer math while you interact through a serial terminal. Neither project hides its guts; they’re meant to be examined, broken, and rebuilt.

Step-by-Step: Wiring Up Your Local AI Microcontroller Assistant
Here’s a practical sequence that combines the Stack-Chan Minimal robot with NanoMind‑style compact LLM deployment. The idea is to give yourself a physical assistant you can talk to while also having a tiny board that proves an offline language model can live fully on microcontroller hardware.
- Assemble the robot body: mount the M5Stack AtomS3R AI Chatbot Kit—AtomS3R, audio interface, and 3D‑printed Stack‑Chan body—so the display is visible and the microphone and speaker are unobstructed.
- Flash the Stack-Chan Minimal firmware using the provided PlatformIO project so the AtomS3R can act as the robot’s face, control logic, and Wi‑Fi communication layer.
- Set up your local AI backend on a PC or Android device: install whisper.cpp for speech‑to‑text, a local LLM server compatible with an OpenAI‑style API such as llama.cpp or Ollama for conversation, and a TTS server like piper‑plus for speech output.
- Use the robot’s Wi‑Fi configuration portal to set network and server addresses, so the Stack-Chan body can send audio to whisper.cpp, route recognized text to your local LLM, then forward responses to the piper‑plus TTS server.
- On a separate ESP32‑S3 DevKitC‑1 N16R8, load the NanoMind‑S3 bare‑metal C firmware along with the exported INT4 stories15M LLaMA‑2 model weights mapped into SPI Flash, following the project’s source code and partition table.
- Connect to the NanoMind‑S3 board via USB serial terminal, type a short prompt, and watch it generate coherent text token by token, confirming your compact LLM deployment at roughly 2.96 tokens per second.
- Iterate: swap speech recognizers, try different local LLMs on the Stack‑Chan backend, or adjust model quantization and KV‑cache sizes on NanoMind‑S3 to see how behavior changes while the physical hardware stays the same.
The gotcha in this workflow is that the intelligence in each assistant lives somewhere specific. In Stack-Chan Minimal, the robot is deliberately minimal: it acts as a Wi‑Fi‑connected body, while the AI backend—the “soul”—runs on a host machine and can be swapped without changing the robot hardware. In NanoMind‑S3, the entire offline language model is bound by the ESP32‑S3’s memory architecture, using Flash MMU‑mapped INT4 weights and Octal PSRAM for KV‑cache and activations. If you treat either side like a generic gadget, you’ll struggle; treat them like tuned systems, and they become powerful little labs.
Why This Is Worth It, and How to Keep It Reproducible
Once you’ve gone through the wiring, firmware flashing, and local service setup, you end up with two complementary DIY AI assistants. Stack-Chan Minimal gives your favorite local LLM a tiny physical body that can listen, think, speak, and express emotions while exposing speech‑to‑text, conversation, and text‑to‑speech as separable modules. NanoMind‑S3 proves that you can run a fully dense, actively computed 15.2M‑parameter LLaMA‑2 model on a single ESP32‑S3 board through pure matrix math. Both are edge AI examples: they keep the intelligence near the user and under your direct control.
Pros
- Offline language model behavior with no cloud or Wi‑Fi dependency for NanoMind‑S3.
- Robot intelligence that can be upgraded or replaced without rebuilding the Stack‑Chan body.
- Reproducible Maker projects with public source code, documentation, and configuration portals.
Cons
- Setup demands comfort with firmware tools, serial terminals, and multiple local AI services.
- Performance is constrained by microcontroller limits; long or complex replies will feel slow.
- You must manage memory and configuration yourself; small mistakes can break the build.
Both projects are intentionally reproducible. Stack-Chan Minimal ships as a structured PlatformIO project with source, documentation, and 3D case files, plus a Wi‑Fi configuration portal to avoid hard‑coded credentials. NanoMind‑S3 publishes full source code, build guide, partition table, and documentation. They are not polished consumer products, and that’s the point: they invite you to explore edge AI ESP32 boards, experiment with different offline language models, and share your own variations. If you want an AI assistant you understand inside out, this path is worth the extra work—as long as you stay mindful of where each piece lives and how tightly it fits the hardware.








