This console is already running on your machine; everything below runs the same engine against your own configs. It reads exports, never touches an SBC, and needs zero outbound network.
Python 3.10+ or Docker / Podman
1 runtime dependency (cryptography)
0 outbound connections required
Validate a real config
sbc-validator validate your-export.ini \
--ruleset rulesets/ms_direct_routing_2026-06.json --out results --html report.html
# any of the five vendors, auto-detected
Predict the call, diagnose a capture, diff an HA pair
sbc-validator simulate your-export.ini # TLS → SIP → SDP → media, where it dies
sbc-validator explain capture.pcap # post-mortem, plain English
sbc-validator diff active.ini standby.ini --fail-on review
Roll up the fleet
sbc-validator fleet sbc-configs/ \
--ruleset rulesets/ms_direct_routing_2026-06.json
# "X of N SBCs ready for the 2026 CA migration" + this console: serve --results results
Gate your pipeline
Drop-in example at examples/ci/sbc-pre-deploy-gate.yml. Non-zero exit blocks the PR before a non-compliant config reaches the change window.
sbc-validator validate config.ini --fail-on review \
--ruleset rulesets/ms_direct_routing_2026-06.json
Air-gapped and offline installs
docker run --rm --network none sbc-validator demo # or rootless podman, identical
# offline pip: pip download . -d wheels/ on a connected box, then
pip install --no-index --find-links wheels/ sbc-autoops-validator
Refresh signed rules (stays offline at validate time)
python -m sbc_validator.tools.fetch_ruleset <api_base> ms_direct_routing -o local.json
# Ed25519 signature verified against the pinned key BEFORE writing a byte