Gateway Quickstart

Deploy AI agent governance in 3 steps. One container, no code changes, no engineering sprint.

For: IT Teams, DevOps, Platform Engineers
Last updated: 2026-02-17

The D3cipher Gateway is a Docker container you deploy in your own infrastructure. Your AI agents talk to it instead of directly to OpenAI, Anthropic, or any other provider. The gateway enforces governance policies — audit trail, kill switch, token budgets, encrypted transcripts — without touching a single line of agent code.

Your prompts and responses never leave your network in plaintext. Only cryptographic stamps and encrypted blobs reach the D3cipher cloud. The server cannot read your content. Only your Account Key can decrypt it.

How It Works
  Your Agent          D3cipher Gateway            AI Provider
  (no changes)        (your network)              (OpenAI, etc.)
      |                     |                          |
      |--- API request ---->|                          |
      |                     |-- stamp (metadata) ----->| D3cipher Cloud
      |                     |-- encrypt body --------->| (can't read it)
      |                     |                          |
      |                     |--- forward request ----->|
      |                     |<-- provider response ----|
      |                     |                          |
      |                     |-- stamp response ------->| D3cipher Cloud
      |                     |-- encrypt response ----->| (can't read it)
      |<-- response --------|                          |
      |                     |                          |
                

Setup

1Get Your Credentials 5 min Compliance / Admin

Sign in at d3cipher.ai/dashboard. Your dashboard gives you two things:

  1. API Key — starts with lsk_admin_... (found in Settings)
  2. Account Key — 64-character hex string (enables encrypted transcript auditing)

Account Key is optional but recommended. Without it, you still get the full audit trail and kill switch. With it, you also get encrypted transcript replay — the ability to read the exact prompts and responses your agents processed, decrypted entirely in your browser. The server never sees your Account Key.

Send IT the API Key and Account Key (if using encrypted transcripts) along with this page.

2Deploy the Gateway 10 min IT / DevOps

Run one container in your infrastructure:

docker run -d --name d3cipher-gateway \
  -e D3CIPHER_API_KEY=lsk_admin_your_key_here \
  -e UPSTREAM_URL=https://api.openai.com \
  -e ACCOUNT_KEY=your_64char_hex_account_key \
  -p 4000:4000 \
  d3cipher/gateway:latest
Variable Description
D3CIPHER_API_KEY required API key from your D3cipher dashboard. Authenticates the gateway with the D3cipher cloud.
UPSTREAM_URL required The AI provider your agents call. Examples: https://api.openai.com, https://api.anthropic.com, https://bedrock-runtime.us-east-1.amazonaws.com
ACCOUNT_KEY optional 64-character hex key for encrypted transcript storage. Enables the Auditor tab in your dashboard. Without it, you still get audit trail + kill switch.
AGENT_ID optional Default agent name when agents don't identify themselves via header. If not set, each agent must send the X-D3cipher-Agent header.
LOCKSTOCK_URL optional Override the D3cipher cloud URL. Only needed for on-premise deployments. Defaults to production.

Verify it's running:

curl http://localhost:4000/healthz
# {"status": "ok", "agents_active": 0, "inflight": 0}

Kubernetes? The gateway exposes /healthz for liveness probes and /metrics for Prometheus scraping. Single replica recommended (agent state is in-memory).

3Point Your Agents at the Gateway 5 min IT / DevOps

Change one environment variable wherever your agents run:

# Before (direct to OpenAI)
OPENAI_BASE_URL=https://api.openai.com

# After (through D3cipher Gateway)
OPENAI_BASE_URL=http://gateway-host:4000

To identify which agent is which in the dashboard, add one HTTP header to each agent's configuration:

X-D3cipher-Agent: customer-support-bot

If all your agents share a single identity (or you only have one agent), set AGENT_ID on the container instead and skip the header.

That's it. No SDK to install. No middleware to inject. No code changes. The agents think they're talking to OpenAI. They're actually talking to a gateway in your own network that enforces your governance policies.

Refresh your dashboard. Agents appear as they make their first call.


What You Can Do From the Dashboard

Kill Switch

Lock any agent instantly from the dashboard. The gateway returns a 429 error to the agent. The request never reaches the AI provider. Unlock when ready.

Token Budgets

Set per-agent spending limits. When an agent exhausts its token budget, the circuit breaker trips automatically. The gateway also clamps max_tokens on each request to prevent a single call from blowing the remaining budget.

Transcript Auditor

If you provided an Account Key, open the Auditor tab in the dashboard. Enter your key. Read the full content of every prompt and response, decrypted entirely in your browser. The D3cipher server stores only ciphertext it cannot read.

Anomaly Detection

Sentinel ML monitors agent request velocity using Welford online statistics. Unusual spikes trigger alerts. The circuit breaker can automatically halt agents that exceed defined thresholds.


What D3cipher Never Sees

Stays in Your Network

Prompts and completions. API keys. Customer data. Request and response bodies. The Account Key. Everything that matters stays behind your firewall.

Sent to D3cipher Cloud

Agent ID. Task type. Timestamp. Token count. Sequence number. Cryptographic hashes. Encrypted blobs (that only your Account Key can decrypt). Governance metadata — not your data.


Deployment Options

Docker Compose

version: "3.8"
services:
  d3cipher-gateway:
    image: d3cipher/gateway:latest
    ports:
      - "4000:4000"
    environment:
      D3CIPHER_API_KEY: "${D3CIPHER_API_KEY}"
      UPSTREAM_URL: "https://api.openai.com"
      ACCOUNT_KEY: "${ACCOUNT_KEY}"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4000/healthz"]
      interval: 30s
      timeout: 5s
      retries: 3

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: d3cipher-gateway
spec:
  replicas: 1
  selector:
    matchLabels:
      app: d3cipher-gateway
  template:
    metadata:
      labels:
        app: d3cipher-gateway
    spec:
      containers:
      - name: gateway
        image: d3cipher/gateway:latest
        ports:
        - containerPort: 4000
        env:
        - name: D3CIPHER_API_KEY
          valueFrom:
            secretKeyRef:
              name: d3cipher-secrets
              key: api-key
        - name: UPSTREAM_URL
          value: "https://api.openai.com"
        - name: ACCOUNT_KEY
          valueFrom:
            secretKeyRef:
              name: d3cipher-secrets
              key: account-key
        livenessProbe:
          httpGet:
            path: /healthz
            port: 4000
          initialDelaySeconds: 5
          periodSeconds: 30
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "512Mi"
            cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
  name: d3cipher-gateway
spec:
  selector:
    app: d3cipher-gateway
  ports:
  - port: 4000
    targetPort: 4000
  type: ClusterIP

Single replica recommended. The gateway maintains per-agent state in memory (DEK cache, budget tracking, connection pools). Multiple replicas would create independent state per pod. Horizontal scaling is on the roadmap.


Endpoints

Path Purpose
/healthz Liveness probe. Returns 200 if gateway is up and D3cipher cloud is reachable, 503 if degraded.
/metrics Prometheus-compatible metrics: request count, rejection count, and latency per agent.
/* Everything else is proxied to UPSTREAM_URL through LockStock governance middleware.

Troubleshooting

Gateway returns 400 "Missing X-D3cipher-Agent header": Either set AGENT_ID on the container for a default, or add the X-D3cipher-Agent header to each agent's HTTP requests.

Gateway returns 429 "Token budget exhausted": The agent's token budget is depleted. Go to the dashboard, increase the budget or click Unlock to reset the counter.

Gateway returns 503 "LockStock stamp rejected": The circuit breaker has tripped (velocity anomaly or manual lock). Check the dashboard for the reason. Click Unlock to restore access.

/healthz returns 503: The gateway can't reach the D3cipher cloud. Check network connectivity and LOCKSTOCK_URL if set.

Agents not appearing in dashboard: Make sure the agents are actually sending requests through the gateway (check OPENAI_BASE_URL points to the gateway, not directly to OpenAI).

Transcripts show "Blob not available": The ACCOUNT_KEY environment variable wasn't set when those requests were processed. Set it and future transcripts will be encrypted and stored.

Advanced: Middleware Installation

The gateway is the recommended deployment for most organizations. If you need to embed governance directly into agent code (e.g., for agents that can't route through a proxy), see the Compliance Quickstart for the per-agent middleware approach.

Next Steps