Time-boxed by default
Every grant carries a TTL. Access opens for exactly as long as it is needed and expires on its own — no standing open ports, no forgotten allow-list entries to audit later.
Fleet firewall access · in active development
FleetGate is a signed, time-boxed firewall access plane for your whole fleet: grant IP- and port-scoped access on demand, propagate bans to every host, and keep zero standing open ports. Self-hostable, agent-light, and built by people who run fleets in production.
See it work
One request — signed and time-boxed. The host opens the port, then closes it on its own when the TTL runs out. Nothing left standing.
$ fleetgate grant 203.0.113.7 --port 22 --ttl 10s
✓ verdict issued · id 7f3ad9 · tier 1 · Ed25519-signed
→ cp01 · pulled, signature verified against pinned key
→ cp01 · firewall ACCEPT 203.0.113.7 tcp/22 · expires 00:10
→ cp01 · firewall: rule expired — removed
✓ access closed automatically · zero standing ports
How it works
A central authority makes and signs every access decision. A tiny enforcer on each host verifies and applies it. Nothing the host receives is trusted without a valid signature, and nothing stays open longer than it was granted for.
Attack surface
Every always-open management port is a door anyone can knock on, around the clock. FleetGate keeps them shut until access is granted — then shuts them again on the TTL.
Every gated service is reachable by anyone, always. Your firewall is a static allow-list you hope is still current.
Nothing stands open. One IP holds a time-boxed grant on one port; it closes itself when the TTL runs out.
The boring-but-critical parts of firewall access, done once and done right — so access is something you grant, not something you leave open.
Every grant carries a TTL. Access opens for exactly as long as it is needed and expires on its own — no standing open ports, no forgotten allow-list entries to audit later.
Every decision is Ed25519-signed by the authority and verified on each host before it touches the firewall. The transport is assumed hostile; only a valid signature counts.
Ban a source once and it propagates to every host — even the boxes with no detection agent of their own. Your detectors feed it; FleetGate distributes and enforces.
A tiny Go enforcer ships as a signed .deb/.rpm and drives the firewall you already run (firewalld today). No runtime, no sidecars, no daemon zoo.
The wire format
Every decision is a small JSON object with a detached Ed25519 signature. The host verifies it against a key pinned at enrolment before it touches the firewall — the transport is assumed hostile, so a valid signature is the only thing that counts.
The signature covers the verdict's canonical form (sorted keys, no whitespace), so it is byte-identical across the TypeScript control plane and the Go enforcer.
{
"verdict": {
"v": 1,
"id": "7f3ad9e2-1c4b-4f8a-9b2e-2a1d4c6e8f00",
"subject": "203.0.113.7",
"effect": "allow",
"ports": [22],
"target": "cp01",
"scope": "host",
"expiresAt": 1923264000,
"tier": "1"
},
"alg": "ed25519",
"keyId": "Bki7-YhfHIibqiKN",
"signature": "nBniygI9PtgUOXSoK1UTn57b4v41o7nNIjv8LXiroywhmlJ…"
} Security
FleetGate touches the firewall on every host you run, so the trust model came first — not as a retrofit.
Verdicts are Ed25519-signed and verified against a key pinned at enrolment. No CA to trust, no transport to trust.
Every decision lands in a hash-chained audit log. Any edit to history breaks the chain and is detectable.
Management, monitoring and tailnet ranges are un-bannable by policy — a propagated ban can never lock you out.
Host changes are runtime-only, so reverting to the baseline firewall is a single reload. Hard to brick by design.
Verify our packages
The FleetGate enforcer ships as a GPG-signed .deb and
.rpm. Import our public key once and your package
manager checks the signature on every release.
fingerprint: E80D 40D6 0D6E 1B34 9651 410A 265F 7CA0 1EDA C2BC
# RPM hosts (AlmaLinux / CloudLinux)
sudo rpm --import https://fleetgate.dev/keys/fleetgate-packages.asc
rpm --checksig turnstyle-enforcer-*.rpm
# Debian / Ubuntu hosts
curl -fsSL https://fleetgate.dev/keys/fleetgate-packages.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/fleetgate.gpg FleetGate is in active development. Leave an email and we will tell you when it is ready to put in front of your fleet — no drip campaign, no newsletter, just the one message that matters.