A free, open-source emulator for 19 embedded boards: Arduino, ESP32, Raspberry Pi, RISC-V , running real compiled code in your browser.
The best part: it's fully local.
No cloud dependency. No student accounts. No data leaving your network. Self-hostable with a single Docker container.
Universities and bootcamps can deploy it on their own servers and give every student access to a complete embedded development environment, for free.
I've been working on this for over a year, and just shipped v2.0 with ESP32 emulation (via QEMU), a custom RISC-V core, and Raspberry Pi 3 support that runs real Python
The main advantage is accessibility and ease of use: with the browser, no setup is required on the user’s side, no toolchains need to be installed, and there’s no need to be familiar with SSH or terminal workflows
It also provides a more visual and interactive environment (editor, peripherals, simulation controls), which is especially useful for teaching and for beginners.
The Docker image is there so you can easily install it on your own machine if you want to run it locally or work on development
Is it easy to feed an elf or bin and run that (esp32c3)? I see compilation available, but I'm playing with asm and have my toolchain figured out already and would just like to emulate the firmware.
Hey HN, I posted Velxio here a while back and got great feedback. Since then I've shipped a major update
What's new in v2:
- 19 boards across 5 CPU architectures (AVR8, Xtensa, RISC-V, ARM Cortex-M0+, ARM Cortex-A53)
- ESP32 emulation via QEMU (lcgamboa fork) — real flash images, ROM function emulation, GPIO/ADC/timers
- ESP32-C3 and CH32V003 run on a custom RISC-V core written in TypeScript, entirely in the browser
- Raspberry Pi 3B via QEMU raspi3b — boots real Pi OS, runs Python
- Realistic sensor simulation: DHT22 (40-bit protocol timing), HC-SR04 (trigger/echo), WS2812B NeoPixel (GRB decoding)
- 48+ electronic components from wokwi-elements
Architecture:
- AVR, RP2040, and RISC-V emulation runs client-side (avr8js, rp2040js, custom TS core)
- ESP32 Xtensa and Pi 3 run on backend QEMU
- Compilation via real arduino-cli
- React + Vite frontend, FastAPI backend
- Self-hostable via Docker, no account needed
Nice work! One minor point for me: it wasn’t immediately clear that you need to press Compile before Play gets enabled (e.g. Arduino IDE let's you upload right away and compiles if needed)
Exactly,that’s the idea. Not having to flash the chip a thousand times just to see if everything works. The goal is to let you test the setup as fast as possible, ideally without installing anything locally
I often write a bunch of Esphome ‘code’ , which I then use with various esp32 based devices (mostly from M5stack) via esphome/HomeAssistant.
Can this project help me in any way during dev stage before uploading the code to device just to see it doesn’t work ? Eg could I use this to somehow compile&run those esphome yamls via this emulator?
That’s a really interesting use case. I’m currently evaluating integrating the ESPHome compiler into the project, so it could potentially compile and run ESPHome YAMLs during the development stage
It’s still exploratory, but it could definitely go in that direction
One suggestion: The main splash screen image is nearly 8MB big. It takes a noticeable time to download on my connection. I'm not sure what bandwidth costs these days, but seems like that could be something to optimize.
Velxio 2.0 is live.
A free, open-source emulator for 19 embedded boards: Arduino, ESP32, Raspberry Pi, RISC-V , running real compiled code in your browser.
The best part: it's fully local.
No cloud dependency. No student accounts. No data leaving your network. Self-hostable with a single Docker container.
Universities and bootcamps can deploy it on their own servers and give every student access to a complete embedded development environment, for free.
I've been working on this for over a year, and just shipped v2.0 with ESP32 emulation (via QEMU), a custom RISC-V core, and Raspberry Pi 3 support that runs real Python
just curious - if it runs from a docker container, what is the advantage of running the browser as opposed to just ssh'ing in ?
The main advantage is accessibility and ease of use: with the browser, no setup is required on the user’s side, no toolchains need to be installed, and there’s no need to be familiar with SSH or terminal workflows
It also provides a more visual and interactive environment (editor, peripherals, simulation controls), which is especially useful for teaching and for beginners.
The Docker image is there so you can easily install it on your own machine if you want to run it locally or work on development
Is it easy to feed an elf or bin and run that (esp32c3)? I see compilation available, but I'm playing with asm and have my toolchain figured out already and would just like to emulate the firmware.
Hey HN, I posted Velxio here a while back and got great feedback. Since then I've shipped a major update
What's new in v2:
- 19 boards across 5 CPU architectures (AVR8, Xtensa, RISC-V, ARM Cortex-M0+, ARM Cortex-A53) - ESP32 emulation via QEMU (lcgamboa fork) — real flash images, ROM function emulation, GPIO/ADC/timers - ESP32-C3 and CH32V003 run on a custom RISC-V core written in TypeScript, entirely in the browser - Raspberry Pi 3B via QEMU raspi3b — boots real Pi OS, runs Python - Realistic sensor simulation: DHT22 (40-bit protocol timing), HC-SR04 (trigger/echo), WS2812B NeoPixel (GRB decoding) - 48+ electronic components from wokwi-elements
Architecture:
- AVR, RP2040, and RISC-V emulation runs client-side (avr8js, rp2040js, custom TS core) - ESP32 Xtensa and Pi 3 run on backend QEMU - Compilation via real arduino-cli - React + Vite frontend, FastAPI backend - Self-hostable via Docker, no account needed
Source: https://github.com/davidmonterocrespo24/velxio (AGPLv3)
Happy to discuss the emulation architecture — particularly the trade-offs between in-browser vs. backend QEMU emulation
Nice work! One minor point for me: it wasn’t immediately clear that you need to press Compile before Play gets enabled (e.g. Arduino IDE let's you upload right away and compiles if needed)
Good point.I’ll improve that. Thanks!
This is a great idea. It’s always been inconvenient requiring access to the physical board just to be able to test these sort of projects.
Exactly,that’s the idea. Not having to flash the chip a thousand times just to see if everything works. The goal is to let you test the setup as fast as possible, ideally without installing anything locally
I often write a bunch of Esphome ‘code’ , which I then use with various esp32 based devices (mostly from M5stack) via esphome/HomeAssistant.
Can this project help me in any way during dev stage before uploading the code to device just to see it doesn’t work ? Eg could I use this to somehow compile&run those esphome yamls via this emulator?
That’s a really interesting use case. I’m currently evaluating integrating the ESPHome compiler into the project, so it could potentially compile and run ESPHome YAMLs during the development stage
It’s still exploratory, but it could definitely go in that direction
First of all: Awesome work! Playing with it now.
One suggestion: The main splash screen image is nearly 8MB big. It takes a noticeable time to download on my connection. I'm not sure what bandwidth costs these days, but seems like that could be something to optimize.
Thanks a lot! Yes, that’s something I have pending, I’m planning to replace it with an SVG or an animated GIF to improve loading time