Skip to content

Latest commit

 

History

1,285 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snakie

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.

Download

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>.AppImage or snakie_<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.

Raspberry Pi: add Snakie to the menu

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.AppImage

It 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.

Features

Editor

  • ✏️ 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

Device & REPL

  • 🔌 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 .py to .mpy from the file tree's context menu, using MicroPython's own mpy-cross built to WebAssembly from the same release the firmware catalogue offers
  • 📦 Install MicroPython packages (mip)

Board Finder & firmware

  • 🔎 A Board Finder covering 237 boards — all 225 MicroPython publishes a board.json for, 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

Board View & Instruments

  • 🔭 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

Parts Library & Part Editor

  • 🧩 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.yml project file (docs/robot-definition.md)

Workflow

  • ⌨️ 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

Tech stack

  • 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

Development

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 Prettier

Note: npm run dev opens an Electron window and requires a display.

Building installers

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 + deb

Each 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.

Build targets

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 serialport module is more fragile, and two per-arch dmgs are smaller. Both build on the arm64 macos-latest runner because @serialport/bindings-cpp provides 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-arm hosted runner so the serialport rebuild uses the arm64 toolchain (no cross-compile -m64 failure). The .deb is skipped on arm64 because electron-builder's bundled fpm is an x86 binary that fails on arm64 — the arm64 job names just the AppImage target so fpm is 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. (serialport does ship a win32-arm64 prebuild, 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, source build/icon.svg) is a drafted placeholder logo — fine to replace with final artwork (#46).

Status

🚀 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.

License

MIT

About

Snakie is a robotics first MicroPython IDE

Topics

Resources

Stars

57 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages