Much like how BusyBox crams many standard Unix commands and a shell into a single executable, so too does BreezyBox provide a similar experience for the ESP32 platform. A demo implementation is also provided, which uses the ESP32-S3 platform as part of the Waveshare 7″ display development board.
Although it invokes the BusyBox name, it’s not meant to be as stand-alone as it uses the standard features provided by the FreeRTOS-based ESP-IDF SDK. In addition to the features provided by ESP-IDF it adds things like a basic virtual terminal, current working directory (CWD) tracking and a gaggle of Unix-style commands, as well as an app installer.
The existing ELF binary loader for the ESP32 is used to run executables either from a local path or a remote one, a local HTTP server is provided and you even get ANSI color support. Some BreezyBox apps can be found here, with them often running on a POSIX-compatible system as well. This includes the xcc700 self-hosted C compiler.
You can get the MIT-licensed code either from the above GitHub project link or install it from the Espressif Component Registry if that’s more your thing.

Very, VERY nice !
The direction all my microcontroller projects go is to eventually provide some sort of interactive shell (mine tend to happen in a way that is abstracted so that it can happen via either serial or a web interface or sometimes even I2C). That seems to be the most compact way to add functionality to a device, and it also wraps nicely in a graphical shell should you need to do things that way. I’ve built an enormous amount of functionality into ESP8266s, to the point where I have all these ESP32s on hand for “something that requires them” but haven’t yet used them.
Got a git repo somewhere ?
Check out my ESP8266 remote control system — I recently added OTA updates and even I2C updates of the firmware of attached I2C slaves. It has support for REPL-like command system that works over both serial and a web interface. https://github.com/judasgutenberg/Esp8266_RemoteControl
Never mind, was just there one click away :D Thx!
I don’t need all that for a simple device.I just want to swap the firmware with firmware off of an sd card. a bootloader should do that, right?
You don’t but these “simple devices” are roughly equivalent of Pentium PCs that were cutting edge a long time ago, but not really that long time ago. I had my first Linux experience on a 386DX40 with 4M of RAM. So it’s all good fun.
Good fun and lots of work. I have a device with a camera an lcd 5 buttons and an sd card. it has wifi and bluetooth built in. I can carry it in my pocket. I think i used every possible input and output. it’s like a development board. it has many possible uses but only if i can change the firmware. it’s stuck doing one thing at a time.
Nsh is the shell of NuttX:
https://nuttx.apache.org/docs/latest/applications/nsh/index.html
Although i don’t see vi on there.