Supported AI providers and multiple provider profiles
One assistant, several AI backends. SideNote Pro stores as many local provider profiles as you want, each with its own base URL, key, model and reasoning setting, and lets you switch between them without reconfiguring anything.
Four starting points
Adding a profile in Settings, AI providers starts from a preset. Each preset fills in the base URL that the service normally listens on, so in most cases you only add a key or pick a model.
| Preset | Base URL | API key | Typical use |
|---|---|---|---|
| OpenAI | https://api.openai.com/v1 | Required | Hosted models, no local hardware needed |
| Ollama | http://localhost:11434/v1 | Usually not needed | Local models on your own machine |
| LM Studio | http://localhost:1234/v1 | Usually not needed | Local models with a graphical model manager |
| Custom OpenAI-compatible | You supply it | Depends on the service | Other hosted services, gateways, self-hosted servers |
A preset is a starting point, not a lock. Every field stays editable afterwards, including the base URL, so a preset can be repointed at a different host or port whenever your setup changes.
Managing several profiles at once
Settings uses a list and detail layout for profiles. You can add, rename, duplicate, edit, delete, and mark one profile as the default used by new conversations.
The composer shows a compact picker naming which profile and model will receive your next request, so you always know where a message is about to go before you press Send. On narrow windows long provider and model names are trimmed rather than allowed to push the toolbar out of shape.
A practical arrangement is one hosted profile for capable reasoning, one hosted profile on a small fast model for everyday rewriting, and one local profile for anything you would rather not send off the machine. Duplicating a profile and changing only the model is the quickest way to build that set.
Connection testing and model discovery
Each profile has a connection test. It calls GET {BaseUrl}/models and reports back, which catches the ordinary setup mistakes: a base URL missing its version segment, a rejected key, a local server that is not running.
When that call returns a model list, the IDs populate a searchable picker so you can choose a model instead of typing one. Not every compatible endpoint implements the models route, so manual model entry always stays available. A profile with a hand-typed model ID works exactly like a discovered one.
Settings that belong to the profile, not the app
- Credentials. Each profile has its own DPAPI-protected credential file. Keys are never shared between profiles.
- Model. Discovered from the endpoint or entered by hand.
- Reasoning effort. Off by default for compatibility. See model and reasoning controls.
- Model pricing. Optional input and output prices in USD per million tokens, feeding the local estimates described in usage and cost tracking.
What compatible means, and what it does not promise
SideNote Pro's response parser is deliberately tolerant. It accepts the several string, object and content-array shapes that compatible providers return, reads delta.content, message.content or text, and terminates on the [DONE] record. Provider errors are translated into readable messages for rejected credentials, rate limits, invalid requests, timeouts and unreachable endpoints. Transient failures, HTTP 429 and 5xx responses are retried up to three attempts with short delays, under a two-minute request timeout.
Compatibility is a spectrum. An endpoint can implement chat/completions faithfully and still not support image input, ignore reasoning_effort, omit usage metadata, or lack a models route. None of those break SideNote Pro, but they do change which of its features are available on that profile.