Skip to main content
Use this page when a self-hosted Runlayer deployment sits behind an egress firewall, SWG, or URL allowlist. Allowlists for managed devices (laptops, MDM) are separate — see Network & Firewall Requirements (browser soft hosts such as models.dev live there). Unless noted otherwise, allow HTTPS / TCP 443 from the deployment VPC (backend, worker, and related tasks/pods — or ToolGuard EC2 where called out). Replace <region> with the deployment Region (for example us-east-1).
Prefer hostname allowlists. Ubuntu mirrors, NVIDIA package CDNs, Docker Hub, and ECR Public use CDNs or redirects; IP allowlists break easily. For AWS APIs you can use VPC endpoints instead of public internet allowlisting.

Core platform (always)

Required for login, catalog sync, image pull, and connector OAuth from the backend and worker. oauth_broker_url is not WorkOS. WorkOS (SSO/SCIM) always uses api.workos.com + AuthKit. The broker is only for connector OAuth vendor redirects. If you override ecr_repositories to your own private registry, you still need that registry’s host (and may drop public.ecr.aws / ECR Public). CustomerDistribution (088332244652) remains required for any service still using the module’s default private-ECR image URIs.

Catalog URL

Set mcp_catalog_api_url = "https://mcp-catalog.prod.runlayer.com" for production self-hosted. The application code default is https://mcp-catalog.staging.runlayer.com — an empty or omitted Terraform URL falls through to staging and typically returns 401 with a production catalog API key. Catalog auth uses header x-runlayer-api-key (exactly 32 characters); prod and staging keys differ.

Binary package CDN

When runlayer_download_token is set (CLI / AI Watch / extension binary discovery): Empty token disables discovery; no egress needed for this host from the VPC in that case. Managed devices still need downloads.runlayer.com for the browser extension and Terraform provider — see Network & Firewall Requirements.

AuthKit domain

WorkOS assigns a fixed AuthKit host per WorkOS environment (shape: <random-slug>.authkit.app). The slug does not rotate day to day.
  • Stable for a given auth_client_id / WorkOS environment.
  • Different if staging and production use different WorkOS environments (different client IDs) — each gets its own *.authkit.app host (production may instead use a custom AuthKit domain).
  • Same AuthKit host if staging and production share one WorkOS environment and client ID (both redirect URIs registered on that client).
The hostname is not a Terraform input; the backend discovers it from WorkOS. Allow the exact host from firewall logs, or *.authkit.app if your proxy supports wildcards. Login vs agent auth: blocking api.workos.com typically shows a long hang (often ~10s) then redirect to /?error=ApiError&error_url=%2Fapi%2Fv1%2Fusers%2Fme&error_status=401 even though WorkOS may have already authenticated the browser. Blocking AuthKit often surfaces later as Failed to generate authentication token for agent run while interactive login already works.

Agents and Runlayer Assistant

When Agents are enabled (enable_runlayer_agents on ECS, or equivalent on EKS): enable_bedrock_anthropic_models only gates Bedrock Anthropic models for custom agent runs. The managed Runlayer Assistant uses Bedrock regardless of that flag and ignores Settings → AI Providers. Default Assistant model: us.anthropic.claude-opus-4-6-v1. Account-level Anthropic access for a different Claude model does not satisfy this. Module v28.1.x+ auto-submits Anthropic’s use-case form via bedrock_auto_model_access (default true) and attaches the required model-access IAM actions to the task role — for self-managed installs override bedrock_model_access_* before first submit. See troubleshooting.

AgentCore with WAF IP allowlisting

If the public ALB uses WAF IP allowlisting, AgentCore PUBLIC mode cannot reliably call APP_URL (no stable egress IPs to put on the allowlist). Use AgentCore VPC mode with PrivateLink so callbacks stay private:
Same-VPC consumer subnets are fine when they already have NAT/HTTPS egress. Details: ECS + Terraform and Terraform ECS inputs.

ToolGuard (GPU) bootstrap

When enable_runlayer_tool_guard is on, ToolGuard EC2 userdata installs NVIDIA GRID, Docker, the NVIDIA container toolkit, CloudWatch agent, and the ECS agent before the instance registers with the capacity provider. The inference image itself is self-contained after bootstrap; the outbound calls below are for host setup, not model downloads at request time. If those hosts are blocked, ECS reports TaskFailedToStart: EMPTY CAPACITY PROVIDER while ASG instances look healthy — they never join the cluster. Also set runlayer_tool_guard_gpu_resource_value = "ALL" (module default) on g6f.* fractional-GPU instances. Using "1" can fail later with INTEGER_GPU_ON_FRACTIONAL_INSTANCE after capacity registration succeeds. Confirm GPU quota and g6f.large (or your configured type) availability in the AZs used by your private subnets. Optional (GPU smoke test only; userdata continues on failure):

Feature-conditional (backend / worker)

Allow only the features you enable. Connector and MCP upstreams are unbounded — derive hosts from each connector’s URL and OAuth authorization endpoint.

Optional monitoring (Sentry)

Only if Runlayer Sentry / Relay is enabled. Module default Relay upstream is https://o4509836808028160.ingest.us.sentry.io. Allow that exact host (or your DSN’s ingest host), or turn Sentry off / point it at your own org so you do not need Runlayer’s ingest egress. Browser Sentry (frontend_sentry_dsn) is a managed-device egress concern — see Network & Firewall Requirements. To use your own Sentry (or disable Runlayer monitoring egress):
Or leave DSNs empty and set sentry_relay_enabled = false to skip Sentry egress entirely. See Sentry Relay.

AWS VPC endpoints

With enable_vpc_endpoints = true and a module-managed VPC (existing_vpc_id = null), the ECS module creates: It does not currently create STS, Monitoring, ECS, or Bedrock endpoints — allow those on the public internet (or add your own endpoints). Non-AWS hosts (api.workos.com, *.authkit.app, mcp-catalog.prod.runlayer.com, oauth.runlayer.com, public.ecr.aws, Ubuntu, Docker, NVIDIA) still need hostname allowlisting. ECR Public (public.ecr.aws) is not covered by private ECR VPC endpoints.

Symptom → missing egress