OpenCode on AI models run in Europe
Declare Evanesca as an OpenAI-compatible provider in opencode.json and code from the terminal with open models run in Europe. A provider entry in opencode.json (at the project root or in ~/.config/opencode/), built on the @ai-sdk/openai-compatible package.
SoonOpening soon: what follows describes the service as it will work.
- Tool
OpenCode · Coding agent
- API format
- OpenAI-compatible (Chat Completions)
- Base URL
https://evanesca.app/api/v1- Your prompts
- From your machine or server, straight to Evanesca
Setup
1. Add Evanesca as a provider
OpenCode's own catalogue knows nothing about a custom provider's models, so give each one its context and output limits: OpenCode uses them to track how much room is left. Name a small_model as well, or titles may be written by your main model. The output limit is a ceiling you choose.
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled",
"provider": {
"evanesca": {
"npm": "@ai-sdk/openai-compatible",
"name": "Evanesca",
"options": {
"baseURL": "https://evanesca.app/api/v1",
"apiKey": "{env:EVANESCA_API_KEY}"
},
"models": {
"deepseek-v4.1-flash": { "name": "DeepSeek V4.1 Flash", "limit": { "context": 1000000, "output": 16384 } },
"gemma-4-26b": { "name": "Gemma 4 26B", "limit": { "context": 256000, "output": 16384 } }
}
}
},
"model": "evanesca/deepseek-v4.1-flash",
"small_model": "evanesca/gemma-4-26b"
}2. Provide the key, pick the model
Export EVANESCA_API_KEY, or run /connect, choose Other and type the provider ID exactly as in the file (evanesca). /models then lists evanesca/deepseek-v4.1-flash and the other models you declared.
export EVANESCA_API_KEY="<your Evanesca key>"
opencodeWhere these settings come from
These settings come from OpenCode's official documentation, read on 12 Oct 2026. This guide has not been run against Evanesca yet: it will be checked when the API opens.
Which model to pick
Evanesca's models from which a real tool call came back at their operator. This guide uses DeepSeek V4.1 Flash and Gemma 4 26B, picked from the catalogue for their properties. Prices per million tokens, input / output, margin and VAT included.
| Model ID | Operator and place | Context | Reasoning | Price |
|---|---|---|---|---|
mistral-large-4 | EU region of Mistral AI | 512k | — | €2.5133 / €7.7246 |
deepseek-v4.1-flash | Germany (AKI.IO) | 1M | Yes | €1.008 / €3.024 |
glm-5.3 | Germany (AKI.IO) | 512k | Yes | €3.024 / €9.24 |
qwen3.8-27b | Scaleway — Paris, France | 256k | Yes | €1.008 / €5.544 |
deepseek-v4-flash | Scaleway — Paris, France | 256k | Yes | €0.672 / €1.344 |
apertus-v1.5-70b | Switzerland (Infomaniak) | 100k | — | €1.2936 / €4.62 |
glm-5.2 | Scaleway — Paris, France | 256k | Yes | €3.024 / €9.24 |
qwen3.6-35b | Scaleway — Paris, France | 256k | Yes | €0.42 / €2.52 |
gemma-4-26b | Germany (AKI.IO) | 256k | — | €0.168 / €0.84 |
mistral-small-4-119b | EU region of Mistral AI | 256k | — | €0.2772 / €1.1088 |
qwen3.5-397b | Scaleway — Paris, France | 250k | Yes | €1.008 / €6.048 |
gpt-oss-120b | Scaleway — Paris, France | — | Yes | €0.252 / €1.008 |
qwen3-coder-30b | Scaleway — Paris, France | 256k | — | €0.336 / €1.344 |
qwen3-235b | Scaleway — Paris, France | 250k | — | €1.26 / €3.78 |
mistral-small-3.2 | Scaleway — Paris, France | — | — | €0.252 / €0.588 |
llama-3.3-70b | Scaleway — Paris, France | — | — | €1.512 / €1.512 |
pixtral-12b | Scaleway — Paris, France | 128k | — | €0.336 / €0.336 |
Reasoning tokens are billed as output. Where each model runs and what its operator keeps: Models and Europe.
Good to know
- OpenCode edits files and runs commands through tool calls: declare only models whose tool calling is measured.
- A reasoning model is declared with "reasoning": true and "interleaved": { "field": "reasoning_content" }.
- Use @ai-sdk/openai-compatible, not @ai-sdk/openai: the second targets providers that serve OpenAI's Responses API, which Evanesca does not.
Where your prompts go
The local OpenCode process calls the base URL. One documented exception: /share uploads the conversation to OpenCode's servers and publishes a link — the sample turns it off with "share": "disabled".
On Evanesca's side, the model runs at a European operator, named with its place in the x-evanesca-operator and x-evanesca-location headers of every response, and Evanesca keeps no copy of prompts or answers — only the billing data of each call. What each operator keeps is set out in Models and Europe; the host of Evanesca's servers is named in the legal notice.
Sources
Official documentation, read on 12 Oct 2026:
Frequently asked questions
Does OpenCode work with Evanesca?
Yes, through its base URL setting: A provider entry in opencode.json (at the project root or in ~/.config/opencode/), built on the @ai-sdk/openai-compatible package. These settings come from OpenCode's official documentation, read on 12 Oct 2026. This guide has not been run against Evanesca yet: it will be checked when the API opens.
Which Evanesca model should I use with OpenCode?
One whose tool calling is measured. This guide uses DeepSeek V4.1 Flash and Gemma 4 26B; the 17 candidates are in this page's table, with their context window and price.
Do my prompts stay in Europe with OpenCode?
The local OpenCode process calls the base URL. One documented exception: /share uploads the conversation to OpenCode's servers and publishes a link — the sample turns it off with "share": "disabled". On Evanesca's side, the model runs at a European operator, named with its place in the x-evanesca-operator and x-evanesca-location headers of every response, and Evanesca keeps no copy of prompts or answers — only the billing data of each call. What each operator keeps is set out in Models and Europe; the host of Evanesca's servers is named in the legal notice.
One key, and the tool runs on models in Europe.
Prepaid credit, no subscription: the same key works with every guide.