AuthFI Agent

One binary.
Protects everything.

One DaemonSet or systemd service. eBPF kernel enforcement + WireGuard encrypted mesh + HTTP proxy fallback + auto service discovery + infrastructure audit. Deploy once β€” it handles the rest.

How it works

Deploy the agent. It discovers your services, observes traffic, learns your API routes. You create policy. eBPF enforces. Five steps. Zero code changes.

πŸš€ DEPLOY kubectl apply
πŸ›‘οΈ AGENT DaemonSet starts
πŸ” DISCOVER 24 services, 47 pods
πŸ“Š OBSERVE traffic patterns
⚑ ENFORCE eBPF ~45μs
1

Deploy DaemonSet

One DaemonSet. That's it.

$ kubectl apply -f authfi-agent.yaml

βœ“ daemonset.apps/authfi-agent created
βœ“ Running on 2/2 nodes
2

Agent auto-discovers services Service Pod

No config needed. Reads /proc/net/tcp on VMs, watches K8s API on clusters.

βœ“ patient-api:8080Β Β (K8s, ayush-patient-service)
βœ“ admin:3000Β Β Β Β Β Β Β Β (K8s, ayush-admin)
βœ“ postgres:5432Β Β Β Β Β (K8s, ayush-infra)
βœ“ redis:6379Β Β Β Β Β Β Β Β (Docker container)
3

Agent observes live traffic

Learns API routes, request patterns, who accesses what.

Discovered APIs β€” patient-api:8080

GETΒ Β /api/patientsΒ Β Β Β Β Β β†’ 847 hits/dayΒ Β (doctors, nurses)
POST /api/prescriptions β†’ 124 hits/dayΒ Β (doctors only)
DELETE /api/recordsΒ Β Β Β Β β†’ 3 hits/dayΒ Β Β Β (admin only)
4

Create policy

Natural language or manual. Either way, eBPF enforces at kernel level.

NL: "Only doctors can access patient records"

β†’ Translates to:
Β Β GETΒ Β /api/patients/*Β Β Β roles: [doctor]
Β Β POST /api/patients/*Β Β Β roles: [doctor]Β Β MFA: required

β†’ eBPF enforces at kernel level, ~45ΞΌs
5

Protected. Zero code changes.

Your app never sees unauthorized requests. Every decision logged.

~45ΞΌs
enforcement latency
0
code changes
100%
requests audited

What is eBPF? eBPF

eBPF lets you run sandboxed programs inside the Linux kernel. AuthFI uses it to intercept network packets and validate identity before they reach your application β€” at kernel speed, with zero overhead.

How a request flows through the kernel: HTTP Request (with JWT in Authorization header) β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Linux Kernel β”‚ β”‚ β”‚ β”‚ eBPF Program (AuthFI) β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Parse HTTP headers β”‚ ~5ΞΌs β”‚ β”œβ”€β”€ Extract JWT β”‚ ~10ΞΌs β”‚ β”œβ”€β”€ Verify signature (JWKS) β”‚ ~20ΞΌs β”‚ β”œβ”€β”€ Check roles/permissions β”‚ ~5ΞΌs β”‚ β”œβ”€β”€ Check MFA if required β”‚ ~2ΞΌs β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ ALLOW β†’ forward to app β”‚ ~45ΞΌs total β”‚ └── DENY β†’ return 401/403 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό Your Application (untouched) // Your app never sees unauthorized requests. // Zero code changes. Zero latency overhead.

WireGuard Mesh WireGuard

Every agent automatically joins an encrypted mesh network. Peer-to-peer WireGuard tunnels between all your hosts β€” identity-aware, NAT-traversing, no VPN appliance needed.

Encrypted peer-to-peer tunnels

Every agent establishes WireGuard tunnels to every other agent. All inter-service traffic is encrypted end-to-end. No central VPN gateway bottleneck.

node-01 ←──WG──→ node-02
node-01 ←──WG──→ node-03
node-02 ←──WG──→ node-03
// Full mesh. Every link encrypted.

Identity-aware routing

Not just network-level access. The mesh carries identity context β€” AuthFI JWT claims are available at every hop. Policies follow the user, not the IP.

request β†’ mesh tunnel β†’ identity preserved
// roles, groups, MFA status travel with the request

NAT traversal

Works across data centers, cloud regions, and home offices. WireGuard handles NAT punching automatically. No static IPs or port forwarding needed.

No VPN needed

Replace your VPN with identity-aware mesh. Users authenticate with AuthFI β€” the agent handles the encrypted tunnel. No VPN client, no VPN appliance, no split tunneling headaches.

Infrastructure Audit

The agent continuously audits your infrastructure. Detects misconfigurations, security risks, and compliance violations. Produces a security posture score per host.

πŸ“¦

K8s Pod Audit

Detects privileged containers, hostNetwork, hostPID, missing resource limits, containers running as root, missing security contexts.

🐳

Container Audit

Scans Docker containers for exposed ports, privileged mode, root user, missing health checks, outdated base images, mounted sensitive paths.

πŸ–₯️

VM Process Audit

Lists listening processes, open ports, root services, missing network policies. Identifies unexpected listeners and shadow IT services.

Infrastructure Audit β€” node-01 (ah-bm-ctc-01) FINDING SEVERITY STATUS Privileged container: monitoring CRITICAL FAIL Container running as root: jenkins HIGH FAIL No network policy: ayush-patient MEDIUM WARN Open port 6379 (no auth): redis MEDIUM WARN Resource limits set: patient-api LOW PASS Non-root container: admin-panel LOW PASS Security Posture Score: 62/100 (2 critical, 2 warnings)

Architecture

πŸ“‘

Control Plane

AuthFI API manages policies, JWKS keys, and agent configuration. Agents poll for updates using ETags β€” changes propagate in <30 seconds.

πŸ€–

Agent (per host)

Single binary. Discovers services, loads eBPF programs, establishes WireGuard mesh, runs infrastructure audit, syncs policies, reports access decisions. Runs as systemd service or DaemonSet.

⚑

eBPF (in kernel)

Sandboxed program in the kernel's network stack. Validates JWT, checks policies, allows or blocks β€” all before packets reach userspace.

Setup in 3 steps

1

Install the agent

$ curl -sSL https://get.authfi.app/agent | sh

βœ“ Agent installed to /usr/local/bin/authfi-agent
βœ“ Systemd service created

$ AUTHFI_TENANT=acme AUTHFI_AGENT_TOKEN=as_xxx authfi-agent
2

Services auto-discovered

βœ“ Discovered 8 services:

:3000 node admin-panel
:3001 grafana monitoring
:8080 myapi patient-api
:8081 myapi imaging-api
:8082 myapi billing-api
:8888 java jenkins
:5432 postgres database
:6379 redis cache

On Linux: reads /proc/net/tcp. On Kubernetes: watches the K8s API for Services and Pods.

3

Create a policy

Policy: "Patient API Protection" Port: 8080 | Mode: enforce | Default: deny Rules: βœ“ GET /api/patients/* roles: [doctor, nurse] βœ“ POST /api/patients/*/notes roles: [doctor] MFA: required βœ“ GET /health (public β€” no auth) βœ— Everything else DENIED

