Physical AI agent body apps

A 3D-printed ESP32 robot that types along with the AI agent living on your laptop is a novelty. It’s also a demo of a real pattern: a small microcontroller as a body, a bigger machine as a brain, and a couple of open-source tools stringing them together. The bell it dings when the task finishes is the same LLM tool-call event fired against a GPIO pin.

We looked at seven apps that make that pattern buildable in a weekend. Two are firmware environments for the microcontroller, one is the orchestration layer most self-hosters already run, one is the agent framework that turns LLM calls into device actions, and three are supporting tools for voice, scripts, and no-code glue.

What to look for

Quick comparison

App Best for Platforms Free plan Price License
ESPHome ESP32/8266 firmware from YAML Windows, macOS, Linux, Docker Yes Free GPL / MIT
PlatformIO Full-fat IDE for embedded Windows, macOS, Linux Yes Free (Pro paid) Apache 2.0
Home Assistant The message bus and dashboard Windows, macOS, Linux, Docker Yes Free Apache 2.0
LangChain Agent framework with tool calls Windows, macOS, Linux Yes Free (SDK) MIT
Willow Local voice on ESP32 hardware Windows, macOS, Linux Yes Free Apache 2.0
MicroPython Python on the microcontroller Windows, macOS, Linux Yes Free MIT
n8n No-code glue between agent and hardware Windows, macOS, Linux, Docker Yes Free (self-host) Fair-code

1. ESPHome – Best for ESP32/8266 firmware from YAML

ESPHome flashes an ESP32 or ESP8266 with firmware built from a YAML description. Declare the pins, the sensors, the buttons, the servos; ESPHome compiles a binary, uploads it over USB or OTA, and connects the device to Home Assistant with zero glue. That’s the fastest path from bare board to “agent controllable device”.

Where it falls short: YAML is not the same as C. Some low-level tricks require writing lambdas that are half-code, half-config.

Pricing:

Platforms: Windows, macOS, Linux, Docker.

Download: esphome.io.

Bottom line: The default first firmware layer. Weeks of C++ development compressed into a hundred lines of YAML.

2. PlatformIO – Best full-fat IDE for embedded

PlatformIO is what you graduate to when ESPHome’s abstraction doesn’t fit. It’s an IDE (or a VS Code extension) that speaks Arduino, ESP-IDF, STM32Cube, and dozens of other frameworks, with a package manager for libraries. When the AI agent needs a robot arm driven by inverse-kinematics code, that code lives in PlatformIO.

Where it falls short: The Pro tier gates some advanced debugging features. Learning curve is real if you haven’t done embedded.

Pricing:

Platforms: Windows, macOS, Linux.

Download: platformio.org.

Bottom line: The IDE for anything ESPHome can’t declaratively describe.

3. Home Assistant – Best message bus and dashboard

Home Assistant is the layer that lets an LLM tool call reach the physical world. The agent hits an HTTP endpoint or an MQTT topic; Home Assistant translates that into “toggle a switch” or “spin the servo to 45 degrees” and the ESP32 obeys. It also provides a UI to see what the robot is doing without opening a terminal.

Where it falls short: Steep learning curve if you haven’t set one up before. The add-on ecosystem is powerful but noisy.

Pricing:

Platforms: Windows, macOS, Linux, Docker, dedicated OS.

Download: home-assistant.io.

Bottom line: The middle layer that keeps the agent code decoupled from the hardware.

4. LangChain – Best agent framework with tool calls

LangChain is the SDK that turns an LLM into a tool-using agent. Define a tool (“ring the bell”), pass it in the tool schema, and the model decides when to call it. Combined with a Home Assistant HTTP tool, the agent gets a robot’s whole capability set without knowing anything about MQTT.

Where it falls short: Rapidly evolving API. Some patterns from a year ago are already deprecated.

Pricing:

Platforms: Windows, macOS, Linux (Python and JS/TS).

Download: python.langchain.com or js.langchain.com.

Bottom line: The way to give a local LLM the ability to call a “ring the bell” tool.

5. Willow – Best local voice on ESP32 hardware

Willow turns an ESP32-S3 with a mic array into a Home Assistant voice endpoint that runs entirely on your network. Wake word detection on-device, speech-to-text hosted on your own server, and the transcribed request routed to Home Assistant or a local LLM. No cloud, no account, no data leaving the room.

Where it falls short: Board choice is narrow (the ESP32-S3 BOX line, mostly). Requires a Willow Inference Server on a beefier machine.

Pricing:

Platforms: Windows, macOS, Linux (for the inference server).

Download: heywillow.io.

Bottom line: For anyone who wants the robot to hear and talk without a cloud dependency.

6. MicroPython – Best for Python on the microcontroller

MicroPython runs a Python interpreter on an ESP32 or RP2040, so the firmware you write and the agent code you write look like the same language. That’s a real win for the developer who wants to prototype servo motion or LED patterns without leaving Python.

Where it falls short: Slower than C for tight loops. Less power-efficient than ESPHome for a battery-powered device.

Pricing:

Platforms: Windows, macOS, Linux for the flash tools.

Download: micropython.org.

Bottom line: For the prototype where speed of iteration matters more than watts saved.

7. n8n – Best no-code glue between agent and hardware

n8n is the self-hosted workflow tool that connects the LLM API, Home Assistant, ESPHome, a database, and any HTTP endpoint you can imagine, on a graph. When you want “if the agent said the task is done, ding the bell and log the timestamp”, n8n is the fast way to build it without writing a service.

Where it falls short: Not built for real-time. Fine for tool-triggered flows, not for tight sensor loops.

Pricing:

Platforms: Windows, macOS, Linux, Docker.

Download: n8n.io.

Bottom line: The connective tissue between the agent’s output and the robot’s actions.

How to pick the right one

FAQ

Do I need a Raspberry Pi as well as an ESP32? Not always. For simple bodies, the ESP32 alone is enough with a cloud or LAN-hosted LLM. For richer bodies with local voice inference, a Pi 4 or 5 hosts the model and the ESP32 stays as the body.

What’s the cheapest board to start with? An ESP32 dev board is a few dollars. Add servos, a small speaker, an OLED display, and you’re under $30 for a bell-ringing robot.

Can I do this without an internet connection? Yes, if you self-host the LLM (Ollama, LM Studio, or Llama.cpp) and use Willow for voice. The whole stack — mic to LLM to servo — can live on your LAN.

Is this safe? Can the agent break things? Only in the ways you let it. Give the agent HTTP endpoints for the actions it’s allowed to take; don’t hand it root access to the Home Assistant server. Cap servo travel and current in firmware.

What is the ESP32 3D-printed robot everyone is sharing? It’s a small case around an ESP32-S3 dev board, an OLED for eyes, and a servo-driven bell. The point is not the bell — it’s the pattern of “AI agent gets a physical presence in the room”. Everything in this article gives you the parts to build one.