Sign in to the console.
First run? If no users exist, the first sign-in bootstraps an admin.
central manager · firewall + reverse-proxy WAF + streams + DNS
These bans are delivered to every agent on check-in and enforced in each agent's nftables. Removing one un-blocks it fleet-wide on the next check-in.
| IP / CIDR | Reason | Expires | Added |
|---|
| User | Role | Status | Security |
|---|
Roles: viewer reads · operator pushes blocks/config · admin manages users & settings. You cannot delete yourself or the last enabled admin.
Must match the console's public domain exactly for passkeys to work.
| Session | Started |
|---|
Agent-wide WAF. These regex rules and auto-block thresholds apply to every request this host proxies. For rules scoped to a single site (host-routed overlays), use the Domains & App-WAF sub-tab.
This is where an agent becomes a real reverse proxy. Each row maps one host (the Host: header a browser sends, e.g. app.example.com) to the upstream it should be proxied to (e.g. http://10.0.0.5:8000). One WAF listener can front many sites this way — the host header picks the backend, exactly like nginx server blocks or Pangolin resources.
The same host also selects an optional app-WAF overlay: extra rules that run in addition to the global ruleset, only for that site (different apps have different L7 weak spots). Clean requests are forwarded to that host's upstream; malicious ones get a 403 and can trip the firewall. A host with no upstream falls back to the agent's default [waf].upstream.
Point the public DNS record for each host at the agent's edge IP (see the guide → DNS setup). Agent-discovered domains appear here automatically; add, route, and protect more below. Non-HTTP services (mail, databases) are routed on the Streams tab.
| Host | App label | Upstream (backend) | Notes | App-WAF rules |
|---|
Not everything is HTTP. The stream proxy forwards raw TCP/UDP ports to a backend, so an agent protects mail (SMTP 25/587, SMTPS 465, IMAP 143, IMAPS 993, POP3 110/995), databases, or game servers the same way the WAF protects web apps. Banned source IPs are dropped at L3 by nftables before they reach the listener; a per-IP connection-rate limit bans floods on top of that.
These routes are hub-managed per agent and applied live — the selected agent rebinds its listeners on its next check-in, no restart. For TLS services many names share one port via SNI passthrough (add a server_name); the proxy peeks the ClientHello (never terminating TLS) and dials the matching backend.
| Name | Proto | Listen (ip:port) | Upstream (host:port) | SNI → upstream | Max conns/min |
|---|
Bind failures (privileged port, port in use) are logged by the agent and skip that route only. Ports < 1024 need the agent to run as root / with CAP_NET_BIND_SERVICE.
| Time | Actor | Action | Target | Detail |
|---|