01
Anubis
Models client IP, request path, method, and header conditions commonly expressed in policy CEL.
Not nested CEL or bot weightsOffline-ready
A preflight for proxy policy
Replay synthetic requests, forwarded headers, and mock DNS against Anubis, Caddy, and Nginx-compatible rules. See exactly why each request is allowed, challenged, or blocked.
Allow monitor.internal
Challenge unknown client
Block anonymous /admin/*
Browser rehearsal
This fixture runs entirely in your browser. Change the mock DNS answer or a case expectation, then compare all three adapter profiles.
Nothing leaves this tab. Press Ctrl + Enter to run.
Three adapters are waiting at the gate.
Run the fixture to compare decisions.| Case | Adapter | Client | Decision | Check |
|---|
One binary. Zero calls home.
Readable output for review; stable JSON and honest exit codes for scripts.
cargo install --git https://github.com/B-Divyesh/sf-proxy-policy-rehearsal --bin ppr
CASE ADAPTER CLIENT DECISION EXPECTED
monitor-via-proxy anubis 203.0.113.42 allow allow ✓
spoofed-forwarded-ip caddy 198.51.100.9 challenge challenge ✓
anonymous-admin nginx 198.51.100.9 block block ✓
9 passed · 0 failed · 0 unchecked · 9 decisions
Portable on purpose
Rehearse the shared surface operators actually rely on. Unsupported native semantics are named, never approximated silently.
01
Models client IP, request path, method, and header conditions commonly expressed in policy CEL.
Not nested CEL or bot weights02
Models trusted proxy client IP derivation and the portable request matcher subset.
Not handler order or plugins03
Models real_ip trust with geo/map-style request decisions.
Deploy with evidence