Providers

How provider profiles work, and how to wire custom endpoints.

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 /models health 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 prompted

What counts as compatible

  • OpenAI-compatible /chat/completions endpoint
  • 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.