Design. Simulate. Code. Create.
AI-powered circuit simulator and embedded board emulator for desktop. Write Arduino C++ or MicroPython, compile it, simulate it with real CPU emulation and 150+ interactive electronic components — and chat with an AI to design circuits, debug code, and wire components.
CircuitMuse is a desktop application that lets you:
- Write code for microcontrollers (Arduino C++, MicroPython, ESP-IDF C)
- Compile it automatically using bundled toolchains
- Simulate it with real CPU emulation (not mocked — actual AVR, RP2040, ESP32, STM32, Raspberry Pi silicon)
- Build circuits with 150+ electronic components on a drag-and-drop canvas
- Chat with AI to design circuits, place components, wire them up, and debug code
Everything runs locally on your machine. No cloud, no accounts, no internet required after installation.
| Board | CPU | Simulation Engine |
|---|---|---|
| Arduino Uno / Nano / Mega 2560 | ATmega328p / ATmega2560 | avr8js (in-browser) |
| ATtiny85 | ATtiny85 | avr8js (in-browser) |
| Raspberry Pi Pico / Pico W | RP2040 | rp2040js (in-browser) |
| ESP32 DevKit / CAM / Lolin32 | Xtensa LX6 | QEMU (bundled) |
| ESP32-S3 / XIAO ESP32-S3 | Xtensa LX7 | QEMU (bundled) |
| ESP32-C3 / SuperMini | RISC-V RV32IMC | QEMU (bundled) |
| STM32 Blue Pill / Nucleo | ARM Cortex-M3 | QEMU (bundled) |
| Raspberry Pi 3B / 4B / 5 | ARM Cortex-A | QEMU + Linux (bundled) |
Supported platforms: Windows (x64), macOS (Intel + Apple Silicon), Linux (x64, Arch, Fedora).
Get the latest release for your platform from GitHub Releases:
| Platform | Format | Notes |
|---|---|---|
| Windows | .msi or .exe |
Installer with start menu shortcut |
| macOS | .dmg |
Drag to Applications folder |
| Linux (Ubuntu/Debian) | .deb |
sudo dpkg -i circuit-muse_*.deb |
| Linux (Arch) | PKGBUILD |
makepkg -si |
| Linux (Fedora) | .spec |
rpmbuild or convert from AppImage |
| Linux (Universal) | .AppImage |
chmod +x CircuitMuse_*.AppImage && ./CircuitMuse_*.AppImage |
Linux GPU issues? If you see a white screen or EGL error, run the bundled wrapper script:
./scripts/circuit-muse.sh— it forces software rendering for compatibility with all hardware.
- Double-click the installer or AppImage
- You'll see the CircuitMuse splash screen with loading status
- The editor workspace opens directly — no landing page
- The setup wizard runs automatically on first launch, showing what's installed and what needs downloading
| Component | Required | Auto-installed |
|---|---|---|
| Node.js 20+ | Build only | No |
| Python 3.12+ | Engine | No |
| arduino-cli 1.5+ | Compilation | Yes, bundled |
| ESP-IDF (optional) | ESP32 advanced builds | No |
| Ollama (optional) | Local AI agent | No |
- Node.js 20+
- Python 3.12+
- Rust (stable)
- Platform-specific dependencies (see below)
sudo apt install -y \
libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev \
patchelf libssl-dev libgtk-3-dev libsoup-3.0-dev \
libjavascriptcoregtk-4.1-dev libudev-devsudo pacman -S webkit2gtk-4.1 appmenu-gtk-module libappindicator-gtk3 \
librsvg patchelf openssl gtk3 libsoup3sudo dnf install -y gcc webkit2gtk4.1-devel gtk3-devel libsoup3-devel \
patchelf openssl-develxcode-select --installInstall Visual Studio Build Tools with "Desktop development with C++" workload.
git clone https://github.com/meshackbahati/circuit-muse.git
cd circuit-muse
# Install app dependencies
cd app && npm install && cd ..
# Install engine dependencies
cd engine && python -m venv venv && source venv/bin/activate
pip install -r requirements.txt && cd ..
# Download arduino-cli (for compilation)
bash scripts/download-deps.sh
# Install Tauri CLI
cargo install tauri-cli --version "^2"
# Build and run
cd src-tauri && cargo tauri devThe app opens with the editor workspace ready to use.
cd src-tauri
cargo tauri buildOutput: src-tauri/target/release/bundle/ contains platform-specific installers.
The built-in AI agent lets you design circuits using natural language.
- Open the AI Agent panel from the toolbar (hamburger menu or Agent button)
- Click the gear icon to open settings
- Configure a provider:
| Provider | Setup |
|---|---|
| Ollama (recommended for offline) | Install Ollama, run ollama pull llama3 — no API key needed |
| OpenAI | Paste API key from platform.openai.com |
| Anthropic | Paste API key from console.anthropic.com |
| Google Gemini | Paste API key from aistudio.google.com |
| OpenRouter | Paste API key from openrouter.ai |
| Custom | Any OpenAI-compatible endpoint (LM Studio, vLLM, etc.) |
- Add boards to the canvas
- Add electronic components (LEDs, resistors, sensors, displays)
- Wire components together
- Write Arduino C++ or MicroPython code
- Compile and run simulations
- Debug compilation errors
Example prompts:
- "Add an Arduino Uno and wire an LED to pin 13"
- "Create a temperature sensor circuit with DHT22 and LCD display"
- "Write a blink sketch for the ESP32"
Projects automatically save to IndexedDB every few seconds. Close and reopen the app — your work is still there.
Click the Projects button in the toolbar to:
- Create a new empty project
- Open an existing saved project
- Delete old projects
Import formats:
.vlx— CircuitMuse native format.zip— Wokwi-compatible (diagram.json + code).fzz— Fritzing projects.json— Raw project data
Export formats:
.vlx— Full project snapshot.zip— Wokwi-compatible bundle.json— Raw data.html— Shareable report with boards, components, and code
150+ electronic components across categories:
- Passive: Resistors, capacitors, inductors, potentiometers
- Active: Transistors (NPN, PNP, MOSFET), op-amps, voltage regulators
- Output: LEDs, NeoPixels, buzzers, servos, motors, relays
- Input: Pushbuttons, switches, encoders, joysticks
- Sensors: DHT22, HC-SR04, BMP280, MPU6050, photoresistors
- Displays: LCD1602, SSD1306 OLED, ePaper, 7-segment, LED bar
- Logic: AND, OR, NOT, NAND, NOR, XOR gates, flip-flops, shift registers
- Communication: I2C, SPI devices (24LC256, MCP3008, DS3231)
- ngspice-WASM — real SPICE analog simulation in the browser
- Mixed-mode — digital MCU + analog circuits simulated together
- Instruments: Voltmeter, ammeter, oscilloscope, function generator
- 44+ SPICE component models
- Live serial output from simulated boards
- Auto baud-rate detection
- Send data to RX pin
- Multi-UART support on ESP32
circuit-muse/
├── app/ # Application layer (React + Vite + TypeScript)
│ ├── src/agent/ # AI agent (providers, tools, chat UI)
│ ├── src/components/ # Editor, simulator canvas, modals
│ ├── src/simulation/ # CPU emulation bridges
│ ├── src/store/ # Zustand state stores
│ ├── src/services/ # API clients, project persistence
│ └── src/desktop/ # Tauri desktop integration
├── engine/ # Simulation engine (FastAPI + Python)
│ └── app/api/routes/ # compile, agent, libraries, simulation
├── src-tauri/ # Desktop shell (Rust + Tauri)
│ ├── src/commands/ # Serial, debug, QEMU commands
│ └── icons/ # App icons
└── scripts/ # Build helpers
The app uses software rendering for compatibility. If you still see issues:
# Force software rendering
LIBGL_ALWAYS_SOFTWARE=1 ./CircuitMuse_*.AppImageRun the setup wizard (gear icon in toolbar) or manually install:
bash scripts/download-deps.shThe Python engine auto-starts on launch. If it fails:
- Check Python 3.12+ is installed
- Run
cd engine && pip install -r requirements.txt - Restart the app
ESP32/STM32/Raspberry Pi boards need QEMU runtimes. The app auto-downloads them on first use via the setup wizard.
MIT License
Meshack Bahati Ouma
Based on Velxio by David Montero Crespo. Built on avr8js, rp2040js, wokwi-elements, ngspice-wasm, lcgamboa/qemu, Espressif QEMU, Tauri, and Monaco Editor.
