Installing MixLab
This handbook covers MixLab through the
mixcommand line. If you would rather work in a graphical interface, you already have one: every installer places the MixLab window beside the command line. Both drive the same MixEngine underneath, so everything in this handbook still applies.
Every build is published on the project's GitHub releases page, with a checksum and a signature beside it. Pick the file for your system below. Installing changes as little as it can: nothing is added to your certificate store, your DNS settings or your firewall until the day you ask for something that needs it. What MixLab asks permission for has the detail.
One command
On macOS or Linux:
curl -fsSL https://mixnz.github.io/mixlab/install.sh | sh
On Windows, in PowerShell:
irm https://mixnz.github.io/mixlab/install.ps1 | iex
It picks the installer for your system below, checks its checksum and its signature against
MixLab's key before running it, and then runs it the way each section describes. Add --headless
(-Headless on Windows) for the command-line programs without the window, --version 0.0.13 for
an older release, and --dry-run to see what it would download and run without installing
anything. Options go after sh -s -- on macOS and Linux, and on Windows through
& ([scriptblock]::Create((irm https://mixnz.github.io/mixlab/install.ps1))) -Headless.
If you would rather read a script before running it, download it first:
curl -fsSLO https://mixnz.github.io/mixlab/install.sh
less install.sh
sh install.sh
It needs minisign to check the signature. When you have none it fetches one for the length of the
run, except on an Intel Mac, where it asks you to brew install minisign first. Everything it
downloads is deleted when it finishes; what stays is what the installer installed.
What you are installing
Five programs, and it is worth knowing what each is before one of them surprises you.
| Program | What it does |
|---|---|
mixengined | The daemon. It owns everything MixEngine knows and supervises everything it runs. |
mix | The command you type. It asks the daemon and prints the answer. |
mixengine-shim | The stand-in for php, node, python and ruby that picks the right version. |
mixengine-elevate | The one program that runs as an administrator, for a few seconds at a time. |
| MixLab | The window: a dashboard for the daemon, plus a database client, an HTTP client and a terminal. |
The first three and MixLab are installed together. On Windows they are installed as you, and
mixengine-elevate is not placed by the installer: MixLab installs it itself, the first time
something needs an administrator, inside a prompt you were going to see anyway. The .pkg, the
.deb and the .rpm place it as root while they install. Either way MixLab keeps it current: when
an update changes it, the next permission prompt replaces it.
If you do not want the window, there is a download without it. Every system publishes a headless installer holding the four command-line programs and nothing else: no window, and on Linux no WebKitGTK to install. It is linked in each section below and is what a server, a container image, or any machine with no display wants.
Windows
Or install with the One command above.
Download the installer · headless installer · Windows ARM: installer, headless
Two installers are published, and either is a complete install.
mixlab-<version>-windows-x86_64-setup.exe: a per-user installer. It writes into your own profile and puts its directory on yourPATH, so installing asks for no administrator and touches nobody else's account on the machine. It also adds MixLab to your Start Menu, offers a desktop shortcut on the components page, and makes MixLab the program that opens amixlab://link.mixengine-<version>-windows-x86_64-headless-setup.exe: the same installer without MixLab, for the four command-line programs and nothing else.
The first time MixLab needs an administrator, usually when you allow its first-run setup, one prompt also puts its privileged helper in place.
Windows ARM builds are published beside them, named aarch64.
Expect a SmartScreen warning. MixLab is not signed with an Authenticode certificate, so Windows shows "Windows protected your PC" and hides the button behind More info → Run anyway. That is a statement about a certificate nobody has bought, not about the file: check the signature below if you want a real answer about what you downloaded. The warning tends to come back with every release, because reputation with no publisher identity accrues to a file rather than to a project.
macOS
Or install with the One command above.
Download the package · headless package
mixlab-<version>-macos-universal.pkg, one package for both Intel and Apple silicon. It puts
the command-line programs in /usr/local/bin and MixLab in /Applications, so the window is in
Spotlight and the Launchpad the moment the install finishes.
mixengine-<version>-macos-universal-headless.pkg installs the same four command-line programs
and the same privileged helper, without MixLab, for a machine that wants no window. Updates offer
each Mac the package of the kind it has.
MixLab has no Apple Developer ID either, so double-clicking the package in Finder gets you a Gatekeeper dialog and, on macOS 15 and later, a trip through System Settings → Privacy & Security → Open Anyway. Installing from a terminal avoids all of that:
sudo installer -pkg mixlab-*-macos-universal.pkg -target /
That is the instruction to reach for first on a command-line product. The package runs as root, so it also places the privileged helper for you.
Linux
Or install with the One command above.
.deb
· .rpm
· arm64: .deb,
.rpm
· headless: .deb,
.rpm,
arm64 .deb,
.rpm
Two packages for each family, each a complete install:
mixlab: MixLab and the four command-line programsmixengine-headless: the four command-line programs alone, for a server or a machine with no display
The .deb is for Debian, Ubuntu and their relatives, the .rpm for Fedora, RHEL and openSUSE:
sudo apt install ./mixlab_*_amd64.deb
sudo dnf install ./mixlab-*.x86_64.rpm
The two packages replace each other: installing one removes the other.
Other distributions are not supported. Arch, NixOS, Gentoo and the rest have no package here; building from source (below) is the way there.
The window needs WebKitGTK 4.1 and glibc 2.35: Ubuntu 22.04, Debian 12, Fedora 38, openSUSE
Leap 15.6 or newer. MixLab is a webview application, and the library it draws with is your
distribution's: libwebkit2gtk-4.1-0 on Debian and Ubuntu, webkit2gtk4.1 on Fedora and RHEL,
libwebkit2gtk-4_1-0 on openSUSE. The mixlab package declares it, so your package manager pulls
it in; it also adds a MixLab menu entry and its icon.
The headless package asks for none of that. The four command-line programs are built against glibc 2.28, so they run on the long-term-support distributions they are aimed at, and they need no webview at all.
Updates come as the next package. mix self-update downloads it, checks it against the signed
release, and prints the command that installs it, sudo apt install … or sudo dnf install …. On
a desktop it also opens the package in your software centre.
aarch64 builds are published beside the x86_64 ones.
From source
MixLab is Rust, and nothing else:
git clone https://github.com/mixnz/mixlab.git
cd mixlab
cargo build --release
The binaries land in target/release/. MixLab is built separately, as a workspace of its own
under apps/desktop/. A source build is one more way of installing that runs entirely as you,
which is why placing the privileged helper is never a packager's job.
Checking what you downloaded
Two files sit beside every artifact, and they answer different questions.
sha256sum -c mixlab_*_amd64.deb.sha256
minisign -Vm mixlab_*_amd64.deb -P <the key in packaging/updates.pub>
The .sha256 tells you whether two downloads of the same file are the same file. It is not a
signature and is not offered as one: anybody who could replace the artifact could replace the
checksum beside it. The unversioned files the links above point at carry their own .sha256 and
.minisig, named after themselves rather than after the versioned file they are a copy of. The
.minisig is the real answer: an Ed25519 signature MixLab's own release pipeline makes, against
a public key committed in this project's repository as packaging/updates.pub and compiled into
MixEngine itself. That is the same key mix self-update checks before it replaces anything.
After installing
Open a new terminal, since the installer changed your PATH and a shell that was already running
has not heard about it. Then ask:
mix status
The first mix command starts the daemon if it is not already running. What you should see is a
healthy daemon, its version, and nothing being supervised yet.
Then put the runtime commands on your PATH, which is a separate step because it is a separate
directory:
mix path install
That fills <root>/bin with the shims that make php, node, python and ruby resolve to the
version each directory asks for, rather than to one version for the whole machine. MixLab does
the same from its Dashboard, or from the Terminal commands switch in Settings.
If you installed the window, open MixLab from the Start Menu, /Applications, your desktop's
application menu, or by running mixlab. It shows the same daemon mix status just answered.
What the installer did not do
Nothing outside your own account, and nothing to the rest of the machine:
- No certificate authority was installed. That happens the first time you ask for HTTPS.
- No DNS or hosts change was made. That happens the first time you create a site.
- No firewall rule and no port grant. Those happen when a site needs them.
- No runtime and no server was downloaded. MixLab installs PHP, MariaDB and the rest on request, and only the versions you ask for.
- Nothing was registered to start at login.
mix autostart enableis how that becomes true.
Every one of those is described in What MixLab asks permission for, including what each prompt will literally change before you agree to it.
Ready? Your first site takes about five minutes.
This page as Markdown: https://mixnz.github.io/mixlab/en/install.md