MixLab 0.0.20

Installing MixLab

This handbook covers MixLab through the mix command 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.

ProgramWhat it does
mixenginedThe daemon. It owns everything MixEngine knows and supervises everything it runs.
mixThe command you type. It asks the daemon and prints the answer.
mixengine-shimThe stand-in for php, node, python and ruby that picks the right version.
mixengine-elevateThe one program that runs as an administrator, for a few seconds at a time.
MixLabThe 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.

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:

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:

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