Benchmarks · Scenario library

Latency under load, scenario by scenario

Every request either passes clean, gets blocked on the way in, or gets blocked on the way out — here’s the concurrency sweep for each, with the rule count, payload size, and flow behind every curve.

These are the same measured runs behind the headline numbers on the main benchmarks page, broken out per scenario so you can see exactly what each one is measuring — not just the fastest numbers.

ValGuard delivers sub-10ms p99 latency in realistic multi-agent flows and blocks bad inputs in under 60ms p99 — even at 1 concurrent requests.

Live Metrics: Refreshed on schedule every ~48 hours. Last run: Oct 14, 2026.

Input blocked before the model call

Bad prompts never reach the LLM — and never hit your bill.

A prompt-injection attempt is rejected by the input guard before any upstream request is made. No model call, no token spend, no wasted round trip.

400 Blocked1 input rule · prompt_injection · on_fail: block112 B request bodyInbound guard → rejected pre-upstream (no LLM call)

Output blocked before it reaches you

A broken model response gets caught, not shipped downstream.

Tightest tail under load — p99 stays ~1.37× p50 at 1,000 concurrent

The upstream returns non-JSON text where structured output was required. The output guard rejects the response before it ever reaches your application code.

403 Blocked1 output rule · json_validity · on_fail: block76 B request bodyFull round trip → output guard rejects on the way back

Realistic production path

The default shape: one guarded call to a real HTTP upstream.

Full API round trip against an HTTP upstream (BYOK custom provider) with a JSON response — the same path most agents run in production, end to end.

200 OK1 output rule · json_validity · on_fail: warn77 B request bodyFull HTTP round trip · custom provider upstream, JSON body

Streaming, with zero added tail latency

Guardrails don't break SSE — the stream still just streams.

Same guarded path, but the upstream responds over Server-Sent Events and the full stream is consumed — proving validation overhead doesn't leak into streaming latency.

200 OK1 output rule · json_validity · on_fail: warn98 B request bodySSE stream passthrough · fully consumed

The honest floor: zero network

No upstream call at all — this is pure ValGuard overhead.

Upstream is mocked in-process (no network hop), isolating exactly what the engine costs on its own, with everything else held constant.

200 OK1 output rule · json_validity · on_fail: warn70 B request bodyMock upstream · in-process, no network hop

Multi-agent handoff, end to end

Three agents, three validation gates, still microsecond-scale.

Lowest p99 of any scenario — 8.33 ms at 1 concurrent

A 3-step linear playbook (triage → compliance → reply) with a validation gate at every handoff — the orchestration overhead on top of the validation path.

200 OK3 validation gates across the handoff~16 B user messageOrchestration · 3-step linear handoff (X-VG-Flow)

ValGuard vs typical middleware

ValGuard’s numbers are the measured scenarios on this page. “Typical middleware” is a general reference point for classifier- or LLM-judge-based guardrails and synchronous re-check patterns — not a specific named product.

SignalValGuardTypical middleware†
p99 latency at 1,000 concurrent requests8.33–92.16 ms (measured, path-dependent)Often 200 ms – 1 s+ under equivalent load
Bad input rejected before the model is calledYes — inline guard, no upstream callRarely — usually checked after the model replies
Verdict consistencyDeterministic — same input, same result, every timeOften probabilistic (classifier/LLM-judge drift)
Added cost per request~$0 — no extra model callExtra LLM call or ML inference per request

† Illustrative industry reference points for classifier/LLM-judge-based guardrails, not a specific benchmarked product.

How to read these curves

  • p50 / p95 / p99 track together at low concurrency and fan out once the pool saturates — that fan-out point is the honest capacity limit, not the p50 at concurrency 1.
  • Blocked scenarios (input/output guard) are measured on the rejection path itself — the win isn’t just correctness, it’s that a rejected request never pays for a model call.
  • Mocked upstream scenarios isolate engine + validation cost from network/model latency, so the numbers are reproducible across environments.
Benchmark Scenario Library — Latency Under Load · ValGuard.ai