Installation
There are several ways to get LeapMux. Pick the one that matches how you want to run it:
- Desktop app — the fastest way to try LeapMux on your own machine. Download a single installer, run it, and you have a Hub and Worker running together locally with no network setup.
- Docker — the recommended way to run a Hub (or a Hub plus Worker) as a long-lived service for a team or on a server.
- Standalone binary — the pre-built
leapmuxcommand-line binary, for running any mode on a host without Docker and without compiling. - From source — for contributors and operators who want to build the binary, images, or desktop app themselves.
Tip: If you just want to run LeapMux, the pre-built Docker images, desktop app installers, and standalone binaries are all you need.
Which install should I choose?
| Your goal | Choose | Why |
|---|---|---|
| Try LeapMux on your own laptop, run agents locally | Desktop app (solo mode) | One installer, no server, no login. Your data stays on your machine. |
| Run a shared Hub for a team, or a server you reach remotely | Docker | Supervised, persistent, multi-arch images. Run as hub (central service) or dev (Hub + Worker together). |
| Connect your laptop’s desktop app to a team Hub | Desktop app (distributed mode) | Same installer; on launch you choose Distributed and enter the Hub URL. |
| Run a Hub or Worker on a host without Docker | Standalone binary | A single self-contained leapmux executable you run directly. |
| Modify LeapMux, or build your own images/artifacts | From source | Full control over the build via task targets. |
For more on what each run mode does (solo vs. hub vs. worker vs. dev) and how to operate them, see Running LeapMux. For your very first session once LeapMux is installed, see Quick Start.
Supported platforms
LeapMux is developed and tested natively on macOS, Linux, and Windows.
| Platform | Architectures | Desktop app artifact |
|---|---|---|
| macOS | arm64 | .dmg |
| Linux | amd64, arm64 | .AppImage, .deb |
| Windows | amd64 | .msi |
Pre-built Docker images target linux/amd64 and linux/arm64.
Note: The standalone server binary for macOS is distributed as
darwin_arm64only.
Desktop app
The desktop app is a self-contained application that bundles the LeapMux Frontend and a local service. On first launch it presents a LeapMux launcher asking how you want to connect — Solo (a Hub and Worker run together on this machine; no network setup, your data stays local) or Distributed (connect to a remote Hub by URL). See Quick Start for what to do after the app opens.
Download
Download the installer for your platform from the Releases page. Artifact names follow these patterns (where <version> is the release version):
| Platform | Artifact |
|---|---|
| macOS (arm64) | LeapMuxDesktop_<version>_arm64.dmg |
| Windows (amd64) | LeapMuxDesktop_<version>_x64.msi |
| Linux (amd64) | leapmux-desktop_<version>_amd64.AppImage, leapmux-desktop_<version>_amd64.deb |
| Linux (arm64) | leapmux-desktop_<version>_aarch64.AppImage, leapmux-desktop_<version>_arm64.deb |
macOS
- Download the
.dmg. - Open it and drag LeapMux Desktop into your Applications folder.
- Launch LeapMux Desktop.
The macOS build is signed with a Developer ID and notarized, so it opens without Gatekeeper warnings.
Note: Solo mode on macOS requires Full Disk Access so LeapMux can traverse directories in your home folder. The first time you select Solo, the launcher shows a Full Disk Access Required card with an Open System Settings button. Grant access there; the app detects the change and restarts itself automatically. Distributed mode does not require Full Disk Access.
Tip: On macOS the desktop app can install a
leapmuxcommand-line symlink at/usr/local/bin/leapmuxso you can use the Remote control CLI from a terminal. When you enter a Solo workspace and the CLI isn’t on yourPATH, LeapMux offers to install it. This integration is macOS-only.
Linux
Two formats are provided; pick the one that suits your distribution:
.deb— for Debian/Ubuntu-based systems. Install with your package manager, for example:sudo apt install ./leapmux-desktop_<version>_amd64.debThe
.debalso places theleapmuxcommand-line binary at/usr/bin/leapmux..AppImage— a portable, single-file executable that needs no installation:chmod +x leapmux-desktop_<version>_amd64.AppImage ./leapmux-desktop_<version>_amd64.AppImage
After installing the .deb, launch LeapMux Desktop from your application menu (the desktop entry’s command is leapmux-desktop).
Windows
- Download the
.msi. - Run it. The installer is per-user — it requires no administrator elevation and installs under
%LOCALAPPDATA%\Programs\LeapMux Desktop. - Launch LeapMux Desktop from the Start menu or the desktop shortcut.
The installer also ships the leapmux.exe command-line tool in a cli\ subdirectory and adds that directory to your user PATH. WebView2 is installed automatically if it isn’t already present.
Note: The desktop app has no built-in auto-updater. To upgrade, download the newer installer from the Releases page and install it over the existing version.
Docker
Pre-built multi-arch images (linux/amd64 + linux/arm64) are published to GHCR at ghcr.io/leapmux/leapmux. The image is configured through two environment variables and the /data volume:
LEAPMUX_MODE— required. Selects the subcommand and must be one ofhub,worker,dev, orsolo.LEAPMUX_DATA_DIR— data directory inside the container. Default/data.- The image exposes port
4327, the single TCP listen port forhub,dev, andsolo. (Aworkermakes only outbound connections to a Hub, so it needs no inbound port.) - State and configuration live under
/data/<mode>/— e.g./data/hub/for the Hub database, encryption key ring, and config file. Mount a volume at/dataso this survives container recreation.
Run examples
# Run as a hub (central service only) — login required
docker run -p 4327:4327 -e LEAPMUX_MODE=hub -v leapmux-data:/data ghcr.io/leapmux/leapmux:latest
# Run as hub + worker together (dev mode) — listens on all interfaces, login required
docker run -p 4327:4327 -e LEAPMUX_MODE=dev -v leapmux-data:/data ghcr.io/leapmux/leapmux:latestFor the full image-tag matrix (Alpine vs. Ubuntu variants, version pinning, the :dev tag), the s6-overlay supervision and startup mechanics, and the /data volume layout, see Running LeapMux, which is canonical for Docker operations. Anything beyond LEAPMUX_MODE and LEAPMUX_DATA_DIR is configured through the per-mode YAML file or through LEAPMUX_HUB_* / LEAPMUX_WORKER_* environment variables — see Configuration.
Note: Use
dev(notsolo) for an all-in-one container. Insolomode the binary defaults to binding loopback only (127.0.0.1:4327), so the port is not reachable from outside the container unless you override the listen address in/data/solo/solo.yaml.devmode binds all interfaces (:4327) and is the container-friendly all-in-one variant.
Warning: The Hub does not terminate TLS itself. To serve LeapMux over HTTPS, put a reverse proxy in front of the container and set
public_urlandsecure_cookiesin the Hub config. See Running LeapMux and Configuration for reverse-proxy guidance.
Running a Worker container
A worker container connects out to a Hub and must be registered with a registration key minted in the Hub UI. The container doesn’t pass any Hub URL or key flags on your behalf, so supply them via the Worker config (/data/worker/worker.yaml) or via LEAPMUX_WORKER_HUB and LEAPMUX_WORKER_REGISTRATION_KEY environment variables. An unregistered Worker with no key exits with worker is unregistered: pass --registration-key <key> from the hub UI. See Managing Workers for the full registration flow.
Upgrading
Pull a newer tag and recreate the container against the same /data volume. Database migrations run automatically on startup, so no separate migration command is needed:
docker pull ghcr.io/leapmux/leapmux:latest
# stop and remove the old container, then re-run with the same -v leapmux-data:/dataStandalone binary
Each release also publishes a LeapMux Server package on the Releases page: the pre-built leapmux command-line binary, bundled with LICENSE.md and NOTICE.md. This is the simplest way to run a Hub, Worker, dev, or solo instance on a host where you don’t want Docker and don’t want to compile from source. The same binary serves every run mode via its subcommands — see the CLI reference.
| Platform | Artifact |
|---|---|
| macOS (arm64) | leapmux_<version>_darwin_arm64.tar.gz |
| Linux (amd64) | leapmux_<version>_linux_amd64.tar.gz |
| Linux (arm64) | leapmux_<version>_linux_arm64.tar.gz |
| Windows (amd64) | leapmux_<version>_windows_amd64.zip |
Download the archive for your platform, extract it, and run the leapmux executable. For example, on Linux:
tar -xzf leapmux_<version>_linux_amd64.tar.gz
cd leapmux_<version>_linux_amd64
./leapmux hub # or: solo, worker, devThe macOS package is signed with a Developer ID and notarized.
Tip: Put
leapmuxsomewhere on yourPATH(e.g./usr/local/bin) so you can invoke it from any directory and use the Remote control CLI. To upgrade, replace the binary with the one from a newer release archive; Hub and Worker database migrations run automatically the next time you start.
For run modes, ports, and data directories, see Running LeapMux; for the full subcommand and flag reference, see CLI Reference.
From source
Building from source is for contributors and operators who want to compile the binary, Docker images, or desktop app themselves. The full developer guide lives in the project README.md; this section is a high-level pointer.
Prerequisites
- Go 1.26.1 or later
- Node.js 24 or later
- Bun (latest) — JavaScript runtime and package manager
- Task — the build runner
- buf CLI — Protocol Buffer code generation
- protobuf (
protoc) — required by Tauri’sprost-build - SQLite (usually pre-installed)
- mprocs — needed for
task dev,task dev-solo, andtask dev-desktop - Rust toolchain and your platform’s Tauri WebView/system packages — only for the desktop app
- Docker — only for building Docker images
The Go-based tools sqlc, golangci-lint, and gotestsum are declared as tool dependencies in go.mod and invoked via go tool <name>; you don’t install them separately.
Build and run
git clone https://github.com/leapmux/leapmux.git
cd leapmux
task generate # generate proto + sqlc code and download spinner assets (not checked into git)
task dev # run Hub + Worker for development (requires mprocs)
# then open http://localhost:4327Common build targets:
| Command | What it builds |
|---|---|
task build | The full stack (backend + frontend + desktop) |
task build-backend | The leapmux binary (output to the repository root; .exe on Windows) |
task build-frontend | The web frontend |
task build-desktop | The Tauri desktop app |
task docker-build | Both Alpine and Ubuntu Docker images |
For the platform-specific dependency install commands (Homebrew, pacman, winget) and the full set of dev workflows, follow the project README.md. For what each run mode does once built, see Running LeapMux.
Next steps
- Quick Start — launch LeapMux and open your first agent.
- Running LeapMux — run modes, ports, data directories, Docker, and reverse proxies in depth.
- Configuration — the full configuration key reference and storage backends.
- Managing Workers — register and approve Workers connecting to a Hub.