Skip to main content
The install script supports three modes: control plane, agent, and CLI. It handles binary downloads, Firecracker setup, systemd service creation, and configuration generation.

Quick install

# Control plane (default)
curl -fsSL https://releases.zwrm.eu/zwrmd/install.sh | sudo bash

# Agent on a worker host
curl -fsSL https://releases.zwrm.eu/zwrmd/install.sh | sudo bash -s -- \
    --agent --control-plane-url=https://cp.example.com:8080

# CLI only (no root needed)
curl -fsSL https://releases.zwrm.eu/zwrmd/install.sh | bash -s -- --cli

Modes

ModeFlagDescriptionRoot
Control plane(default)Full control plane with networking, Firecracker, and systemd serviceYes
Agent--agentWorker host agent with gRPC, Firecracker, and systemd serviceYes
CLI--cliCLI binary onlyNo

Flags

FlagDescriptionApplies toDefault
--agentInstall agent modeControl plane mode
--cliInstall CLI modeControl plane mode
--version=VERSIONPin to a specific versionAllLatest
--base-url=URLOverride release download base URLAllhttps://releases.zwrm.eu/zwrmd
--control-plane-url=URLControl plane URL (required for agent)Agent
--region=REGIONRegion labelAgent
--datacenter=DCDatacenter labelAgent
--license-key=KEYLicense key injected into configControl plane, Agent
--yes, -yNon-interactive, auto-confirm promptsAllfalse
--uninstallRemove installationAllfalse
--dry-runShow what would be doneAllfalse
--no-startInstall but don’t start the serviceControl plane, Agentfalse

What gets installed

Control plane

StepDescription
1Download zwrmd binary to /usr/local/bin/zwrmd (checksum verified)
2Create directories: /etc/zwrm, /var/lib/zwrm/images, /var/lib/zwrm/cache, /var/lib/zwrm/certs, /var/lib/zwrm/secrets
3Download dropbear SSH server to /usr/local/share/zwrmd/dropbear
4Generate /etc/zwrm/config.toml via zwrmd --generate-config
5Enable IP forwarding and install iptables-persistent
6Download Firecracker and kernel (if not present)
7Install zwrmd.service systemd unit
8Enable and start the service

Agent

StepDescription
1Download zwrm-agent binary to /usr/local/bin/zwrm-agent (checksum verified)
2Create directories: /etc/zwrm, /var/lib/zwrm/image-cache
3Generate /etc/zwrm/agent.toml with auto-detected CPU and memory capacity
4Enable IP forwarding
5Download Firecracker and kernel (if not present)
6Install zwrm-agent.service systemd unit
7Enable and start the service

CLI

Downloads the zwrm binary to /usr/local/bin/zwrm (as root) or ~/.local/bin/zwrm (non-root).

Firecracker and kernel

During control plane and agent installation, the script checks for Firecracker and the kernel image. If either is missing, it prompts to download them (auto-confirmed with --yes or piped stdin).
ComponentPathVersion
Firecracker/usr/local/bin/firecrackerv1.10.1
Kernel/opt/firecracker/vmlinux-5.10.bin5.10.230

Release channels

ChannelURLUse case
Stablehttps://releases.zwrm.eu/zwrmdProduction
Canaryhttps://releases.zwrm.eu/zwrmd/canaryTesting new builds before promotion
Install from canary:
curl -fsSL https://releases.zwrm.eu/zwrmd/canary/install.sh | sudo bash -s -- \
    --base-url=https://releases.zwrm.eu/zwrmd/canary --version=v<git_sha> --yes --no-start

Dry run

Preview what the installer would do without making changes:
bash install.sh --dry-run
bash install.sh --dry-run --agent --control-plane-url=https://cp.example.com:8080
See Upgrading for upgrade and uninstall procedures.