Skip to content

docs: document RUNPOD_ALLOW_IP IP allowlisting for Pods and Serverless - #837

Open
itsjdubois wants to merge 3 commits into
mainfrom
docs/runpod-allow-ip
Open

docs: document RUNPOD_ALLOW_IP IP allowlisting for Pods and Serverless#837
itsjdubois wants to merge 3 commits into
mainfrom
docs/runpod-allow-ip

Conversation

@itsjdubois

@itsjdubois itsjdubois commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Documents the RUNPOD_ALLOW_IP environment variable, which restricts inbound access by source IP for Pods (HTTP proxy ports) and Serverless endpoints. The feature has existed in the proxy and ai-api for a long time but was undocumented apart from a one-line table row that has since been removed. Customers are asking support how to do IP allowlisting.

What changed

  • Pods > Expose ports: new "Restrict access by IP address" section under HTTP proxy, a note in the TCP section that the allowlist does not apply there, plus security-considerations and troubleshooting entries.
  • Pods > Environment variables: new "Runpod-reserved variables" table.
  • Serverless > Endpoint settings: new "IP allowlist" section under Advanced settings.
  • Serverless > Environment variables: new "Runpod-reserved variables" table.
  • Serverless > Send API requests: 403 row in the error-handling table.
  • Serverless > Load balancing overview: RUNPOD_ALLOW_IP row in the environment variables table.

Verified behavior (prod, 2026-09-09)

Test Result
Serverless /run and /health, allowlist = non-matching IP 403 ip address not allowed
Serverless /health, allowlist = caller IP 200
Serverless allowlist changed via template PATCH Enforced within ~5s, no worker restart
Serverless allowlist with mixed IP,CIDR 200
Serverless called from a non-listed IP without an API key 403 (IP check runs before auth)
Pod HTTP proxy, allowlist = caller IP 200
Pod HTTP proxy, allowlist = non-matching IP 400, empty body
Pod direct TCP port, allowlist = non-matching IP 200 (allowlist not applied)

Enforcement: proxy/pkg/podproxy/proxy.go (pods, 400) and ai-api/pkg/api/userAuth.go (serverless, 403), both keyed on CF-Connecting-IP.

Notes for reviewer

  • Example IPs use RFC 5737 documentation ranges.
  • RUNPOD_DISABLE_AUTH is parsed alongside RUNPOD_ALLOW_IP in ai-api but is intentionally not documented here; that's a separate product decision.
  • Vale and Mintlify are not installed on my machine, so this has not been linted locally.

Add customer-facing documentation for the RUNPOD_ALLOW_IP environment
variable, which restricts inbound access by source IP for Pods (HTTP
proxy) and Serverless endpoints. Behavior verified in production on
2026-09-09.

- Pods > Expose ports: new "Restrict access by IP address" section,
  TCP bypass note, security and troubleshooting entries.
- Pods > Environment variables: "Runpod-reserved variables" table.
- Serverless > Endpoint settings: new "IP allowlist" section.
- Serverless > Environment variables: "Runpod-reserved variables" table.
- Serverless > Send API requests: 403 row in the error table.
- Serverless > Load balancing overview: RUNPOD_ALLOW_IP env row.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@mintlify

mintlify Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
runpod-docs 🟢 Ready View Preview Sep 10, 2026, 2:57 PM

Fold the RUNPOD_ALLOW_IP TCP caveat into prose and drop the duplicate
note in the TCP section. Four callouts in thirty lines was too noisy.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Expand nothing, contract 'does not', drop passive voice and
parentheticals, and say 'IP address ranges' instead of 'CIDR ranges'
so the new paragraphs introduce zero Vale alerts relative to main.
File-level readability scores were pre-existing and improve slightly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant