CMMC gateway in 60 seconds
HoundShield is an OpenAI-compatible proxy. Every AI query from your team passes through it first. CUI, CAGE codes, contract numbers, PHI and secrets are detected and blocked before they reach any provider.
Get your keys
Sign up, then copy your gateway license + admin token from Dashboard → Settings → API Keys.
Point your SDK at HoundShield
Change the baseURL in any OpenAI-compatible client to the gateway. Zero behavior change for your team.
Every query is now CMMC-monitored
CUI, CAGE codes, contract numbers, PHI and secrets are flagged and blocked in <10ms — before anything leaves your perimeter.
Two keys, two scopes
The gateway endpoint uses your normal provider key as a Bearer token — you keep using ChatGPT/Copilot/Claude exactly as before. The management endpoints (audit log, quarantine, policy) require an admin token sent as the x-admin-token header, so no one with mere network reach can release quarantined CUI or weaken your policy.
What gets detected
API reference
/v1/chat/completionsGateway intercept
The main endpoint. OpenAI-compatible chat completions that pass through HoundShield first — every message is scanned for CUI, CAGE codes, contract numbers, PHI/PII and secrets in <10ms before the request reaches the upstream provider. Point any OpenAI-compatible SDK at the gateway and your code is unchanged.
AuthorizationstringrequiredBearer <provider API key> (e.g. your OpenAI key).X-ProviderstringUpstream provider: openai (default), anthropic, openrouter.X-Provider-Api-KeystringOverride the upstream key per request.X-User-IdstringAttribute the event to a user (audit trail).X-Session-IdstringGroup events into a session.curl https://proxy.houndshield.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "X-User-Id: alex@acme-defense.com" \
-d '{
"model": "gpt-4o",
"messages": [
{ "role": "user", "content": "Summarize our CAGE 1ABC2 contract" }
]
}'// When the prompt is CLEAN, you get the normal OpenAI response.
// When a violation is detected, the request is blocked locally:
{
"id": "chatcmpl-hs-9f3c1a",
"object": "chat.completion",
"houndshield": {
"action": "BLOCKED",
"risk_level": "CRITICAL",
"detections": [
{ "engine": "CUI", "pattern": "CAGE code", "nist_control": "SC.L2-3.13.1" }
],
"message": "Blocked before leaving your perimeter. Logged to the audit chain."
}
}/healthHealth check
Liveness probe. No auth — safe for load balancers and uptime monitors.
curl https://proxy.houndshield.com/health
{ "status": "ok", "version": "2.0.0", "source": "houndshield-proxy", "ooda": true }/v1/statsLive stats
Aggregate counters for the gateway — total scanned, blocked, quarantined, and average detection latency.
curl https://proxy.houndshield.com/v1/stats
{ "success": true, "data": { "scanned": 14388, "blocked": 512, "quarantined": 37, "avg_ms": 8 } }/v1/events admin tokenAudit log
The tamper-evident, SHA-256 hash-chained event log — the C3PAO evidence trail. Filter by action or time window and page through with limit/offset.
limitintMax rows (default 100, max 500).offsetintPagination offset.actionstringFilter: BLOCKED | QUARANTINED | ALLOWED.sinceISO 8601Only events at/after this timestamp.curl "https://proxy.houndshield.com/v1/events?action=BLOCKED&limit=50" \ -H "x-admin-token: $HOUNDSHIELD_ADMIN_TOKEN"
{
"success": true,
"data": [
{
"request_id": "9f3c1a…",
"action": "BLOCKED",
"risk_level": "CRITICAL",
"engine": "CUI",
"nist_control": "SC.L2-3.13.1",
"hash": "a3f1…",
"prev_hash": "77c8…",
"ts": "2026-07-18T14:22:33Z"
}
]
}/v1/quarantine admin tokenQuarantine queue
List requests held for human review. Scoped to one org; filter by status.
org_idstringrequiredOrganization to scope to.statusstringpending (default) | released | blocked.limitintMax rows (default 100, max 500).curl "https://proxy.houndshield.com/v1/quarantine?org_id=acme-defense&status=pending" \ -H "x-admin-token: $HOUNDSHIELD_ADMIN_TOKEN"
{ "success": true, "data": [ { "request_id": "9f3c1a…", "risk_level": "HIGH", "engine": "PHI", "ts": "2026-07-18T14:20:01Z" } ] }/v1/quarantine/:requestId admin tokenReview a quarantined request
Release (allow through) or block a held request. The decision and reviewer are written to the audit chain.
statusstringrequiredreleased | blocked (body).reviewed_bystringWho made the call (body).curl -X PUT https://proxy.houndshield.com/v1/quarantine/9f3c1a \
-H "x-admin-token: $HOUNDSHIELD_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "status": "released", "reviewed_by": "alex@acme-defense.com" }'{ "success": true }/v1/policy/:orgId admin tokenUpdate org policy
Read (GET) or update (PUT) an organization's detection policy — which engines are active and how each risk level is handled (block vs quarantine).
curl -X PUT https://proxy.houndshield.com/v1/policy/acme-defense \
-H "x-admin-token: $HOUNDSHIELD_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "engines": { "CUI": "block", "PHI": "block", "PII": "quarantine" } }'{ "success": true, "org_id": "acme-defense" }