Providers
How provider profiles work, and how to wire custom endpoints.
v0.20.5source on GitHub
Synapse is provider-agnostic by design. Every inference provider is declared once as a ProviderProfile, and every layer — auth resolution, transport kwargs, model listing, runtime routing — reads from those profiles. Adding a provider is adding a profile, not patching the core.
How it works
- Profiles live as plugins under
plugins/model-providers/<name>/in the repo, or$SYNAPSE_HOME/plugins/model-providers/<name>/for private per-user additions - The registry lazily discovers profiles on first access (
get_provider_profile(),list_providers()) - Doctor adds a
/modelshealth check for each api-key profile - The setup wizard learns each profile's env var automatically
Custom endpoints
Use the bundled custom provider profile to point Synapse at any OpenAI-compatible base URL with your own key. This covers self-hosted gateways, proxies, and internal deployments.
bash
synapse model # pick the 'custom' profile
# then set your base URL + key when promptedWhat counts as compatible
- OpenAI-compatible
/chat/completionsendpoint - Streaming support (SSE) recommended — the TUI streams tokens live
- Tool/function calling support needed for agentic work; without it the agent degrades to chat-only
Per-tool BYOK
Keys are configured per backend, not globally: your browser research tool can use one service while your main model uses another. The gateway is per-backend, not all-or-nothing.