Use this reference when you need the exact Portal fields or local endpoint strings for org-level AI integrations.
AI Gateway gives boxes fixed local base URLs for org-level provider slots. The slot belongs to the org, not to one box.
Configure provider slots in Portal
Only org owners can manage provider slots.
In Portal:
- If you are on
My Orgs, clickSettingson the target org. - If you are already inside that org workspace, use the left sidebar
Org Settings. - Open
AI Integrations. - Edit the provider card you need.
V1 exposes these slots:
- OpenAI
- Anthropic / Claude Code
Each provider card lets you manage:
EnabledUpstream API KeyCustom Endpoint
The card also shows the provider’s Local Base URL.
Copy that URL into clients inside the box. All boxes in the same org reuse the same local endpoint for that provider slot.
Local endpoints
OpenAI-compatible:
http://10.0.2.2:1000/run9/ai/openai/v1/
Anthropic Messages-compatible:
http://10.0.2.2:1000/run9/ai/anthropic
Client credentials inside the box
Client-side keys or tokens are just placeholders here. Keep the real upstream secret in Portal, not in the box.
The literal run9-placeholder below is only an example placeholder. It is not a secret you copy from Portal.
Typical examples:
export OPENAI_API_KEY=run9-placeholder
export ANTHROPIC_AUTH_TOKEN=run9-placeholder
The placeholder only satisfies clients that insist on an auth header. Portal still holds the real upstream secret.
run9 does not inject these client-side settings into new shells for you. Set the local base URL and placeholder credential in the shell where you launch the tool, or save them in the shell profile or start script you actually use.
First checks when a client fails
Check these before you debug SDK code:
- the provider slot is still
Enabled - the client still uses that slot’s
Local Base URL - the client still sends a placeholder credential, because some SDKs reject an empty auth header before the gateway sees the request
Behavior
AI Gateway is a thin HTTP relay.
- Streaming works.
- Upstream
4xx,5xx, and429responses pass through as directly as possible. - If a provider is disabled or missing, the request fails clearly.
- V1 does not translate schemas between providers.