OpenWork is a desktop app built on top of OpenCode. That means custom model providers use the same provider format as OpenCode. The simplest setup is to add a workspace-local opencode.json, then connect the provider from OpenWork's Settings UI.
OpenWork currently reads workspace opencode.json, opencode.jsonc, .opencode/opencode.json, and .opencode/opencode.jsonc. The simplest option is a workspace-root opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"tresor": {
"npm": "@ai-sdk/openai-compatible",
"name": "Tresor",
"options": {
"baseURL": "https://api.tresor.co/v1"
},
"models": {
"global/privatemode/gpt-oss-120b": {
"name": "eu/privatemode/gpt-oss-120b"
},
"global/chutes/kimi-k2.6": { "name": "global/chutes/kimi-k2.6" },
"global/tinfoil/deepseek-v4-pro": {
"name": "global/tinfoil/deepseek-v4-pro"
}
}
}
}
}
If you already have an opencode.json, merge the provider.tresor block into the existing file instead of replacing it.
The model ids must match those returned by GET /v1/models. Run curl https://api.tresor.co/v1/models -H "Authorization: Bearer $TRESOR_API_KEY" to list the current set.
After saving the config, open:
Paste your Tresor API key (starts with tr-). OpenWork stores provider API keys locally through OpenCode.
If Tresor does not appear yet, reopen the workspace or restart OpenWork after saving opencode.json.
Open the chat model picker and choose one of the models exposed by the Tresor provider.
Once selected, OpenWork routes its model calls through the Tresor router and the responses include verifiable receipt ids.