Transparent, Wire-Speed Network Traffic Filter & Smart Gateway Protection for OpenWrt and Linux Routers.
PulseGate is a lightweight, high-performance transparent network traffic filter and gateway security program engineered for modern routers and Linux gateway servers. By deploying PulseGate at your router or gateway, every device in your local area network (LAN)—smartphones, computers, smart TVs, and IoT hardware—is instantly protected without installing any client apps, certificates, or plugins.
PulseGate includes a built-in, responsive real-time management dashboard accessible directly from your browser:
- No Client Installation: Protect all connected clients (phones, laptops, smart TVs, IoT sensors) without touching individual endpoints.
- Zero Configuration: No SSL/TLS root certificates or complex proxy profiles required on devices.
- Comprehensive Encryption Support: Native deep handshake inspection for both TCP TLS and modern UDP QUIC (HTTP/3) traffic.
- ECH Awareness: Detects and handles Encrypted Client Hello (ECH) traffic to ensure accurate policy enforcement.
- Prevent DNS Bypass: Restricts LAN devices from bypassing local DNS to access unauthorized external DoH/DoT resolvers.
- Remote DNS Blocklists: Subscribe to remote encrypted DNS threat domain and IP blocklists to prevent DNS leaks and ensure unified security.
- Country & IP Routing: Intelligent outbound traffic splitting based on GeoIP country databases and CIDR subnets.
- Multi-Proxy Support: Configure multiple SOCKS5 proxy outbounds with independent TCP and UDP routing rules.
- Graceful Failover: Automatic fallback to direct pass-through or safe block policy on proxy failure.
- Native Fast-Path Throughput: Once a connection stream is verified, packets flow directly at native hardware wire speed.
- Negligible CPU Overhead: Highly optimized design ensures gaming ping remains unaffected and 4K/8K video streaming stays completely smooth.
- Multi-Source Remote Sync: Automatically synchronizes and merges multiple remote HTTPS threat blocklists and hosts feeds (e.g. StevenBlack, HaGeZi, anti-AD).
- Intelligent Deduplication: Deduplicates domains and resolves overlaps in background updates.
- Multi-Dimensional Matching: Supports exact domains, wildcard domain suffixes, and IP CIDR ranges.
- Offline Fallback Database: Built-in offline security database ensures immediate protection on first boot without internet access.
- Zero Network Dropouts: Designed for mission-critical home and enterprise networks.
- Safe Fallback: In the event of unclassified traffic, service reloads, or background updates, traffic safely falls back to pass-through mode so your internet connection is never interrupted.
- Self-Contained Dashboard: Integrated web server with zero external dependencies (no Nginx/Apache/PHP/Node.js needed).
- Live SSE Audit Stream: Real-time event stream of connection verdicts (
Allowed/Blocked), protocol types (TCP/UDP/TLS/QUIC), client LAN IPs, destination domains, and classification reasons. - Online Management: Manage threat subscriptions, DNS enforcement, GeoIP routing rules, and custom allow/block lists with instant effect.
- System Health Diagnostics: Real-time metrics including uptime, fast-path rates, throughput, active flows, and memory usage.
- Standalone Static Executable: Available for both
x86_64andARM64architectures. - Ultra-Low Memory Footprint: Uses minimal memory and CPU resources, making it ideal for embedded OpenWrt routers.
| Platform / Architecture | Compatibility | Description |
|---|---|---|
| OpenWrt | ✅ Supported | Compatible with x86_64 soft routers, embedded routers, and custom OpenWrt builds. |
| Linux Gateways & Servers | ✅ Supported | Compatible with Debian, Ubuntu, Alpine, CentOS, Rocky Linux, Arch Linux, etc. |
| x86_64 (amd64) | ✅ Supported | Native standalone static binary. |
| ARM64 (aarch64) | ✅ Supported | Native standalone static binary for ARM routers and SBCs. |
Download the prebuilt binary corresponding to your router's CPU architecture from GitHub Releases:
pulsegate-x86_64-unknown-linux-muslfor x86_64 soft routers and PCs.pulsegate-aarch64-unknown-linux-muslfor ARM64 routers and devices.
Upload the binary to your router (e.g. /usr/bin/pulsegate) and grant executable permissions:
chmod +x /usr/bin/pulsegateCreate a configuration file at /etc/pulsegate.toml or alongside the binary:
# Network interfaces on the LAN side to protect
lan_interfaces = ["br-lan"]
workers = 4
# Web Management Console
[web]
enabled = true
listen = "0.0.0.0:8088"
allowed_hosts = ["openwrt.lan"]
username = "admin"
password = "pulsegate"
# Encrypted DNS Enforcement (Anti-Bypass & Leak Prevention)
[dns_enforcement]
enabled = true
redirect_port = 53
domains = []
domain_suffixes = []
ips = []
[[dns_enforcement.domain_sources]]
id = "hagezi-doh"
name = "HaGeZi Encrypted DNS Domains"
enabled = true
url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/wildcard/doh-onlydomains.txt"
refresh_hours = 24
min_entries = 1000
# Policy Outbound Routing (GeoIP & SOCKS5 Proxies)
[routing]
enabled = false
geoip_path = "GeoLite2-Country.mmdb"
outbounds = []
[routing.tcp]
default_outbound = "direct"
rules = []
[routing.udp]
default_outbound = "direct"
rules = []
# Custom Allow Rules (Whitelist)
[allow]
domains = ["my-safe-domain.com"]
domain_suffixes = ["internal.lan", "local"]
ips = []
# Custom Block Rules (Blacklist)
[block]
domains = ["ads.example.com"]
domain_suffixes = ["tracker.example.com"]
ips = []
# Remote Threat / Ad-blocking Subscriptions
[[sources.hosts]]
id = "stevenblack"
name = "StevenBlack Unified Hosts"
enabled = true
url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
refresh_hours = 24
min_domains = 50000Check configuration and system capabilities:
pulsegate --config /etc/pulsegate.toml checkStart PulseGate:
pulsegate --config /etc/pulsegate.toml runOpen your browser and navigate to:
http://<your-router-ip>:8088
- Default Username:
admin - Default Password:
pulsegate
(Please change the password in pulsegate.toml for production deployments).
Usage: pulsegate [OPTIONS] [COMMAND]
Commands:
run Run the transparent forwarding filter (default)
check Validate configuration syntax and system capabilities
cleanup Remove leftover rules after an unexpected reboot/shutdown
rules Manage and update downloaded rule subscriptions
help Print this message or the help of the given subcommand(s)
Options:
--config <PATH> Path to the pulsegate.toml configuration file
-h, --help Print help
- Run in background (service):
pulsegate --config /etc/pulsegate.toml run
- Manually trigger rule updates:
pulsegate --config /etc/pulsegate.toml rules update
- Clean up lingering state:
pulsegate cleanup
- Runtime Telemetry: Monitor processed flows, active security rules, wire-speed throughput rates, and system resources in real time.
- Live Decision Stream: Inspect live connection verdicts (
Allowed/Blocked), protocol types (TCP/UDP/TLS/QUIC), client LAN IPs, destination domains, and matching reasons. - Encrypted DNS & Threat Rules: View subscription health, synchronization status, and trigger on-demand syncs.
- Policy Outbound Routing: Manage GeoIP country routing rules, SOCKS5 proxy outbounds, and failover behavior.
- Online Rule Editor: Instantly append domains, wildcard suffixes, or IP subnets to allowlists and blocklists with hot-reload.
