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. Pin a version tag in production.
$ 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.