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 installer (curl -fsSL https://dl.belay.secblok.io/install.sh | bash)
downloads the right one automatically.
| 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 | In-tree | Named-pipe transport, SCM service, and Tauri desktop are supported, but the signed installer is pending a code-signing certificate. |
Support matrix
| Capability | Linux | macOS | Windows |
|---|---|---|---|
| Released static binary (v0.1.0) | Yes (x86_64 musl) | Yes (x86_64 + Apple Silicon) | In-tree (signed installer 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 | Yes | Yes (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 — supported in-tree, signed installer pending
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.
What is not yet available is a signed Windows installer — it is waiting on a code-signing certificate. Until then, Windows is best treated as build- and in-tree-supported rather than a one-command install.
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.