Skip to main content

Platform and environment feature matrix

Where each piece of nyxd runs, and which features apply.

How to read this​

SymbolMeaning
YesSupported in that environment
PartialWorks with documented limits
NoNot available (rejected, ignored, or not applicable)
N/ADoes not apply to that environment

Environments

EnvironmentWhat actually runs containers
Linux rootfulnyxd as root on the host (system service or sudo nyxd)
Linux rootlessnyxd as your user (user namespace); automatic when not root
Linux -userns-remapRootful daemon; containers mapped to subordinate host UIDs
macOS (nyx machine)nyx on the Mac; nyxd+crun inside an Alpine VM (vfkit)
Windows (nyx machine)nyx.exe on Windows; nyxd+crun inside a WSL 2 distro

On macOS and Windows the CLI is native; the runtime is always Linux inside the machine. Compose, AppArmor, bridges, and cgroups are evaluated on that Linux side.

Client and install​

FeatureLinux rootfulLinux rootlessLinux userns-remapmacOS machineWindows machine
nyx CLIYesYesYesYesYes (nyx.exe)
Installer / packagesYesYesYesYes (install.sh)Yes (install.ps1)
Control API (Unix socket)YesYesYesYes (vsock → Mac sock)Yes (WSL ↔ Windows)
nyx machineN/AN/AN/AYesYes
TCP listen for APINoNoNoNoNo

Runtime and images​

FeatureLinux rootfulLinux rootlessLinux userns-remapmacOS machineWindows machine
Run OCI containers (crun)YesYesYesYes (in VM)Yes (in WSL)
nyx composeYesYesYesYesYes
Pull / tag / push / save / loadYesYesYesYesYes
nyx build (no Docker/BuildKit)YesYesYesYesYes
Restart policies / healthchecksYesYesYesYesYes
Bounded JSON logsYesYesYesYesYes

Networking​

FeatureLinux rootfulLinux rootlessLinux userns-remapmacOS machineWindows machine
Default -net-drivernativehosthostnative (in VM)native (in WSL)¹
Native bridge (nyxbr0)YesNo (rejected)No (rejected)Yes (in VM)Yes (in WSL)¹
Compose per-network bridge+subnetYesNoNoYes (in VM)Yes (in WSL)¹
Cross-bridge isolation (nft)YesN/AN/AYes (in VM)Yes (in WSL)¹
Host networkingYesYes (default)Yes (default)Partial²Partial²
CNI (-net-driver=cni)YesNoNoPossible in VMPossible in WSL
Embedded DNS / .nyxd.localYes (native/auto)No (host resolv)No (host resolv)Yes (in VM)Yes (in WSL)¹
Publish ports to host loopbackYesYes (userland fwd)YesPartial³Yes
Publish UDP on localhostYesYesYesPartial³Yes
Service names via /etc/hostsVia DNS on nativeYes (host net)Yes (host net)Via DNS in VMVia DNS in WSL¹

¹ Windows WSL distro runs rootful nyxd with native networking by default (same model as a Linux server inside WSL).
² Host network inside the VM/WSL shares that Linux network namespace, not the Mac/Windows host namespace.
³ macOS: TCP published ports are forwarded to Mac localhost; UDP may answer only on the VM address (see macOS).

Security and isolation​

FeatureLinux rootfulLinux rootlessLinux userns-remapmacOS machineWindows machine
User namespace isolationOptional (-userns-remap)Yes (always)YesVM boundary + Linux insideWSL boundary + Linux inside
cgroup resource limitsYesNo (dropped)YesYes (in VM)Yes (in WSL)
Default seccomp profileYesYesYesYesYes
seccomp_profile: unconfinedYesYesYesYesYes
Compose apparmor_profilePartial⁴Partial⁴Partial⁴No⁵No⁵
privileged / cap_addYesPartial⁶YesYes (in VM)Yes (in WSL)
Mount host docker.sockYes (hybrid)Partial⁷YesPartial⁸Partial⁸

⁴ Applied only when the Linux host has AppArmor mounted and the named profile is loaded; otherwise ignored with a warning (SELinux-only, Alpine, etc.).
⁵ AppArmor is a Linux LSM; the Mac/Windows hosts have none. Profiles are not applied inside the default Alpine/WSL images unless you load AppArmor there yourself.
⁶ Rootless cannot grant real host privileges (modules, host net config, device nodes) even with --privileged.
⁷ Root-owned Docker socket is usually unreachable from a rootless user namespace.
⁸ Only if that socket exists inside the VM/WSL (or is shared into it); mounting a Windows/macOS Docker Desktop socket path is a different layout.

Paths and mounts​

FeatureLinux rootfulLinux rootlessLinux userns-remapmacOS machineWindows machine
Default data dir/var/lib/nyxd$XDG_DATA_HOME/nyxd/var/lib/nyxdVM disk under ~/Library/nyx/machinesWSL disk (ext4.vhdx)
Bind-mount host project dirsYesYesYesYes under /UsersYes (Windows paths translated)
Bind-mount arbitrary host pathsYesYesYesNo (only shared virtio-fs)Partial (via WSL path rules)