Before you begin
- Access to the Admin UI as an organization admin or server admin
- The provider's approved base URL and, when the upstream requires authentication, an API key
- For a server admin, an organization selected in the Admin UI
Choose the provider family and protocol
A provider is the connection from Orchestris to a model service. Its protocol is the request format that service accepts. Choose the service first, then confirm that its base URL and protocol match the provider's documentation.
Open Integrations → Providers at /providers. A server admin must select an organization before making changes. The Provider choice fills the usual base URL and streaming protocol; review both before saving.
| Provider choice | Default base URL | Streaming protocol | Use it for |
|---|---|---|---|
| OpenAI | https://api.openai.com/v1 | OpenAI Responses | Official OpenAI endpoints. OpenAI Chat Completions is also available when required by the selected model. |
| Anthropic | https://api.anthropic.com/v1 | Anthropic Messages | Claude-native Anthropic Messages endpoints. |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta | Gemini streamGenerateContent | Google Generative Language models. |
| Perplexity | https://api.perplexity.ai | OpenAI Chat Completions | Perplexity Sonar and Deep Research endpoints. |
| OpenAI-compatible (Chat Completions) | Enter the provider's base URL | OpenAI Chat Completions | Compatible services such as Groq, vLLM, Azure OpenAI, or a local service. |
| OpenAI-compatible (Responses) | Enter the provider's base URL | OpenAI Responses | Compatible services that implement the newer Responses protocol. |
- Provider choice
- OpenAI
- Default base URL
- https://api.openai.com/v1
- Streaming protocol
- OpenAI Responses
- Use it for
- Official OpenAI endpoints. OpenAI Chat Completions is also available when required by the selected model.
- Provider choice
- Anthropic
- Default base URL
- https://api.anthropic.com/v1
- Streaming protocol
- Anthropic Messages
- Use it for
- Claude-native Anthropic Messages endpoints.
- Provider choice
- Google Gemini
- Default base URL
- https://generativelanguage.googleapis.com/v1beta
- Streaming protocol
- Gemini streamGenerateContent
- Use it for
- Google Generative Language models.
- Provider choice
- Perplexity
- Default base URL
- https://api.perplexity.ai
- Streaming protocol
- OpenAI Chat Completions
- Use it for
- Perplexity Sonar and Deep Research endpoints.
- Provider choice
- OpenAI-compatible (Chat Completions)
- Default base URL
- Enter the provider's base URL
- Streaming protocol
- OpenAI Chat Completions
- Use it for
- Compatible services such as Groq, vLLM, Azure OpenAI, or a local service.
- Provider choice
- OpenAI-compatible (Responses)
- Default base URL
- Enter the provider's base URL
- Streaming protocol
- OpenAI Responses
- Use it for
- Compatible services that implement the newer Responses protocol.
Add and test a provider
- 1
Open the provider form
At /providers, select Add provider.
- 2
Choose Provider
Select one of the provider choices above. For OpenAI-compatible services, choose the protocol the service actually implements.
- 3
Name the connection
Enter an organization-specific Name that distinguishes this credential and endpoint from other connections.
- 4
Confirm Base URL and Streaming protocol
Keep the preset URL unless the provider requires a documented override. Enter the complete API base for OpenAI-compatible services.
- 5
Enter an API key
Enter a credential intended for this deployment and organization. The Server requires a non-empty API Key before an active provider can be saved and tested. Never place credentials in the provider name or URL.
- 6
Save, then test
Keep Active selected, add the provider, and use Test connection from its details. A connection test is necessary but does not replace model inference verification.
Discover, add, and verify models
- 1
Open Add Models
Open the provider and select its Models tab, then Add Models.
- 2
Try Discover catalog
Select the models that should be enabled and choose Add models. Discovery can be unavailable or incomplete for some upstreams.
- 3
Use Manual entry when needed
Enter the exact model name used by the provider service when discovery does not return it. Review the context length, capabilities, tokenizer, and pricing before treating automatically discovered values as confirmed.
- 4
Verify inference
Use Verify for an enabled model. Confirm a successful response and review the reported token source and provider request details.
- 5
Review accounting fields
If provider usage is absent, confirm the tokenizer assignment before relying on local estimates. Review pricing and capability flags before production use.
Create a stable model alias
Open Integrations → Model Aliases at /model-aliases and select Add alias. Enter a lowercase Alias key, a user-facing Name, and one Base model. Clients can use the alias while an admin intentionally changes its backing model with Retarget.
Grant access and confirm the result
- 1
Open Directory → Groups
At /groups, create or select a group and open Model Access.
- 2
Grant a base model or alias
Enable Has Access for the intended entry, set any Daily Token Quota and Daily Cost Quota ($), then apply the changes.
- 3
Add members
Use the group's Members tab or the user's Groups tab at /users. No group is assigned automatically.
- 4
Confirm as the member
Refresh the Chat model picker. It should contain only models and aliases granted through that member's groups.
- 5
Review use
Use Reports → Usage at /usage after a real request to review token and cost attribution.
For operators: allow a private-network provider
This advanced option is only for a reviewed provider that runs on a private network or the same machine as Orchestris. Provider URLs that resolve to loopback or private network addresses are blocked by default as a server-side request forgery (SSRF) defense.
An operator can enable private-address connections for the whole Server process. Managed-workspace customers must ask their operator to review this requirement.
ORCHESTRIS_SECURITY__ALLOW_PRIVATE_IPS=true