A native desktop application for discovering, managing, and provisioning Nerves devices. Built with Phoenix LiveView and ElixirKit.
- Device Discovery: Automatically find Nerves devices on your local network via mDNS.
- Interactive Console: Built-in iex console over UART or SSH powered by
xterm.jsfor direct device interaction. - Firmware Burner: Download and flash Nerves firmware images to SD cards/storage devices.
- Resources: A page of quick links to a wide range of Nerves resources, repos, hex packages and more
This application is in the very early stages of development. Nightly builds can be found here. Download and install the correct target for your platform. We currently build for the following targets/architectures:
- MacOS (Intel and Apple Silicon)
- Windows (x64)
- Linux (amd64 and aarch64)
- .deb (Ubuntu/Debian)
- .rpm (Fedora)
- AppImage (everything else)
If you download and install the software, please note the following:
-
Code signing is not set up yet. You may receive errors or warnings that the software is untrusted. For MacOS, the error looks like the following:

To override this, go to Privacy & Security setting and press "Open Anyway":
-
There may be bugs with installation or use of the software. If you run into any, please file issues
To run this application from source, you need the following installed on your host machine:
-
Elixir 1.19 and Erlang/OTP 28
-
Rust** and Cargo (via rustup)
-
Node.js (for assets)
-
Tauri CLI*—
cargo tauriis not part of stock Cargo. Install it with:cargo install tauri-cli --version "^2.0" --locked
macOS:
brew install libusb dtc zlib pkg-configUbuntu/Debian (includes Tauri's WebKit/GTK requirements as well as the
sunxi tooling deps):
sudo apt-get install \
libwebkit2gtk-4.1-dev libsoup-3.0-dev libjavascriptcoregtk-4.1-dev \
libusb-1.0-0-dev libfdt-dev zlib1g-dev pkg-configmix deps.getThe following command starts the Phoenix server and the native Tauri window simultaneously:
cargo tauri devThe VERSION file at the repository root is the single source of truth for the
application version. mix.exs reads it directly, and Tauri inherits its version
from src-tauri/Cargo.toml, which is kept in sync with it.
Builds that were not cut from a tag report their version with a -dev suffix in
the sidebar (v0.1.0-dev), so a nightly is always distinguishable from a
release.
Edit VERSION, then propagate it to the files that cannot read it themselves:
mix version.syncThis rewrites the version in src-tauri/Cargo.toml and src-tauri/Cargo.lock.
mix version.check verifies the two agree and runs as part of mix precommit.
The tag must match VERSION prefixed with v, or the release build fails
before any platform is built:
git commit -am "Release v0.2.0"
git tag v0.2.0
git push origin main --tagsPushing the tag triggers
release.yml, which verifies the tag against
VERSION and then builds every platform. The artifacts are attached to a
draft release, so review them and write the release notes before publishing
it from the GitHub releases page.
Nightlies are unaffected: build.yml still runs
on a schedule and publishes to the rolling nightly tag. Both share the build
steps in app-build.yml.
Currently, this is an experiment to see if this is a useful resource for the Nerves community. Your feedback is incredibly important to gauge that metric. We have planned the following features for future developments (in no particular order):
- Code signing
- Automatic updates
- Integrated Nerves MCP server (tools for connecting to Nerves devices, reading logs, etc)
- NervesKey provisioning
- Nerves Starter Kit integration
- Flashing second-stage bootloader (rpiboot/sunxi-fel)
If you have any feature requests, please open an issue to open discussion on the topic
This project is a thin GUI wrapper over several other Nerves projects. Notably:



