A modern, cross-platform MicroPython editor.
Snakie is a clean IDE for writing MicroPython code and working with connected microcontrollers, wrapped in a photoreal Skeuomorph interface (brushed metal, green felt, ruled paper and recessed glass) with a dark mode. It is built on Electron so it runs on Windows, macOS and Linux, and updates itself.
Beyond editing and the REPL, it can visualise your board — parsing your code to draw the actual pinout — and drive on-screen instruments (oscilloscope, multimeter, plotter) from a running program.
Grab the latest installer for your platform from the Releases page:
- 🪟 Windows (x64) —
Snakie.Setup.<version>.exe - 🍎 macOS (Apple Silicon) —
Snakie-<version>-arm64.dmg - 🍎 macOS (Intel) —
Snakie-<version>.dmg - 🐧 Linux (x64) —
Snakie-<version>.AppImageorsnakie_<version>_amd64.deb - 🍓 Linux (arm64 — Raspberry Pi 4 / 5, 64-bit Pi OS) —
Snakie-<version>-arm64.AppImage
Windows is x64 only for now; Windows arm64 isn't built yet — see "Building installers" below for why. The Raspberry Pi build is an AppImage (no
.deb); make it executable (chmod +x) and run it.
An AppImage is a single file and doesn't register itself in the menu. To make Snakie show up under Programming (with its icon), run the helper once after downloading the AppImage:
curl -fsSL https://raw.githubusercontent.com/kevinmcaleer/Snakie/master/scripts/install-linux-menu.sh -o install-linux-menu.sh
bash install-linux-menu.sh ~/Downloads/Snakie-<version>-arm64.AppImageIt installs a desktop entry + icon under ~/.local/share with
Categories=Development — which the Raspberry Pi menu lists under Programming.
Re-run it after updating to a new version, or pass --uninstall to remove it.
- ✏️ Monaco-based editor with MicroPython syntax highlighting, autocomplete and optional AI ghost-text suggestions
- 🧩 Tabbed multi-file editing
- 🔍 Find & Replace — case / whole-word / regex toggles, live match count, draggable dialog
- ✅ YAML / JSON validation with squiggles, a Problems panel and an autofix
- 🎨 Skeuomorph ruled-paper editor, with a light/dark theme toggle
- 🔌 Connect to a MicroPython device over serial (raw-REPL protocol)
▶️ Run (⌘R) and Stop (⌘.) — Stop also soft-resets the board when nothing's running- 🐚 Interactive shell (REPL) with a live serial Plotter alongside the console
- 🗂️ Browse / create / rename / delete files locally and on the device (Thonny-style), each tree showing file sizes — so an empty file is visible
- ⚙️ Compile
.pyto.mpyfrom the file tree's context menu, using MicroPython's ownmpy-crossbuilt to WebAssembly from the same release the firmware catalogue offers - 📦 Install MicroPython packages (
mip)
- 🔎 A Board Finder covering 237 boards — all 225 MicroPython publishes a
board.jsonfor, plus 12 it builds nothing for but that people actually own (the Adafruit ESP32 Feather V2, Pimoroni's Tiny 2350 and Servo 2040, the micro:bit v2 …), each with the build it really flashes and why - 📇 Filter by maker, chip, runtime and features; every board carries its flash, RAM and PSRAM with the page each figure was read from, because MicroPython's index publishes no sizes
- 🔬 Eighteen of them open with their own hardware: the board photographed,
turned over where there is a back, its 3-D model where there is one, and every
pad readable by name —
GP4 · Pin 6 · I/O · I2C0 SDA · SPI0 RX · PWM 2A - 📡 A firmware flasher that offers the right build — including the variants that are easy to miss, like the SPIRAM build a Feather V2 needs to see its PSRAM
- 🔭 A live Board View window that parses your code for pin usage and draws the actual board — any microcontroller in the Parts Library (Pico / Pico W / Pico 2 W, ESP32 and ESP32-S3 Feathers, XIAO RP2040 / RP2350, Pimoroni's Tiny 2350, Servo 2040 and Pico LiPo 2, Arduino Nano ESP32 …), plus your own board definitions
- 🕸️ A node graph of every connection by type (input / output / PWM / I²C / SPI / PIO / ADC) with live pin values, zoom / rotate / export (SVG · PNG · PDF), and a visual Board Creator for custom boards
- 📟 Oscilloscope, Multimeter and Plotter instruments — dockable or floating —
fed live and non-invasively by a tiny MicroPython telemetry library
(
scope()/meter()/plot()), one-click installable to your board
- 🧩 A Parts Library of portable, community-authored parts — each a folder with
a human-readable
parts.yml— browsable, searchable, and installable/updatable from a master community registry (docs/parts-library.md) - 🛠️ A visual Part Editor (schematic ⇄ breadboard) to author parts: pins with
type + capabilities, castellated/regular pads, mounting holes, buttons, 2.54 mm
grid snap, and a footprint + life-like preview (
docs/part-editor.md) - 🔌 Breadboard & Schematic board views (alongside the node graph) that place
parts + the microcontroller on one canvas — pick parts from a docked library
panel — and wire them up: node-RED-style noodles in Breadboard, orthogonal
auto-routed lines in Schematic (red power / white ground / colour-picked
signals), with the pins your code uses highlighted, saved to a
robot.ymlproject file (docs/robot-definition.md)
- ⌨️ Application menus — File (New, Open File/Folder, Open Recent, Save, Save As, Close Tab), Device (Connect, Run, Stop, Soft Reset, Sync), Tools (Firmware Flasher, Board Finder, Parts Catalog, Sprite Editor, Find & Replace, Settings) and View ▸ Workspace — so nothing is reachable only by knowing which panel hides the button
- 🔑 A keyboard shortcut sheet (Help ▸ Keyboard Shortcuts) generated from the menu itself, so it cannot drift from the real bindings
- 🧾 A status history — the bar keeps what it said; click it for the recent messages, or open the full log to copy, save or clear it
- 🌳 Built-in version control (Git, VS Code-style)
- 🤖 Integrated LLM chat pane
- 🔔 In-app update notifications when a new version is ready
- Electron — cross-platform desktop shell
- Vite + React + TypeScript — renderer UI
- Monaco Editor — code editing
- node-serialport — device communication (MicroPython raw-REPL protocol)
- electron-builder — packaging for Windows / macOS / Linux
Snakie uses electron-vite with the standard
src/main, src/preload, src/renderer three-process layout.
npm install # install dependencies
npm run dev # start the app with hot reload
npm run build # build main, preload and renderer into out/
npm run lint # lint with ESLint
npm run typecheck # type-check main/preload and renderer
npm run format # format with PrettierNote:
npm run devopens an Electron window and requires a display.
Snakie is packaged with electron-builder.
npm run pack # build an unpacked app in dist/ (quick local sanity check)
npm run dist # build installers for the current OS into dist/Per-OS targets (run on the matching OS):
npm run dist:win # Windows NSIS installer
npm run dist:mac # macOS dmg
npm run dist:linux # Linux AppImage + debEach platform's installers are produced on that platform — cross-building
across operating systems is not supported here. On a tag push (v*) the
release workflow builds every target on a CI
matrix and collects them into a single draft GitHub Release.
| Platform | Arch | Artifacts | CI runner |
|---|---|---|---|
| macOS | arm64 | Snakie-<v>-arm64.dmg |
macos-latest |
| macOS | x64 | Snakie-<v>.dmg |
macos-latest |
| Linux | x64 | .AppImage + _amd64.deb |
ubuntu-latest |
| Linux | arm64 | Snakie-<v>-arm64.AppImage |
ubuntu-24.04-arm |
| Windows | x64 | Snakie.Setup.<v>.exe |
windows-latest |
Notes on arch coverage:
- macOS ships two per-arch dmgs (Apple Silicon + Intel) rather than one
universal binary. Universal merging of the native
serialportmodule is more fragile, and two per-arch dmgs are smaller. Both build on the arm64macos-latestrunner because@serialport/bindings-cppprovides a universal (darwin-x64+arm64) prebuilt binary, so no per-arch recompilation is needed. - Linux arm64 (Raspberry Pi 4 / 5) ships as an AppImage only, built on
the native
ubuntu-24.04-armhosted runner so theserialportrebuild uses the arm64 toolchain (no cross-compile-m64failure). The.debis skipped on arm64 because electron-builder's bundledfpmis an x86 binary that fails on arm64 — the arm64 job names just theAppImagetarget sofpmis never invoked. Targets 64-bit Raspberry Pi OS (aarch64); 32-bit Pi OS is not built. - Windows is x64 only. GitHub's hosted Windows runners are x64 and there is
no native arm64 Windows runner in the hosted pool, so a reliable arm64 nsis
installer can't be produced here yet. (
serialportdoes ship awin32-arm64prebuild, so this is a CI-infrastructure limitation, not a code one — revisit if/when an arm64 Windows runner becomes available.)
macOS builds are code-signed (Developer ID Application) and notarized, so Gatekeeper accepts them and the in-app updater can apply updates (#47); Windows and Linux builds are currently unsigned. The app icon (
build/icon.png, sourcebuild/icon.svg) is a drafted placeholder logo — fine to replace with final artwork (#46).
🚀 Released and updating. Grab the current build from Releases; macOS builds are signed and notarized, and the in-app updater takes it from there.
The foundations — the editor, the REPL, the device tooling, the Skeuomorph
redesign, the Board View and the Oscilloscope / Multimeter / Plotter instruments
— have been in for a while. More recently: the Board Finder and a firmware
catalogue that knows the sizes and the variants, a Parts Library of 59
standard parts with a visual Part Editor, application menus with a generated
shortcut sheet, and .py → .mpy compilation with MicroPython's own compiler
built to WebAssembly.
See CHANGELOG.md for the full history and docs/ for
the design, plugin, board, parts and instruments guides.
⚠️ Much is verified by build, type-check and ~6,700 unit tests, but the on-device paths — live instrument values, firmware flashing, package install — need a real MicroPython board to validate fully. The LLM chat needs an Anthropic API key; the package installer needs network access.
MIT