System Check

A one-click dependency audit that scans the host for every binary, service, library, and kernel module WolfStack touches — and tells you exactly what's broken and how to fix it.

Why it exists

WolfStack integrates with dozens of external tools — Docker, QEMU, LXC, iptables, dnsmasq, pppd, ethtool, tcpdump, fuse3, s3fs, NFS — and a missing or broken dependency can cause confusing symptoms ("app store installs fail on server B but work on server A"). System Check surfaces those gaps instantly instead of making you hunt through logs.

How to use it

  1. Go to Settings → System Check
  2. Click Run Check
  3. Review the results grouped by category: Core, Containers, Virtualisation, Networking, Storage, USB

Status levels

StatusMeaning
OKInstalled and healthy — nothing to do.
WarningInstalled but something looks off (service stopped, missing permissions, kernel module not loaded). The install hint and AI button help you fix it.
MissingNot installed — some WolfStack feature will not work. A distro-specific install command is shown.
UnsupportedNot available on this OS or architecture (e.g. s3fs on Alpine, QEMU on ppc64le for x86 ISOs). Nothing to fix — it's a platform limitation.

Docker deep-check

The Docker check goes beyond "is the binary on PATH". It runs docker info to verify the daemon is actually reachable. This catches:

  • Service stoppedsystemctl enable --now docker
  • Permission denied — current user not in the docker group
  • Socket missing — Docker installed via snap or rootless and socket isn't at the expected path

AI-powered remediation

When the AI Agent is configured, each Warning or Missing row gets an Ask AI button. The AI receives the check details plus your host OS, architecture, and distro family, and returns concrete, distro-aware remediation steps you can run right now.

One-click Install button New

For the common case of "this dependency is missing" WolfStack now ships a 📦 Install button next to each Missing row. One click installs the package via your distro's package manager and enables any associated systemd unit. No SSH needed, no "what's the package called on Arch again?" copy-paste hunt.

Under the hood it POSTs to /api/system/install-package with a logical package name (cron, qemu, libvirt, etc.). The server looks the name up in a fixed allowlist — not a free-form shell escape hatch — maps to the per-distro package (cron on Debian, cronie on Arch & Fedora, cron on SUSE…), runs the right package manager, verifies the binary actually appeared on PATH, and enables + starts the service unit where there is one (cronie.service, libvirtd.service, sshd.service).

Packages in the allowlist today: cron, tcpdump, conntrack, iptables, dnsmasq, qemu, libvirt, openssh-server, wireguard-tools, nftables, bind-utils. Expands as WolfStack grows features that need new system packages — the allowlist is the gate.

Arch Linux gets a fair shake New

Arch ships zero cron daemon by default, which quietly broke Settings → Cron and any scheduled-task feature the moment you landed on a fresh install. System Check now has a dedicated Scheduling category:

  • crontab binary present — red on Arch/Alpine by default, green after installing cronie.
  • cron daemon running — probes cronie, cron, crond, and vixie-cron service names so whichever package your distro uses, we notice. Yellow warning if the binary is there but the service is stopped; install hint tells you the right systemctl enable --now to run.
  • Install button installs cronie and starts the service in one click.

Checks performed

Coverage:

  • Core — Linux kernel version, systemctl, curl, git, modprobe, pgrep
  • Containers — Docker (daemon health), containerd (service state), LXC tools
  • Virtualisation — QEMU (arch-aware: x86_64/aarch64/ppc64, with Install button), Proxmox VE detection
  • Scheduling — crontab + cron daemon presence (with Install button) New
  • Networking — iptables, ip (iproute2), bridge-utils, dnsmasq, socat, ethtool, tcpdump, pppd, /dev/net/tun
  • Storage — fuse3, s3fs, mount.nfs
  • USB — vhci_hcd kernel module, usbip_host kernel module
Esc