Emulate Arduino, ESP32 & Raspberry Pi. in your browser. Write code, compile, and run on 19 real boards — Arduino Uno, ESP32, ESP32-C3, Raspberry Pi Pico, Raspberry Pi 3, and more. No hardware, no cloud, no limits.. Discord: https://discord.gg/3mARjJrh4E
 
 
 
 
 
 
Go to file
David Montero Crespo 6201148dcf
Merge pull request #35 from davidmonterocrespo24/feat/raspberryPi_emuation
feat: add Discord community link to README and navigation
2026-03-12 02:14:23 -03:00
.github feat: enhance admin setup with email validation and update workflows for fresh lib cloning 2026-03-07 00:00:22 -03:00
.vite/deps Add backend and frontend test suites for Arduino compilation and simulation 2026-03-03 16:44:07 -03:00
backend Fix nginx /docs routing conflict, move FastAPI Swagger to /api/docs, complete SEO meta tags 2026-03-11 18:55:18 +00:00
deploy Fix nginx /docs routing conflict, move FastAPI Swagger to /api/docs, complete SEO meta tags 2026-03-11 18:55:18 +00:00
docs Fix nginx /docs routing conflict, move FastAPI Swagger to /api/docs, complete SEO meta tags 2026-03-11 18:55:18 +00:00
example_zip feat: add Arduino Mega 2560 support with GPIO test sketch and emulator tests 2026-03-09 10:56:08 -03:00
frontend Merge branch 'master' into feat/raspberryPi_emuation 2026-03-12 02:14:15 -03:00
scripts Merge doc/ into docs/ — eliminate duplicate documentation folders 2026-03-11 17:03:51 +00:00
test feat: add ESP32 emulator with QEMU WebAssembly integration and basic GPIO functionality tests 2026-03-10 18:01:05 -03:00
wokwi-libs Add commercial licensing and AGPLv3 license files; update submodule references to dirty state; create strategic plan document for Velxio project 2026-03-06 22:32:05 -03:00
.dockerignore feat: add support for RP2040 board, including simulator and compilation enhancements 2026-03-04 19:28:33 -03:00
.gitignore Add Simon Game with Score Display and Pong Game 2026-03-09 02:13:47 -03:00
.gitmodules feat: establish initial simulator and editor environment with component rendering, wiring, library management, and backend services. 2026-03-04 22:05:23 -03:00
CLAUDE.md Merge doc/ into docs/ — eliminate duplicate documentation folders 2026-03-11 17:03:51 +00:00
COMMERCIAL_LICENSE.md Add commercial licensing and AGPLv3 license files; update submodule references to dirty state; create strategic plan document for Velxio project 2026-03-06 22:32:05 -03:00
Dockerfile.standalone fix: persist SQLite database via host bind mount 2026-03-06 20:32:36 -03:00
LICENSE Add commercial licensing and AGPLv3 license files; update submodule references to dirty state; create strategic plan document for Velxio project 2026-03-06 22:32:05 -03:00
README.md Merge branch 'master' into feat/raspberryPi_emuation 2026-03-12 02:14:15 -03:00
docker-compose.prod.yml fix: add env_file configuration for velxio service in docker-compose 2026-03-06 20:56:05 -03:00
docker-compose.yml feat: /project/:id URL, per-project file volumes, and public/private access control 2026-03-06 20:38:06 -03:00
nginx-host-velxio-temp.conf fix 2026-03-07 21:56:31 +01:00
nginx-host-velxio.conf feat: add production deployment configuration with SSL support 2026-03-06 21:20:44 +01:00
package-lock.json feat: add component metadata types and generator 2026-03-03 19:30:25 -03:00
package.json feat: add component metadata types and generator 2026-03-03 19:30:25 -03:00
start-backend.bat feat: establish initial simulator and editor environment with component rendering, wiring, library management, and backend services. 2026-03-04 22:05:23 -03:00
start-frontend.bat feat: Implement Arduino Simulator with component management and simulation features 2026-03-03 00:20:49 -03:00
strategy_plan.md Add commercial licensing and AGPLv3 license files; update submodule references to dirty state; create strategic plan document for Velxio project 2026-03-06 22:32:05 -03:00
update-wokwi-libs.bat feat: Implement Arduino Simulator with component management and simulation features 2026-03-03 00:20:49 -03:00

README.md

Velxio: Arduino Emulator

Live at velxio.dev

A fully local, open-source Arduino emulator. Write Arduino code, compile it, and simulate it with real AVR8 CPU emulation and 48+ interactive electronic components — all running in your browser.

Live Demo Docker Image GitHub stars Discord License: AGPLv3 Commercial License


Velxio - Arduino emulator running entirely in the browser | Product Hunt


Support the Project

