Roboflow Enterprise · Air-gapped & regulated networks
Secure Gateway is a caching HTTP proxy that sits between your inference fleet and Roboflow Cloud. Container images, model weights, RFDM packages, and API calls all flow through one controlled egress point — cached on disk or S3, with every request streamed to your SIEM.
# Public, anonymous pull. There is no :latest — pin a tag.
$ docker run -d --name secure-gateway \
-p 80:80 \
-e CACHE_S3_BUCKET=my-gateway-cache \
-e CACHE_S3_REGION=us-east-1 \
repo.roboflow.com/roboflow-edge/secure-gateway:0.1.0-70
$ curl http://localhost/health
{"status":"healthy"}
$ kubectl create secret generic gateway-s3 \
--from-literal=access-key=AKIA... \
--from-literal=secret-key=...
$ helm install gateway ./secure-gateway/helm \
--set cache.s3.bucket=my-gateway-cache \
--set cache.s3.region=us-east-1 \
--set cache.s3.auth.existingSecret=gateway-s3
NAME: gateway
STATUS: deployed
$ kubectl get pods
gateway-secure-gateway-0 1/1 Running 0 12s
One egress point. Everything else stays on your network.
*.roboflow.cloudContainer images (/v2), model weights (/models), RFDM packages (/rfdm), setup scripts, and the API all proxy through the gateway. The first pull fills the cache; every device after that pulls locally. TTLs are tiered by mutability — content-addressed blobs cache for 7 days, models for an hour.
# Second pull — served from cache
GET /models/yolov8n/3
200 · 104 MB · X-Cache: HIT
{"request_id":"a1f3…",
"client_ip":"10.0.1.42",
"path":"/models/yolov8n/3",
"cache_status":"HIT",
"upstream_domain":"repo.roboflow.com",
"status_code":200,
"duration_ms":38}
Each proxied request produces a structured access record. Ship it three ways — a batched webhook (Splunk HEC, Elastic, Datadog), syslog CEF over UDP/TCP (QRadar, ArcSight), or a rotating JSON file for Fluentd, Filebeat, or Promtail. Enable any combination. Know who pulled what, when, and whether it came from cache.
# Reach a dedicated deployment
GET /proxy?url=https://acme
200 — allowlisted, SSRF-checked
Devices never touch the public internet directly. The gateway is the only thing that does, and its /proxy route enforces HTTPS, a domain allowlist, and SSRF protection that blocks loopback and private addresses. Dedicated *.roboflow.cloud deployments are reachable out of the box; widen the allowlist with EXTRA_PROXY_HOSTS.
# Point a device at the gateway
curl http://gateway/install-client.sh \
| sudo bash -s -- -s gateway.lan
Same role in your network, now with caching and audit on top. The gateway serves its own client installer, which rewires a device's Docker daemon proxy, /etc/hosts, and RFDM config to route through it. Existing License Server deployments migrate without touching inference server code.
Secure Gateway ships with a Roboflow Enterprise license. Talk to us about deploying in your environment, or dive into the manual for Docker, Helm, and turnkey ECS / EKS / GKE examples.