first commit
This commit is contained in:
176
docs/cli-agents/opencode.mdx
Normal file
176
docs/cli-agents/opencode.mdx
Normal file
@@ -0,0 +1,176 @@
|
||||
---
|
||||
title: "Opencode"
|
||||
description: "Use Opencode with Bifrost to access any AI provider through a terminal-based coding assistant with virtual keys and observability."
|
||||
icon: "codepen"
|
||||
---
|
||||
|
||||
[Opencode](https://github.com/sst/opencode) is an AI-powered coding application that supports OpenAI-compatible APIs. By pointing it at Bifrost, you get access to any provider/model in your Bifrost configuration, plus governance features like virtual keys, built-in observability, and per-model options for reasoning effort, thinking budget, and more.
|
||||
|
||||

|
||||
|
||||
<Note>
|
||||
If your Allowed Headers are already set to `*`, you can skip this note. If not and you face issues integrating Bifrost with OpenCode, try switching to `*` or adding the specific headers required by your client. By default, Bifrost whitelists: `Content-Type`, `Authorization`, `X-Requested-With`, `X-Stainless-Timeout`, and `X-Api-Key`.
|
||||
</Note>
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Configure OpenCode to work with Bifrost
|
||||
|
||||
OpenCode uses a JSON config file (`opencode.json`) to configure providers. Point your provider's `baseURL` to Bifrost.
|
||||
|
||||
### Using OpenAI-compatible endpoint
|
||||
|
||||
Route OpenAI and other providers through Bifrost's OpenAI endpoint:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"name": "Bifrost",
|
||||
"options": {
|
||||
"baseURL": "http://localhost:8080/openai",
|
||||
"apiKey": "your-bifrost-key"
|
||||
},
|
||||
"models": {
|
||||
"openai/gpt-5": {},
|
||||
"anthropic/claude-sonnet-4-5-20250929": {},
|
||||
"gemini/gemini-2.5-pro": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"model": "openai/gpt-5"
|
||||
}
|
||||
```
|
||||
|
||||
### Using Anthropic endpoint
|
||||
|
||||
Route Anthropic models through Bifrost's Anthropic endpoint:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"name": "Bifrost",
|
||||
"options": {
|
||||
"baseURL": "http://localhost:8080/anthropic/v1",
|
||||
"apiKey": "your-bifrost-key"
|
||||
},
|
||||
"models": {
|
||||
"anthropic/claude-sonnet-4-5-20250929": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929"
|
||||
}
|
||||
```
|
||||
|
||||
<Tip>
|
||||
You can also use the `/connect` command in the OpenCode TUI to configure credentials interactively, then update the `baseURL` in your config file.
|
||||
</Tip>
|
||||
|
||||
## Virtual Keys
|
||||
|
||||
When Bifrost has [virtual key authentication](/features/governance/virtual-keys) enabled, set `apiKey` in your provider options to your virtual key:
|
||||
|
||||
```jsonc
|
||||
"options": {
|
||||
"baseURL": "http://localhost:8080/openai",
|
||||
"apiKey": "bf-your-virtual-key-here"
|
||||
}
|
||||
```
|
||||
|
||||
This lets you enforce usage limits, budgets, and access control per user or environment. For team deployments, create a separate virtual key for each team — each key can have its own rate limits, budgets, and provider access rules configured in the Bifrost dashboard.
|
||||
|
||||
## Model Selection
|
||||
|
||||
Set your default models in `opencode.json`:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"model": "openai/gpt-5",
|
||||
"small_model": "anthropic/claude-haiku-4-5"
|
||||
}
|
||||
```
|
||||
|
||||
Switch models in the TUI with <key>ctrl</key>+<key>p</key>
|
||||
|
||||

|
||||
|
||||
- Use powerful models like `openai/gpt-5` or `anthropic/claude-sonnet-4-5-20250929` for complex coding tasks
|
||||
- Use fast models like `groq/llama-3.3-70b-versatile` for quick completions
|
||||
- Set `small_model` to a lighter model for faster, lower-cost operations
|
||||
|
||||
## Using Multiple Providers
|
||||
|
||||
Bifrost routes requests to the correct provider based on the model name. Use the `provider/model-name` format to access any configured provider through the single OpenAI endpoint:
|
||||
|
||||
```
|
||||
anthropic/claude-sonnet-4-5-20250929
|
||||
openai/gpt-5
|
||||
gemini/gemini-2.5-pro
|
||||
mistral/mistral-large-latest
|
||||
```
|
||||
|
||||
You can configure models from different providers with per-model options:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": "opencode",
|
||||
"autoupdate": true,
|
||||
"provider": {
|
||||
"openai": {
|
||||
"name": "Bifrost",
|
||||
"options": {
|
||||
"baseURL": "http://localhost:8080/openai",
|
||||
"apiKey": "your-bifrost-key"
|
||||
},
|
||||
"models": {
|
||||
"openai/gpt-5": {
|
||||
"options": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"include": [
|
||||
"reasoning.encrypted_content"
|
||||
]
|
||||
}
|
||||
},
|
||||
"anthropic/claude-sonnet-4-5-20250929": {
|
||||
"options": {
|
||||
"thinking": {
|
||||
"type": "enabled",
|
||||
"budgetTokens": 16000
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Supported Providers
|
||||
|
||||
Bifrost supports the following providers with the `provider/model-name` format:
|
||||
|
||||
`openai`, `azure`, `gemini`, `vertex`, `bedrock`, `mistral`, `groq`, `cerebras`, `cohere`, `perplexity`, `xai`, `ollama`, `openrouter`, `huggingface`, `nebius`, `parasail`, `replicate`, `vllm`, `sgl`
|
||||
|
||||
<Warning>
|
||||
Non-native models **must support tool use** for OpenCode to work properly. OpenCode relies on tool calling for file operations, terminal commands, and code editing. Models without tool use support will fail on most operations.
|
||||
</Warning>
|
||||
|
||||
<Note>
|
||||
OpenCode connects to Bifrost via a single endpoint. Bifrost handles routing to the correct provider based on the model name — no per-provider configuration needed.
|
||||
</Note>
|
||||
|
||||
## Observability
|
||||
|
||||
All OpenCode traffic through Bifrost is logged. Monitor it at `http://localhost:8080/logs` — filter by provider, model, or search through conversation content to track usage.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Provider Configuration](/quickstart/gateway/provider-configuration) — Configure AI providers in Bifrost
|
||||
- [Virtual Keys](/features/governance/virtual-keys) — Set up usage limits and access control
|
||||
Reference in New Issue
Block a user