Granular policy control

Route-level rules

Match HTTP method + path pattern. Protect specific endpoints, not just ports.

GET /api/patients/*  roles: [doctor, nurse]
POST /api/patients/* roles: [doctor]

MFA enforcement per route

Sensitive operations require MFA verification. The JWT must contain mfa_verified: true.

DELETE /api/patients/:id
roles: [admin] require_mfa: true

Group-based access

Require group membership. Combined with roles and permissions for fine-grained control.

POST /api/deploy/*
required_groups: [devops]

Monitor or enforce

Start in monitor mode to observe traffic. Switch to enforce when confident.

mode: monitor→ log only
mode: enforce→ block unauthorized

Monitor first. Enforce when ready.

Monitor Mode

Log all decisions but never block. See who's accessing what before you enforce.

  • β†’ See all traffic patterns
  • β†’ Discover required permissions
  • β†’ Test policies safely
  • β†’ Zero risk of breaking production

Enforce Mode

Block unauthorized requests at the kernel. Returns 401/403 before your app sees the request.

  • β†’ Unauthorized requests never reach your app
  • β†’ MFA enforced per route
  • β†’ Every decision logged with latency
  • β†’ ~45ΞΌs overhead (kernel-level)

Automatic API discovery

The agent observes traffic and discovers API endpoints automatically. Know exactly which routes exist before writing policies.

Discovered APIs β€” patient-api:8080 METHOD PATTERN HITS POLICY GET /api/patients 1,547 βœ“ protected POST /api/patients 234 βœ“ protected GET /api/patients/:id 8,921 βœ“ protected POST /api/patients/:id/notes 456 βœ“ protected (MFA) DELETE /api/patients/:id 12 βœ— no policy GET /health 42,000 public GET /metrics 41,998 βœ— no policy

Real-time access logs

Every access decision is logged with who, what, when, from where, and how fast.

TIMEUSERREQUESTDECISIONLATENCY
10:30:05alice@acme.comGET /api/patients/123allow45ΞΌs
10:30:06alice@acme.comPOST /api/patients/123/notesallow52ΞΌs
10:31:00bob@acme.comDELETE /api/patients/456deny12ΞΌs
10:31:02(no token)GET /api/patientsdeny8ΞΌs
10:31:05charlie@acme.comPOST /api/admin/settingsdeny15ΞΌs

Works everywhere

Linux Linux (eBPF)

Kernel-level interception. ~45ΞΌs latency. Zero overhead. Requires kernel 5.4+.

Ubuntu Debian RHEL Amazon Linux

Kubernetes Kubernetes

DaemonSet deployment. Auto-discovers Services, Pods, Endpoints. Namespace-aware policies.

EKS GKE AKS OKE

Docker HTTP Proxy (fallback)

For non-Linux or older kernels. Reverse proxy mode with JWT validation. Injects user headers.

Docker VMs macOS dev

vs. other approaches

AuthFI AgentIstio IstioEnvoy Envoy SidecarNginx Nginx Auth
Code changesNoneNoneSidecar configAuth module
Latency overhead~45ΞΌs~2ms~1ms~500ΞΌs
Service discoveryAutomaticK8s onlyManualManual
API discoveryAutomaticβ€”β€”β€”
Identity sourceAuthFI JWTmTLS certsJWT/mTLSJWT
Policy managementDashboard + APIYAMLYAMLConfig files
MFA per routeYesβ€”β€”β€”
WireGuard meshBuilt-inβ€”β€”β€”
Infra auditBuilt-inβ€”β€”β€”
Audit trailBuilt-inExternalExternalLog parsing
Non-K8s supportYes (VMs, Docker)NoPartialYes

Available on Pro and above. See pricing β†’

One platform. Every identity layer.
Free to start.

Free for 5,000 users. Upgrade when you're ready.

Start building free β†’

Startups and enterprises get 1 year free β†’