Velxio is free and open-source. Building and maintaining a full Arduino emulator takes a lot of time — if it saves you time or you enjoy the project, sponsoring me directly helps keep development going.

Platform Link
GitHub Sponsors (preferred) github.com/sponsors/davidmonterocrespo24
PayPal paypal.me/odoonext

Your support helps cover server costs, library maintenance, and frees up time to add new boards, components, and features. Thank you!


Try it now

https://velxio.dev — no installation needed. Open the editor, write your sketch, and simulate directly in the browser.

To self-host with Docker (single command):

docker run -d -p 3080:80 ghcr.io/davidmonterocrespo24/velxio:master

Then open http://localhost:3080.


Screenshots

Raspberry Pi Pico ADC simulation with Serial Monitor

Raspberry Pi Pico simulation — ADC read test with two potentiometers, Serial Monitor showing live output, and compilation console at the bottom.

ILI9341 TFT display simulation on Arduino Uno

Arduino Uno driving an ILI9341 240×320 TFT display via SPI — rendering a real-time graphics demo using Adafruit_GFX + Adafruit_ILI9341.

Library Manager with full library list

Library Manager loads the full Arduino library index on open — browse and install libraries without typing first.

Component Picker with 48 components

Component Picker showing 48 available components with visual previews, search, and category filters.


Features

Code Editing

  • Monaco Editor — Full C++ editor with syntax highlighting, autocomplete, minimap, and dark theme
  • Multi-file workspace — create, rename, delete, and switch between multiple .ino / .h / .cpp files
  • Arduino compilation via arduino-cli backend — compile sketches to .hex / .uf2 files
  • Compile / Run / Stop / Reset toolbar buttons with status messages
  • Compilation console — resizable output panel showing full compiler output, warnings, and errors

Multi-Board Support

  • Arduino Uno (ATmega328p) — full AVR8 emulation via avr8js
  • Arduino Nano (ATmega328p) — full AVR8 emulation
  • Arduino Mega (ATmega2560) — full AVR8 emulation
  • Raspberry Pi Pico (RP2040) — full RP2040 emulation via rp2040js, compiled with arduino-pico core
  • Board selector in the toolbar — switch boards without restarting

AVR8 Simulation (Arduino Uno / Nano / Mega)

  • Real ATmega328p emulation at 16 MHz using avr8js
  • Full GPIO support — PORTB (pins 8-13), PORTC (A0-A5), PORTD (pins 0-7)
  • Timer0/Timer1/Timer2 peripheral support (millis(), delay(), PWM via analogWrite())
  • USART (Serial) — full transmit and receive support
  • ADCanalogRead() on pins A0-A5, voltage injection from UI components
  • SPI — hardware SPI peripheral (enables ILI9341, SD card, etc.)
  • I2C (TWI) — hardware I2C with virtual device bus
  • ~60 FPS simulation loop with requestAnimationFrame

RP2040 Simulation (Raspberry Pi Pico)

  • Real RP2040 emulation via rp2040js at 133 MHz
  • UART0 serial output displayed in Serial Monitor
  • ADC — 12-bit, 3.3V reference on GPIO 26-29 (A0-A3)

Serial Monitor

  • Live serial output — characters as the sketch sends them via Serial.print()
  • Auto baud-rate detection — reads hardware registers, no manual configuration needed
  • Send data to the Arduino RX pin from the UI
  • Autoscroll with toggle

Component System (48+ Components)

  • 48 electronic components from wokwi-elements
  • Component picker with search, category filters, and live previews
  • Drag-and-drop repositioning on the simulation canvas
  • Component rotation in 90° increments
  • Property dialog — pin roles, Arduino pin assignment, rotate & delete

Wire System

  • Wire creation — click a pin to start, click another pin to connect
  • Orthogonal routing — no diagonal paths
  • 8 signal-type wire colors: Red (VCC), Black (GND), Blue (Analog), Green (Digital), Purple (PWM), Gold (I2C), Orange (SPI), Cyan (USART)
  • Segment-based wire editing — drag segments perpendicular to their orientation

Library Manager

  • Browse and install the full Arduino library index directly from the UI
  • Live search, installed tab, version display

Auth & Project Persistence

  • Email/password and Google OAuth sign-in
  • Project save with name, description, and public/private visibility
  • Project URL — each project gets a permanent URL at /project/:id
  • Sketch files stored on disk per project (accessible from the host via Docker volume)
  • User profile at /:username showing public projects

Example Projects

  • 8 built-in examples (Blink, Traffic Light, Button Control, Fade LED, Serial Hello World, RGB LED, Simon Says, LCD 20×4)
  • One-click loading into the editor

Self-Hosting

