9.6 KiB
9.6 KiB
Roadmap
What's shipped, what's underway, what's planned.
Implemented
Editor
- Monaco Editor with C++ and Python syntax highlighting, autocomplete, minimap, dark theme
- Multi-file workspace — create, rename, delete, and switch between
.ino,.h,.cpp,.py,.chip.cfiles - Per-board file groups — each board on the canvas has its own file set
- Unsaved-changes indicator on file tabs, close-with-confirm dialog
- Resizable file-explorer panel with collapse toggle
Compilation
- Arduino compilation via
arduino-cli(AVR, RP2040, ATtiny, ESP32) - ESP-IDF compilation via
idf.pywith ccache + persistent build dirs (incremental rebuilds in 2–5 s) - Multi-file sketch support; first
.inois promoted tosketch.ino - Compilation console with full toolchain output, warnings, and errors
- Async compile endpoint for long builds (returns a job ID, poll for status)
- Custom-chip compile pipeline (C -> WebAssembly via Emscripten)
Boards (19, across 5 CPU architectures)
AVR8 (browser, avr8js)
- Arduino Uno (ATmega328P @ 16 MHz)
- Arduino Nano (ATmega328P @ 16 MHz)
- Arduino Mega 2560 (ATmega2560 @ 16 MHz)
- ATtiny85 (8 MHz internal / 16 MHz external PLL)
RP2040 (browser, rp2040js)
- Raspberry Pi Pico (RP2040 @ 133 MHz)
- Raspberry Pi Pico W (RP2040 + simulated CYW43439 WiFi)
Xtensa LX6/LX7 (backend, lcgamboa QEMU)
- ESP32 DevKit V1, ESP32 DevKit C V4
- ESP32-CAM, Wemos Lolin32 Lite
- ESP32-S3 DevKit, XIAO ESP32-S3
- Arduino Nano ESP32
RISC-V RV32IMC (backend, lcgamboa QEMU)
- ESP32-C3 DevKit
- XIAO ESP32-C3
- ESP32-C3 SuperMini
ARM Cortex-A (backend, upstream QEMU)
- Raspberry Pi Zero (Cortex-A7)
- Raspberry Pi 1B+ (Cortex-A7)
- Raspberry Pi 2B (Cortex-A7)
- Raspberry Pi 3B (Cortex-A53,
raspi3bmachine) - Raspberry Pi 4B (Cortex-A72)
- Raspberry Pi 5 (Cortex-A76)
Languages
- Arduino C++ on every board
- MicroPython on Pico / Pico W / all ESP32 / ESP32-S3 / ESP32-C3 variants
- Python 3 on every Raspberry Pi (real Pi OS Trixie under QEMU)
- ESP-IDF C on all ESP32 variants
Simulation peripherals
- AVR — PORTB/C/D, Timer0/1/2, USART (auto baud), ADC, hardware SPI + I2C
- RP2040 — all 30 GPIO, UART0/UART1, ADC + temp sensor, I2C0/1, SPI0/1, PWM, WFI fast-forward
- ESP32 (Xtensa) — 40 GPIO with GPIO32–39 fix, UART0/1/2, ADC (0–3300 mV), I2C, SPI, RMT/NeoPixel, LEDC 16-channel PWM, WiFi (SLIRP NAT), BLE advertising
- ESP32-C3 (RISC-V) — GPIO 0–21, UART0, ADC1, WiFi/BLE via same SLIRP path
- Pi family — GPIO 0–27 via RPi.GPIO shim over
ttyAMA1, user Serial onttyAMA0, qcow2 overlay, multi-board UART bridge
Electrical (analog) simulation
- ngspice WASM engine (lazy-loaded, ~39 MB chunk, behind a toolbar toggle)
- NetlistBuilder — Union-Find on wires, SPICE card emission per component
- AVR <-> SPICE bridge — digital outputs become Thevenin sources, ADCs read solved node voltages
- ESP32 QEMU <-> SPICE bridge — same pattern for QEMU backends
- Analog instruments: voltmeter, ammeter, oscilloscope (multi-channel + logic analyzer), function generator (sine/square/triangle/sawtooth)
- Component models: resistors, capacitors, inductors, diodes (1N4148/4007/Zener/Schottky/LED), transistors (NPN/PNP, MOSFET N/P), op-amps (LM358/TL081/LM741), comparators
- Mixed-signal sanity — pot wired to A0 reads the real voltage; op-amp follower between pot and A0 still works
Custom Chips
- C-to-WASM SDK with
vx_*primitives (GPIO, ADC, DAC, I2C/SPI slave, UART, timers, framebuffer, log) - 30+ example chips in the gallery: Intel 4001/4002/4004/4040/8080/8086 + 8251/8253/8255/8259, Z80, 74HC595, CD4094, 24C01, 24LC256, MCP3008, PCF8574, DS3231, 32K/1M ROM, 64K RAM, latch 8282, …
- In-browser runtime —
ChipRuntimeper instance, WASI shim, deterministic clock - Bus bridges — I2C slave and SPI slave appear as real peripherals to the MCU
- Backend variant — chips can also run inside QEMU for ESP32-bound projects
Components
- 152+ catalog components across 11 categories (boards, sensors, displays, input, output, motors, logic, analog, passive, electromech, other)
- Component picker with search, category filters, and live previews
- Drag-and-drop repositioning, 90° rotation
- Property dialog: pin assignment, color, value, protocol selector
- Pin selector for explicit pin-to-board mapping
- Auto-generated metadata from upstream wokwi-elements source + Velxio-native override file
Wire System
- Click-to-connect wire creation with L-shape preview
- Orthogonal routing, 20px grid snap
- 8 signal-type wire colors (VCC, GND, digital, analog, PWM, I2C, SPI, USART)
- Segment-based wire editing (drag perpendicular to segment orientation)
- Parallel-overlap auto-offset (no overlapping wires)
- Pin overlay with cyan/green hover states
- Auto-recalculation when components move (with retries for async-mounting board pins)
Multi-Board Canvases
- Multiple boards on the same canvas, each with its own simulator instance, file group, Serial Monitor
- Shared electrical netlist — a wire between two boards is one SPICE node
- UART bridge between boards (TX of A → RX of B)
- Deterministic board IDs (first of a kind gets the bare
boardKind)
Serial Monitor
- Live serial output, per-board
- Auto baud-rate detection (reads UBRR for AVR, peripheral registers for RP2040 / ESP32)
- Send-to-RX from the UI
- Autoscroll toggle
- Multi-UART support on ESP32 (UART0/1/2)
- Pi:
ttyAMA0user serial,ttyAMA1reserved for GPIO protocol
Library Manager
- Browse and install the full Arduino library index from the UI
- Live search, installed tab, version display
- Persists installs in
/root/Arduino(Docker volumevelxio-arduino-user-libs)
Portable Project Persistence
.vlxfile format — single-file JSON snapshot of boards, file groups, components, wires, VFS contents, electrical-sim state- Save button = download
.vlx; Open button = restore - Versioned for forward compatibility
- Zero server-side state in OSS — your projects live wherever you put your
.vlxfiles
Examples Gallery
- 380+ built-in examples across 7 collections:
- Circuits (190) — pure analog, mixed-signal, transient demos
- 100 Days of Code (57)
- E-Paper Displays (70)
- Retro Intel/Zilog Processors (43)
- Analog (15)
- Digital (7)
- Pico W WiFi (4)
- Filter by board, category, difficulty
- One-click load into editor
IoT Gateway
- HTTP proxy bridging a real browser to a simulated ESP32 web server
- AsyncWebServer / WebServer / HTTPClient all reachable from the host
MCP Server
- stdio mode (
backend/mcp_server.py) — Claude Desktop - SSE mode (
backend/mcp_sse_server.py, port 8002) — Cursor, web agents - 7 tools:
compile_project,run_project,import_wokwi_json,export_wokwi_json,create_circuit,update_circuit,generate_code_files
Apps
- Web (OSS + Pro) — at velxio.dev
- Desktop (Tauri) — Pro, 30-day trial, deep-link sign-in, license cache + grace banner, ESP32 QEMU prompt
Deploy
- Single-container Docker image (
Dockerfile.standalone) published to GHCR + Docker Hub on push tomaster - 5 named volumes for fast restarts (arduino libs, user libs, ccache, ESP-IDF build dir, sketch data)
- nginx reverse proxy in front of FastAPI inside the container
- Docker Compose for build-from-source
In Progress
- Wire validation — short detection, missing-GND warnings, dangling-pin flags
- Streaming compile output — line-buffered toolchain log over WebSocket instead of waiting for the full process to finish
- Wokwi diagram.json import improvements — better part-mapping fallbacks for parts not in the Velxio catalog
Planned
Near-term
- Undo / redo — for code edits and canvas changes
- Breadboard component — half-size + full-size, auto-rail wiring
- More boards — STM32 Blue Pill (Cortex-M3), RP2350 (Pico 2), AVR-DA family, Teensy 4.x
Mid-term
- Oscilloscope improvements — FFT view, persistent traces, math channels
- Logic analyzer — protocol decode (I2C, SPI, UART, 1-Wire)
- TypeDoc-generated API site — auto-published to GitHub Pages
- More sensor models — VL53L0X (ToF), MAX30102 (heart rate), ADS1115 (16-bit ADC)
- EEPROM emulation for AVR — persistent read/write across simulation restarts
- WebGPU canvas — for projects with 200+ components
Long-term
- Multiplayer — share and co-edit simulations in real time
- Embedded tutorial system — step-by-step guided projects inside the editor
- Mobile / tablet — responsive layout with touch wiring
- Hardware-in-the-loop — bridge a real serial device to a simulated canvas
- AI Co-pilot — Pro Max — already in beta on velxio.dev
Recently shipped
- 2026-05 — Retro Intel/Zilog chip collection (17 chips, 2 bundled demos, 2
/examplesentries) - 2026-05 — Desktop overlay (welcome page, grace banner, ESP32 QEMU prompt)
- 2026-05 — Landing page "Try Simulator Free Online" CTA + download slot
- 2026-04 — ESP32 IoT gateway (real browser <-> simulated WebServer)
- 2026-04 — Multi-board UART bridge (Arduino <-> ESP32 <-> Pi 3 on the same canvas)
- 2026-03 — ngspice analog co-simulation behind the electrical-sim toggle
- 2026-03 — Custom-chip backend runtime for QEMU ESP32
Contributing
Feature requests, bug reports, and pull requests are welcome at github.com/davidmonterocrespo24/velxio.
All contributors must sign a Contributor License Agreement (CLA); a CLA check runs automatically on PRs so the dual-licensing (AGPLv3 + Commercial) stays valid.