Models and services
Connect a model service, verify a real request, then configure the default model and difficulty-based routing. Endpoint reachability, a listed model, and a successful task are separate results to verify.
Choose a connection method
Open Settings > AI services and choose a service that matches your account or endpoint.
| Method | Prepare | Check |
|---|---|---|
| Provider sign-in or subscription entry | An account supported by that entry and sign-in authorization | Models actually available to the signed-in account |
| API credential | An API key issued by the service | Account ownership, model access, and available quota |
| Custom endpoint | API base URL, credential, and compatible format | Matching protocol and model ID |
| Local agent entry | Installation and authorization for that agent | Complete its detection flow; this is not an arbitrary local model endpoint |
For a local model server that exposes a compatible API, use a custom endpoint. Confirm that the server is running and reachable from the device running EvoX.
A provider can have several connection instances. Give everyday accounts and test endpoints distinct names, and check the instance before editing.
Create your first working connection
- Open the target service or connection instance under AI services.
- Complete sign-in or fill in the dedicated credential field.
- For a custom endpoint, enter the base URL and format as described below, then use “Test and save.”
- Inspect connection status and available models. Refresh an outdated list and resolve discovery errors.
- Return to a conversation and select a model. With multiple accounts, also verify the connection instance.
- Send a short request and confirm a real response.
For example:
Explain in three sentences what project rules, memory, and skills each do.
Then test any additional capabilities your work requires. A successful text reply does not establish that image input, tool calls, or long tasks will work.
Configure a custom endpoint
Enter the address and compatible format
Use the API base URL supplied by the service, rather than its website homepage or a model's display page. Whether the URL includes a path such as /v1 depends on that service's instructions. Do not add or remove paths based on another provider's example.
Choose the protocol under advanced settings:
| Format | When to choose it |
|---|---|
| OpenAI | The service documents an OpenAI-compatible API |
| Claude | The service documents a Claude-compatible API |
| Gemini | The service documents a Gemini-compatible API |
The OpenAI format also lets you choose Responses or Chat Completions. If the endpoint supports only Chat Completions, leave Responses off, even for a newer model. Match the service's protocol, rather than choosing by model name.
Example: suppose a provider supplies https://api.example.com/v1, documents OpenAI Chat Completions compatibility, and identifies a model as example-chat. Enter that base URL and your API key, select OpenAI with Responses off, then test and save before checking the model list. The address and model ID here are illustrative; replace them with the values supplied by your service.
Confirm available models
Inspect the model list after saving. If a custom service does not list a model but its provider confirms the model ID is available, use the manual-add entry and enter that exact ID.
A model ID may differ from its display name. Copy it from service documentation or the provider console. Adding an ID manually makes it selectable; it does not grant account access. Being listed also does not guarantee a successful call.
Set advanced context-window and image-input options to match the service's actual capabilities. Raising a declared limit or enabling image input cannot add unsupported capabilities. Test an image request if needed, and a small, clearly scoped tool task if your work requires tools.
Set a default model
Open Settings > Model strategy and choose a working model for everyday use. The default model supplies the base choice for new sessions. Switching models in a conversation also updates the saved global default, so it is more than a one-time choice for that conversation.
The default model and the routing default tier are different: one selects a specific model and account; the other selects a routing tier.
Messaging channels such as Feishu and WeChat have a separate default-model setting. Check that choice and send a short request through the channel itself. Desktop success alone does not verify channel configuration. If an older version reports an update requirement, address it first.
Assign models by task difficulty
For a single-model setup, start with difficulty-based switching off. Enable it when you need to balance cost, speed, and capability across tasks.
- Verify that each model you plan to assign can answer a real request.
- Enable switching by difficulty and assign models to Economy, Balanced, and High-performance.
- Select the default tier.
- Select a tier for long-conversation summaries; summarization uses the model assigned to that tier.
- Settings save automatically. Check save and configuration errors, then verify in your next new conversation, where routing changes take effect.
| Setting | Choosing a value |
|---|---|
| Economy | Start with a model suited to simple organization and lower-cost requests |
| Balanced | Start with a balanced model for everyday tasks |
| High-performance | Start with a model suited to complex reasoning and difficult tasks |
| Default tier | Used when task difficulty is unclear; it does not fix every request to that tier |
| Summary tier | Choose a model that preserves facts, constraints, and next steps accurately, rather than choosing on price alone |
Tiers do not change provider prices or purchase a higher service level. The default tier, summary tier, and per-tier model controls appear when difficulty-based routing is enabled.
If model assignments are managed by your organization, follow the panel's notice. Another connection cannot be used to bypass those settings.
Configure web search
Open AI services > Web search. The search channel is managed separately from model and MCP connections.
| Channel | Configuration |
|---|---|
| EvoMap | Reuses the EvoMap model credential; no separate search key |
| Tavily | Tavily API key |
| Google API key and search engine ID |
Select a channel, save its credentials, then send a request requiring retrieval, such as:
Search for public sources published in the past week on this topic. Include source links and publication dates.
Verify that retrieval actually occurred and that sources can be checked. A reply containing plausible links alone does not prove a successful search. If the channel is not ready, resolve its credential or connection issue first.
Review usage and costs
Open Usage, choose a time range, and inspect calls. The /cost command in Code also opens it. Configured prices support estimates; those totals do not replace provider bills.
Model APIs, subscription accounts, and search services may bill separately. Check each service's quota and bill rather than treating one estimate as the total cost of all external services.
Troubleshoot connections and models
| Symptom | Check first | Next step |
|---|---|---|
| Authentication failure | Instance, credential, and account access | Update that credential and test again |
| Model not found | Exact model ID, protocol, and account availability | Refresh the list; manually add a custom model when appropriate |
| Models remain listed after a refresh error | Whether the list is the last successful discovery result | Resolve the refresh error before judging availability |
| Test passes but a real request fails | Selected model, account, and task capabilities | Try a minimal text request to separate connection and capability issues |
| Saved but not applied | Service status and application error | Use the retry or service-status entry |
| Timeout or name-resolution failure | Address, network, and proxy | Follow network troubleshooting rather than resetting all settings |
See Network troubleshooting for persistent connection problems and Permissions and approvals for tool authorization.