# Pull and run
docker run -d \
  --name velxio \
  -p 3080:80 \
  -v $(pwd)/data:/app/data \
  ghcr.io/davidmonterocrespo24/velxio:master

Open http://localhost:3080.

The /app/data volume contains:

  • velxio.db — SQLite database (users, projects metadata)
  • projects/{id}/ — sketch files per project

Option B: Docker Compose

git clone https://github.com/davidmonterocrespo24/velxio.git
cd velxio
cp backend/.env.example backend/.env   # edit as needed
docker compose -f docker-compose.prod.yml up -d

Environment variables (backend/.env)

Variable Default Description
SECRET_KEY (required) JWT signing secret
DATABASE_URL sqlite+aiosqlite:////app/data/velxio.db SQLite path
DATA_DIR /app/data Directory for project files
FRONTEND_URL http://localhost:5173 Used for OAuth redirect
GOOGLE_CLIENT_ID Google OAuth client ID
GOOGLE_CLIENT_SECRET Google OAuth client secret
GOOGLE_REDIRECT_URI http://localhost:8001/api/auth/google/callback Must match Google Console
COOKIE_SECURE false Set true when serving over HTTPS

Option C: Manual Setup

Prerequisites: Node.js 18+, Python 3.12+, arduino-cli

git clone https://github.com/davidmonterocrespo24/velxio.git
cd velxio

# Backend
cd backend
python -m venv venv && source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8001

# Frontend (new terminal)
cd frontend
npm install
npm run dev

Open http://localhost:5173.

arduino-cli setup (first time):

arduino-cli core update-index
arduino-cli core install arduino:avr
# For Raspberry Pi Pico:
arduino-cli config add board_manager.additional_urls \
  https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
arduino-cli core install rp2040:rp2040

Project Structure

velxio/
├── frontend/                    # React + Vite + TypeScript
│   └── src/
│       ├── pages/               # LandingPage, EditorPage, ProjectByIdPage, ...
│       ├── components/          # Editor, simulator canvas, modals, layout
│       ├── simulation/          # AVRSimulator, RP2040Simulator, PinManager
│       ├── store/               # Zustand stores (auth, editor, simulator, project)
│       └── services/            # API clients
├── backend/                     # FastAPI + Python
│   └── app/
│       ├── api/routes/          # compile, auth, projects, libraries
│       ├── models/              # User, Project (SQLAlchemy)
│       ├── services/            # arduino_cli, project_files
│       └── core/                # config, security, dependencies
├── wokwi-libs/                  # Local clones of Wokwi repos
│   ├── wokwi-elements/
│   ├── avr8js/
│   └── rp2040js/
├── deploy/                      # nginx.conf, entrypoint.sh
├── Dockerfile.standalone        # Single-container production image
├── docker-compose.yml           # Development compose
└── docker-compose.prod.yml      # Production compose

Technologies

Layer Stack
Frontend React 19, Vite 7, TypeScript 5.9, Monaco Editor, Zustand, React Router 7
Backend FastAPI, SQLAlchemy 2.0 async, aiosqlite, uvicorn
Simulation avr8js (AVR8), rp2040js (RP2040), wokwi-elements (Web Components)
Compiler arduino-cli (subprocess)
Auth JWT (httpOnly cookie), Google OAuth 2.0
Persistence SQLite + disk volume (/app/data/projects/{id}/)
Deploy Docker, nginx, GitHub Actions → GHCR + Docker Hub

Troubleshooting

arduino-cli: command not found — install arduino-cli and add to PATH.

LED doesn't blink — check port listeners in browser console; verify pin mapping in the component property dialog.

Serial Monitor shows nothing — ensure Serial.begin() is called before Serial.print().

Compilation errors — check the compilation console; verify the correct core is installed.


Community

Join the Discord server to ask questions, share projects, and follow updates:

discord.gg/rCScB9cG

Contributing

Suggestions, bug reports, and pull requests are welcome at github.com/davidmonterocrespo24/velxio.

If you'd like to support the project financially, see the Support the Project section above or sponsor directly at github.com/sponsors/davidmonterocrespo24.

Note: All contributors must sign a Contributor License Agreement (CLA) so that the dual-licensing model remains valid. A CLA check runs automatically on pull requests.

License

Velxio uses a dual-licensing model:

Use case License Cost
Personal, educational, open-source (AGPLv3 compliant) AGPLv3 Free
Proprietary / closed-source product or SaaS Commercial License Paid

The AGPLv3 is a certified Open Source license. It is free for all uses — including commercial — as long as any modifications or network-accessible deployments make their source code available under the same license. Companies that cannot comply with that requirement can purchase a Commercial License.

For commercial licensing inquiries: davidmonterocrespo24@gmail.com

See LICENSE and COMMERCIAL_LICENSE.md for full terms.

References