Firewall & Bundled Vuln DB
Belay ships two host-control capabilities as default-on features: a
native Rust firewall and a bundled vulnerability database. Both are
implemented natively in Rust — no external tools are shelled out to (no
clamd, no fail2ban, no nft/iptables command-line invocations). Everything
runs in-process.
When this matters
The tool-call boundary stops an agent from doing something dangerous. Host control adds a second dimension: constraining what reaches the network and knowing which of your installed dependencies carry known vulnerabilities — all without asking you to install or configure separate security daemons.
Native firewall
The firewall talks to Linux netfilter/nftables directly through the native
Rust rustables bindings rather than driving the nft or iptables binaries.
Because there is no shell-out, there is no dependency on external firewall
tooling being present or a particular version being installed.
Related Linux enforcement paths (inline egress via NFQUEUE, the optional eBPF
sensor) sit in the same host-control layer. See belay firewall
and belay egress for the runtime views.
One-click auto-setup (preview then confirm)
The firewall supports two setup paths:
- Manual — you author the ruleset yourself.
- One-click auto-setup — Belay detects your environment, generates a sensible ruleset, and previews the exact changes before applying them. You confirm; nothing is written to netfilter until you say so.
Auto-setup is also offered by the setup wizard so a first run can turn on host firewalling without hand-writing rules.
Host enforcement is fully active on Linux. On macOS the Linux-only enforcement layers (nftables firewall, NFQUEUE, eBPF) compile inert and degrade cleanly — the firewall views report an empty ruleset rather than failing — so the agent-defense core still works, but the firewall does not enforce. Windows support is still in progress. See Platform Support.
Bundled vulnerability database — no NVD key required
Belay ships a per-ecosystem vulnerability database stored in an embedded Rust key-value store. It is bundled with the product: end users never supply an NVD API key and never configure an external feed to get baseline coverage.
- The database is packaged per ecosystem, selected at build time (via
BELAY_ECOSYSTEM) so the binary carries the advisory data relevant to your stack. - Lookups are local and offline — consistent with Belay's local-first, no-phone-home posture.
- The open build ships a thin baseline seed of advisory data. It is enough to run key-free out of the box.
BELAY_NVD_API_KEY exists only for advanced / self-hosted feed generation.
End users never need it — the bundled DB is the default and requires no
credentials.
Exploitability signals: CISA KEV + EPSS
Vulnerability reports do more than list CVE IDs. Each finding is annotated with two exploitability signals so you can triage by real-world risk, not just CVSS:
- CISA KEV badge — flags advisories on the CISA Known Exploited Vulnerabilities catalogue, i.e. issues confirmed to be exploited in the wild.
- EPSS % — the Exploit Prediction Scoring System probability that a vulnerability will be exploited in the near term, shown as a percentage column alongside the finding.
Together they let you sort a wall of CVEs down to "known-exploited and high-probability first."
Because coverage is bundled and key-free, vulnerability checks work on a
headless VPS or an air-gapped host with no network calls and no credentials to
manage. In the open build the KEV/EPSS columns render but show kev=false /
epss=null unless enrichment data is bundled — the display is present, the
enrichment ships with the curated feed.
Both are default-on
The resident daemon enables the firewall and the vulnerability database by default. A standalone binary invoked without these features would otherwise start with an empty firewall, so shipping them on by default means the host controls are present the moment the daemon runs.