Platform Support
Belay targets Linux first, ships released binaries for Linux and macOS, and supports Windows in-tree. This page states honestly what runs where in v0.1.0.
When to use this
Check here before you deploy on a given operating system, so you know which released binary to grab, which enforcement layers are active, and which degrade cleanly.
v0.1.0 released binaries
The Linux/macOS installer (curl -fsSL https://dl.belay.secblok.io/install.sh | bash) downloads the right CLI binary automatically. Windows has its own
installer (irm https://dl.belay.secblok.io/install.ps1 | iex) that installs
the desktop app with the CLI bundled in — see
Installation for both.
| Target | Released in v0.1.0 | Notes |
|---|---|---|
| Linux x86_64 | Yes | Fully-static musl build — runs on any Linux libc (glibc or musl). |
| macOS x86_64 (Intel) | Yes | |
| macOS aarch64 (Apple Silicon) | Yes | uname -m reports arm64; the installer maps it correctly. |
| Linux aarch64 | Coming soon | Not in v0.1.0 yet. |
| Windows x86_64 | Yes (unsigned) | Named-pipe transport, SCM service, and Tauri desktop are all installable today via the one-command installer; the installer executable itself is not yet code-signed, pending a certificate — Windows SmartScreen may warn on first run. |
Support matrix
| Capability | Linux | macOS | Windows |
|---|---|---|---|
| Released install | Yes (x86_64 musl CLI + .deb/.AppImage) | Yes (x86_64 + Apple Silicon CLI + .dmg) | Yes (.exe installer, unsigned — signing cert pending) |
| Build the unified binary | Yes (primary) | Yes (cargo build works out of the box) | Yes (in-tree) |
| Static musl build | Yes | — | — |
| Agent detect / protect / unprotect | Yes | Yes | In-tree |
| Hook & gate tool-call gating | Yes | Yes | In-tree |
| MCP proxy gating | Yes | Yes | In-tree |
| Hash-chained audit log | Yes | Yes | In-tree |
Local backend (serve) + desktop app | Yes (.deb + .AppImage) | Yes (.dmg, both archs) | Yes (.exe, named-pipe transport, Tauri desktop) |
Static scanner (scan, SARIF) | Yes | Yes | In-tree |
| Native Rust firewall (rustables, no shell-out) | Yes | Compiled inert (degrades cleanly) | Not applicable |
| Inline egress | Yes | Compiled inert | Not applicable |
| eBPF sensor (opt-in, privileged) | Yes (CAP_BPF/root) | Not applicable | Not applicable |
| Boot-start service | systemd | launchd | SCM (elevated) |
Linux — primary target
Linux is where Belay does the most. In addition to the portable agent-defense
core (scanner, hook gating, audit, daemon IPC over a Unix socket), Linux gets the
full host-control layer: a native Rust firewall (via rustables, with no
shell-out to nft/iptables), inline egress interception, and an optional,
privileged eBPF sensor for detect-and-kill self-protection.
- The v0.1.0 Linux binary is a fully static musl build, so a single file runs on any Linux libc — glibc or musl — with no libc dependency. Drop it onto a minimal or headless VPS as-is.
- Linux aarch64 is not in v0.1.0 yet; it is coming soon. In the meantime you can build it from source.
- The eBPF sensor is opt-in and needs
CAP_BPF/root. It degrades cleanly when unavailable — daemon startup is never blocked by its absence.
macOS — first-class, both architectures
macOS ships released binaries for both x86_64 (Intel) and aarch64 (Apple
Silicon) in v0.1.0. It also builds out of the box: a plain cargo build works,
and the entire agent-defense core is portable — scanning, hook gating, the
hash-chained audit log, and daemon IPC over a Unix socket all run normally.
The Linux-only enforcement layers (the native firewall, inline egress, and the eBPF sensor) are compiled inert on macOS and degrade cleanly: for example, the firewall views simply report an empty ruleset instead of failing. The boot-start service is installed as a launchd service.
"Degrades cleanly" means the feature is safely absent, not silently broken — Belay still enforces at the tool-call boundary on macOS; it just doesn't add the Linux kernel-level host controls.
Windows — one-command install available, unsigned pending a certificate
Windows is supported in the codebase and several pieces are complete:
- The cross-platform IPC transport (named pipes) with peer authentication.
- The SCM service:
install-serviceregisters a LocalSystem auto-start service through the Service Control Manager. - The Tauri desktop app.
- A one-command installer —
irm https://dl.belay.secblok.io/install.ps1 | iexdownloads the desktop app (with the CLI bundled alongside it), verifies its SHA-256, and installs it passively with Start Menu and Desktop shortcuts. See Installation for flags and details.
What is not yet available is a code-signed installer — it is waiting on a code-signing certificate, so Windows SmartScreen may warn on first run ("Windows protected your PC" → More info → Run anyway). The install itself is fully functional today; it just isn't signed yet.
When you run install-service on Windows, use an elevated (Run as
Administrator) shell rather than sudo.
Data locations
| Platform | Data directory |
|---|---|
| Linux / macOS | ~/.belay (socket belayd.sock, audit.ndjson, ai.json, ai_key 0600, channels.json, state.db, …) |
| Windows | %ProgramData%\Belay |
Related docs
- Installation — install script, build, and service setup per platform.
- Quickstart — the fastest path to a protected agent.
- How it works — the enforcement model that is portable across platforms.