Installation
Install the desktop app and the espx command with one script or the disk image, check the signatures, then install the tools with espx setup.
One script installs espx on an Apple silicon Mac or on Linux. It downloads the release from espx.dev, checks it, and puts it in place. espx then installs the ESP32 tools itself.
Requirements
- Apple silicon macOS, or Linux on arm64 or x86_64. The desktop app is for Apple silicon Macs only.
- rustup with a stable toolchain. espx calls
rustupandcargoand stops withrust_not_foundif they are missing. curlandtar, which the script and espx use to download and unpack files.
You do not need espflash, esp-generate or any Rust target beforehand. espx setup installs them.
Install the desktop app
This installs the app as ~/Applications/espx.app and links ~/.espx/bin/espx to the espx command inside it, so the command your terminal and your agents run comes from the same build as the app, and it updates with the app. An older espx.app is moved aside and replaced in one rename, so a failed install leaves the old one in place.
If you installed the app another way, Install Command Line Tool in the espx menu makes the same link.
The disk image
The download page also has the app as a disk image. Open it and drag espx to Applications.
Install the espx command
The script puts the espx command in ~/.espx/bin, or in $ESPX_HOME/bin when ESPX_HOME is set. When that folder is not on your PATH it prints the line to add to ~/.zshrc or ~/.bashrc:
To install a specific release instead of the latest, set ESPX_VERSION:
The script checks the SHA-256 of every file it downloads. When minisign is installed (brew install minisign, or your Linux package manager) it also checks each file's signature against the espx release key and stops when either check fails. Without minisign it says that it checked only the SHA-256.
Install the tools
Run setup
This downloads espflash, cargo-espflash and esp-generate into ~/.espx/bin, runs rustup component add rust-src, and adds the RISC-V targets for every RISC-V chip. It is idempotent: a second run checks versions and installs nothing new. The desktop app's Toolchain page runs the same setup with one click.
To set up specific chips, pass a comma-separated list or all:
Any Xtensa chip in the list (esp32, esp32s2, esp32s3) also installs Espressif's Rust fork through espup, which is about 1 GB. See Xtensa chips.
Check the result
doctor checks rustup, cargo, each tool, rust-src and the RISC-V targets offline, and prints the fix for anything missing. The Xtensa rows (espup, the esp toolchain and the export file) are optional and never fail the check.
Verifying downloads
Every release file has a minisign signature beside it, its own name plus .minisig. The download page lists each file with its size, SHA-256 and signature. The espx release key, key id DC7D2A30607CC7E8, is:
To check a file you downloaded yourself, keep its .minisig next to it and run:
minisign prints the signature's trusted comment. It must read espx <version> <file>, here espx 0.1.0 espx-0.1.0-macos-arm64.dmg. A signature that verifies with another comment belongs to another file or another release. The install script, espx update and the app's updates all make the same two checks.
Updates
The desktop app updates itself once a day, and Check for Updates… in the espx menu checks now. espx update updates a command the script installed. Updating covers both, the setting that turns the app's checks off, and updating the tools.
Build from source
You can also build espx from a checkout of the repository:
The repository root is a virtual workspace, so cargo install --path . does not work. Name the crates/espx-cli package. cargo puts the espx binary in ~/.cargo/bin, which rustup already added to your PATH. To update it, pull and run the same command again; espx update leaves a cargo install alone.
To run the desktop app from the checkout:
On Linux, building the app needs the X11 and Wayland development libraries (libxkbcommon, libwayland, libxcb).
Plain cargo
espx runs every tool by its full path, so espx build, espx flash and the rest work without changing your shell. If you also want cargo run --release or espflash to work on their own, put the tools on your PATH:
espx env prints the export lines for ~/.espx/bin and, after an Xtensa setup, the lines from ~/.espx/export-esp.sh. To add that line to your shell config once, run espx setup --shell. It supports zsh (~/.zshrc) and bash (~/.bashrc).
Uninstall
espx uninstall removes what setup installed. Say what with flags, or pass -i to be asked about each item:
--home deletes the whole ~/.espx folder, including boards.toml, the recordings under sessions/ and agent.log. The Configuration reference lists what lives there. For the app's copy of espx, --self removes only the link in ~/.espx/bin. To remove the app, move ~/Applications/espx.app to the Trash.
Next
Follow the Quick start to create a project and flash a board.