Secure Gateway Documentation
Roboflow Secure Gateway is a hardened proxy that sits between your inference servers and Roboflow Cloud. It caches model weights, enforces allow/deny rules, and streams structured audit logs to your SIEM — so your inference servers never need direct internet access.
The gateway runs as a single Docker container configured entirely through environment variables. It is a drop-in replacement for existing Roboflow License Server deployments.
Quick Start
Pull and run the container:
docker run -d \
--name roboflow-secure-gateway \
-p 443:443 \
-e ROBOFLOW_API_KEY=your_api_key \
-e CACHE_DIR=/var/cache/gateway \
-v gateway-cache:/var/cache/gateway \
roboflow/secure-gateway:latest
Point your inference servers at the gateway instead of https://api.roboflow.com:
export ROBOFLOW_API_URL=https://gateway.internal:443
Configuration
All configuration is done through environment variables.
| Variable | Required | Default | Description |
|---|---|---|---|
ROBOFLOW_API_KEY |
Yes | — | Your Roboflow workspace API key |
CACHE_DIR |
No | /var/cache/gateway |
Path for cached model weights |
CACHE_MAX_SIZE_GB |
No | 50 |
Max cache size in GB before LRU eviction |
RULES_FILE |
No | /etc/gateway/rules.yaml |
Path to allow/deny rules YAML file |
SIEM_ENDPOINT |
No | — | URL of your SIEM collector endpoint |
SIEM_PROTOCOL |
No | https |
Protocol: https, syslog-tcp, or syslog-udp |
TLS_CERT |
No | — | Path to TLS certificate file |
TLS_KEY |
No | — | Path to TLS private key file |
LOG_LEVEL |
No | info |
Logging level: debug, info, warn, error |
LISTEN_PORT |
No | 443 |
Port the gateway listens on |
Model Weight Caching
The gateway caches model weights on first download. Subsequent requests from any inference server in your fleet are served from the local cache, eliminating redundant transfers.
Cache eviction uses LRU (least recently used). Set CACHE_MAX_SIZE_GB to control the maximum disk usage. Mount a persistent volume to CACHE_DIR so the cache survives container restarts.
docker run -d \
-e CACHE_DIR=/var/cache/gateway \
-e CACHE_MAX_SIZE_GB=100 \
-v /mnt/fast-storage:/var/cache/gateway \
roboflow/secure-gateway:latest
Allow / Deny Rules
Rules control which models, versions, and API endpoints your inference servers can access through the gateway. Rules are defined in a YAML file.
Example: allow specific models only
mode: deny-all
allow:
- model: "my-workspace/my-model"
versions: ["3", "4"]
- model: "my-workspace/safety-model"
versions: ["*"]
Example: block specific endpoints
mode: allow-all
deny:
- endpoint: "/dataset/*"
- endpoint: "/workspace/keys"
Mount the rules file and set RULES_FILE to point to it. The gateway watches the file for changes and reloads rules without downtime.
SIEM Integration
The gateway streams structured JSON audit logs to your SIEM collector. Every proxied request generates a log entry.
Supported targets
- Splunk HEC (HTTPS)
- Datadog Logs API (HTTPS)
- Microsoft Sentinel (HTTPS)
- Any syslog collector (TCP or UDP)
Log schema
{
"timestamp": "2026-04-14T12:00:00Z",
"source_ip": "10.0.1.42",
"method": "GET",
"path": "/my-workspace/my-model/3",
"action": "allowed",
"rule_matched": "allow:my-workspace/my-model:3",
"cache_hit": true,
"response_code": 200,
"bytes_transferred": 104857600,
"duration_ms": 42
}
Example: Splunk HEC
docker run -d \
-e SIEM_ENDPOINT=https://splunk.example.com:8088/services/collector \
-e SIEM_PROTOCOL=https \
-e SIEM_AUTH_TOKEN=your-hec-token \
roboflow/secure-gateway:latest
TLS Configuration
By default the gateway generates a self-signed certificate on first start. For production, provide your own certificate:
docker run -d \
-e TLS_CERT=/certs/gateway.crt \
-e TLS_KEY=/certs/gateway.key \
-v /path/to/certs:/certs:ro \
roboflow/secure-gateway:latest
The gateway supports TLS 1.2 and 1.3. You can provide a custom CA certificate so that upstream traffic inspection appliances (DPI/IDS) can decrypt and inspect gateway traffic before it leaves your network.
Upgrading from License Server
Secure Gateway is a drop-in replacement for the Roboflow License Server. The upgrade path requires no changes to your inference server configuration.
- Pull the new image:
docker pull roboflow/secure-gateway:latest - Stop the existing License Server container.
- Start Secure Gateway with the same
ROBOFLOW_API_KEYand port mapping. - Add optional configuration for caching, rules, and SIEM as needed.
Your inference servers will continue to connect on the same address and port with no reconfiguration required.
Troubleshooting
Gateway won't start
Verify ROBOFLOW_API_KEY is set. Check logs with docker logs roboflow-secure-gateway. Ensure port 443 is not already bound.
Inference server can't connect
Confirm the inference server's ROBOFLOW_API_URL points to the gateway hostname and port. If using custom TLS certificates, ensure the inference server trusts the gateway's CA.
Cache not working
Verify the CACHE_DIR volume is mounted and writable. Check disk space — the gateway will skip caching if the volume is full.
SIEM logs not arriving
Check that SIEM_ENDPOINT is reachable from the gateway container. Set LOG_LEVEL=debug to see outbound SIEM request details. For Splunk, verify the HEC token has the correct index permissions.
Rules not applied
Confirm RULES_FILE points to a valid YAML file. Check gateway logs for parse errors on startup or reload.