OGuardAI
Operations

Service Level Objectives

Availability, latency, throughput, and security SLOs for OGuardAI deployments

Availability

MetricTargetMeasurement
API availability99.9% uptimeHealth endpoint returns 200
Transform endpoint99.9% success rateNon-5xx responses / total requests
Rehydrate endpoint99.95% success rateHigher -- critical path

Latency

These are SLO targets (objectives a deployment aims to meet), not measured results. For indicative measured figures see Performance and Benchmarks. The NER targets are deliberately looser than typical measured NER latency to leave headroom for hardware, model, and payload variation.

Builtin-Only Mode (detector.mode: builtin)

Endpointp50p95p99Max
POST /v1/transformUnder 5msUnder 10msUnder 20msUnder 50ms
POST /v1/rehydrateUnder 0.1msUnder 0.5msUnder 1msUnder 10ms
POST /v1/detectUnder 5msUnder 10msUnder 20msUnder 50ms
GET /v1/healthUnder 1msUnder 1msUnder 2msUnder 5ms

Builtin + NER Mode (detector.mode: both)

Endpointp50p95p99Max
POST /v1/transformUnder 200msUnder 500msUnder 1sBounded by the NER timeout
POST /v1/rehydrateUnder 0.1msUnder 0.5msUnder 1msUnder 10ms
POST /v1/detectUnder 200msUnder 500msUnder 1sBounded by the NER timeout

Throughput

ModeSingle InstanceHorizontal Scaling
Builtin-only>1,000 req/sLinear with instances
Builtin + NER20-50 req/sLimited by NER sidecar

Payload Limits

LimitDefaultConfigurable
Max request body (non-file routes)10 MBserver.max_body_size_bytes
Max file/image upload50 MBfile_upload.max_size_bytes
Max batch items100limits.max_batch_size (lower only; capped at 100)
Max session TTL3600s (1 hour)session.ttl_seconds
Max concurrent streamsUnlimitedOS/runtime limits
SSE heartbeat interval15s (proxy only)Proxy SSE keep-alive; the server stream endpoints send none

Error Budget

Error TypeBudget (per 1000 requests)
5xx errorsUnder 1 (0.1%)
Detection false negativesUnder 50 (5%) for regex, under 100 (10%) for NER
Detection false positivesUnder 30 (3%) for regex, under 150 (15%) for NER
Token repair failuresUnder 10 (1%)
Session expiry (expected)N/A -- by design

Degraded Mode SLO

When NER sidecar is unavailable (mode=both):

MetricGuarantee
AvailabilityNo hard dependency on NER -- the request still succeeds via builtin regex
Latency impactOne NER-timeout wait per request (detector.timeout_secs), then builtin-only
Entity coverageBuiltin types only; person, company, and location unavailable
Data safetyUnaffected -- PII protection maintained

Session Security

PropertyGuarantee
EncryptionAES-256-GCM (AEAD)
Key strength256-bit minimum
Nonce uniquenessRandom 12-byte per seal (cryptographically random)
Tamper detectionAuthentication tag verified on every unseal
Replay protectionEnforced for transform continuations via a per-session-id strict-monotonic counter store (replay_backend: memory default, or redis for HA). Rehydrate and RAG context are exempt by design and remain TTL-bounded bearer tokens. Memory backend has a cold-start window on restart; Redis closes it across replicas. Running redis replay across replicas is a multi-replica deployment, so it also requires revocation_backend: redis, otherwise a value revoked on one replica stays restorable through another and the server refuses to start
Cross-tenant isolationTenant ID validated during unseal

Revocation

PropertyGuarantee
Revocation latencyImmediate (in-memory + file)
Revocation persistenceSurvives server restart (file backend)
Revocation consistencyEventual (file backend)
Future restore suppression100% -- revoked values always return [DELETED]

Monitoring

Required monitoring for SLO compliance:

# Prometheus alerts (see deploy/prometheus/alerting-rules.yml)
- guardai_transforms_total          # request rate
- guardai_errors_total              # error rate
- guardai_transform_duration_seconds # latency
- guardai_rate_limit_rejections_total # capacity
- guardai_prompt_security_triggers_total # security