Proactive defense for Kubernetes that protects production.
Phorvex continuously decides which workload to move, when, and how. It evicts footholds before any alert fires, and never at the cost of a stateful workload.
Why current defenses lose this fight.
Detection cannot see a zero-day
Detection-first tools cannot stop an exploit they have never seen. A quiet attacker emits no alert, so reactive tooling never acts.
/02Clocks are too slow and too predictable
Clock-based rotation loses to a fast attacker, and an adaptive one learns the schedule. The rhythm itself becomes intelligence.
/03Naive rotation destroys state
Rotating a pod by deleting it kills the stateful workload. The cure becomes the outage.
Decisions, not schedules.
Reads the live cluster every tick
Workloads, network reachability, identity and RBAC blast radius, disruption budgets, image and placement scarcity. No hardcoded assumptions.
Values every possible move
By the attacker reconnaissance it would erase, against the disruption it would cost, and the kill-chain stage it would preempt.
Selects the optimal set
Under a hard availability and SLO budget. Provably optimal, and decoy-resistant.
Acts safely
Through your existing policy controller, unmodified, or a native actuator. Global kill-switch, per-namespace dry-run, full decision audit trail.
Never destroys state
The feasibility model refuses a destructive rotation on a stateful workload and quarantines instead. The attacker is disrupted. The job survives.
The benchmark.
Zero-day scenarios that emit no alert, against a blind rotation timer and a reactive-only baseline. Time to evict the attacker, in seconds. Shorter is better.
| Phorvex | Blind timer | Reactive only | |
|---|---|---|---|
| Eviction dwell on a zero-day | ~5.5s | ~15.2s | ~20.3s, never acts |
| Prevention on a zero-day | 100% | partial | 0% |
| Stateful work preserved | 20 / 20 | 0 / 20 | 0 / 20 |
| Learnable by an adaptive attacker | No | Yes | n/a |
| False positives | 0 | 0 | 0 |
Real Kubernetes cluster, n=20, reproducible, controls clean.
Deploy it where it counts.
Full benchmark methodology under NDA, then a design-partner deployment on your cluster. Dry-run first, always.