2025-07-29 19:49:12 +02:00
# Archived: Project has Moved
This repository is no longer maintained.
The project has continued under the name [Crush][crush], developed by the original author and the Charm team.
To reduce confusion and ensure the community follows the active project, this repo will be removed in the near term.
Please follow [Crush][crush] for ongoing development.
[crush]: https://github.com/charmbracelet/crush
2025-06-22 15:52:23 +02:00
2025-04-23 12:08:45 +02:00
# ⌬ OpenCode
2025-03-25 13:04:36 +01:00
2025-05-15 16:30:10 -04:00
< p align = "center" > < img src = "https://github.com/user-attachments/assets/9ae61ef6-70e5-4876-bc45-5bcb4e52c714" width = "800" > < / p >
2025-04-07 15:37:47 +02:00
> **⚠️ Early Development Notice:** This project is in early development and is not yet ready for production use. Features may change, break, or be incomplete. Use at your own risk.
2025-03-27 22:35:48 +01:00
A powerful terminal-based AI assistant for developers, providing intelligent coding assistance directly in your terminal.
2025-03-25 13:04:36 +01:00
2025-03-27 22:35:48 +01:00
## Overview
2025-03-25 13:04:36 +01:00
2025-04-16 20:06:23 +02:00
OpenCode is a Go-based CLI application that brings AI assistance to your terminal. It provides a TUI (Terminal User Interface) for interacting with various AI models to help with coding tasks, debugging, and more.
2025-03-25 13:04:36 +01:00
2025-06-04 15:08:50 +02:00
< p > For a quick video overview, check out
< a href = "https://www.youtube.com/watch?v=P8luPmEa1QI" > < img width = "25" src = "https://upload.wikimedia.org/wikipedia/commons/0/09/YouTube_full-color_icon_%282017%29.svg" > OpenCode + Gemini 2.5 Pro: BYE Claude Code! I'm SWITCHING To the FASTEST AI Coder!< / a > < / p >
< a href = "https://www.youtube.com/watch?v=P8luPmEa1QI" > < img width = "550" src = "https://i3.ytimg.com/vi/P8luPmEa1QI/maxresdefault.jpg" > < / a > < p >
2025-03-27 22:35:48 +01:00
## Features
- **Interactive TUI**: Built with [Bubble Tea ](https://github.com/charmbracelet/bubbletea ) for a smooth terminal experience
2025-04-29 12:56:49 +01:00
- **Multiple AI Providers**: Support for OpenAI, Anthropic Claude, Google Gemini, AWS Bedrock, Groq, Azure OpenAI, and OpenRouter
2025-03-27 22:35:48 +01:00
- **Session Management**: Save and manage multiple conversation sessions
- **Tool Integration**: AI can execute commands, search files, and modify code
2025-04-18 20:17:38 +02:00
- **Vim-like Editor**: Integrated editor with text input capabilities
2025-03-27 22:35:48 +01:00
- **Persistent Storage**: SQLite database for storing conversations and sessions
2025-04-18 20:17:38 +02:00
- **LSP Integration**: Language Server Protocol support for code intelligence
- **File Change Tracking**: Track and visualize file changes during sessions
2025-04-21 16:22:52 +02:00
- **External Editor Support**: Open your preferred editor for composing messages
2025-05-15 16:52:24 +03:00
- **Named Arguments for Custom Commands**: Create powerful custom commands with multiple named placeholders
2025-03-27 22:35:48 +01:00
## Installation
2025-04-24 16:34:57 -04:00
### Using the Install Script
```bash
# Install the latest version
2025-05-14 22:59:28 +02:00
curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | bash
2025-04-24 16:34:57 -04:00
# Install a specific version
2025-05-14 22:59:28 +02:00
curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | VERSION=0.1.0 bash
2025-04-24 16:34:57 -04:00
```
### Using Homebrew (macOS and Linux)
```bash
brew install opencode-ai/tap/opencode
```
2025-05-14 23:21:30 +02:00
### Using AUR (Arch Linux)
```bash
# Using yay
yay -S opencode-ai-bin
# Using paru
paru -S opencode-ai-bin
```
2025-04-24 16:34:57 -04:00
### Using Go
2025-03-27 22:35:48 +01:00
```bash
2025-04-24 18:25:52 +02:00
go install github.com/opencode-ai/opencode@latest
2025-03-27 22:35:48 +01:00
```
## Configuration
2025-04-16 20:06:23 +02:00
OpenCode looks for configuration in the following locations:
2025-03-27 22:35:48 +01:00
2025-04-16 20:06:23 +02:00
- `$HOME/.opencode.json`
- `$XDG_CONFIG_HOME/opencode/.opencode.json`
- `./.opencode.json` (local directory)
2025-03-27 22:35:48 +01:00
2025-05-09 19:30:57 +02:00
### Auto Compact Feature
OpenCode includes an auto compact feature that automatically summarizes your conversation when it approaches the model's context window limit. When enabled (default setting), this feature:
- Monitors token usage during your conversation
- Automatically triggers summarization when usage reaches 95% of the model's context window
- Creates a new session with the summary, allowing you to continue your work without losing context
- Helps prevent "out of context" errors that can occur with long conversations
You can enable or disable this feature in your configuration file:
```json
{
"autoCompact": true // default is true
}
```
2025-04-18 20:17:38 +02:00
### Environment Variables
You can configure OpenCode using environment variables:
2025-06-25 15:23:40 -04:00
| Environment Variable | Purpose |
| -------------------------- | -------------------------------------------------------------------------------- |
| `ANTHROPIC_API_KEY` | For Claude models |
| `OPENAI_API_KEY` | For OpenAI models |
| `GEMINI_API_KEY` | For Google Gemini models |
| `GITHUB_TOKEN` | For Github Copilot models (see [Using Github Copilot ](#using-github-copilot )) |
| `VERTEXAI_PROJECT` | For Google Cloud VertexAI (Gemini) |
| `VERTEXAI_LOCATION` | For Google Cloud VertexAI (Gemini) |
| `GROQ_API_KEY` | For Groq models |
| `AWS_ACCESS_KEY_ID` | For AWS Bedrock (Claude) |
| `AWS_SECRET_ACCESS_KEY` | For AWS Bedrock (Claude) |
| `AWS_REGION` | For AWS Bedrock (Claude) |
| `AZURE_OPENAI_ENDPOINT` | For Azure OpenAI models |
| `AZURE_OPENAI_API_KEY` | For Azure OpenAI models (optional when using Entra ID) |
| `AZURE_OPENAI_API_VERSION` | For Azure OpenAI models |
| `LOCAL_ENDPOINT` | For self-hosted models |
| `SHELL` | Default shell to use (if not specified in config) |
2025-05-15 16:53:47 +03:00
### Shell Configuration
OpenCode allows you to configure the shell used by the bash tool. By default, it uses the shell specified in the `SHELL` environment variable, or falls back to `/bin/bash` if not set.
You can override this in your configuration file:
```json
{
"shell": {
"path": "/bin/zsh",
"args": ["-l"]
}
}
```
This is useful if you want to use a different shell than your default system shell, or if you need to pass specific arguments to the shell.
2025-04-28 10:42:57 -03:00
2025-04-18 20:17:38 +02:00
### Configuration File Structure
```json
{
"data": {
"directory": ".opencode"
},
"providers": {
"openai": {
"apiKey": "your-api-key",
"disabled": false
},
"anthropic": {
"apiKey": "your-api-key",
"disabled": false
2025-04-24 22:48:48 -07:00
},
2025-06-25 15:23:40 -04:00
"copilot": {
"disabled": false
},
2025-04-24 22:48:48 -07:00
"groq": {
2025-04-29 12:56:49 +01:00
"apiKey": "your-api-key",
"disabled": false
},
"openrouter": {
"apiKey": "your-api-key",
"disabled": false
2025-04-18 20:17:38 +02:00
}
},
"agents": {
"coder": {
"model": "claude-3.7-sonnet",
"maxTokens": 5000
},
"task": {
"model": "claude-3.7-sonnet",
"maxTokens": 5000
},
"title": {
"model": "claude-3.7-sonnet",
"maxTokens": 80
}
},
2025-05-15 16:53:47 +03:00
"shell": {
"path": "/bin/bash",
"args": ["-l"]
},
2025-04-18 20:17:38 +02:00
"mcpServers": {
"example": {
"type": "stdio",
"command": "path/to/mcp-server",
"env": [],
"args": []
}
},
"lsp": {
"go": {
"disabled": false,
"command": "gopls"
}
},
"debug": false,
2025-05-09 19:30:57 +02:00
"debugLSP": false,
"autoCompact": true
2025-04-18 20:17:38 +02:00
}
```
2025-03-27 22:35:48 +01:00
2025-04-18 20:17:38 +02:00
## Supported AI Models
2025-04-21 16:22:52 +02:00
OpenCode supports a variety of AI models from different providers:
### OpenAI
2025-04-21 19:48:36 +02:00
2025-04-21 16:22:52 +02:00
- GPT-4.1 family (gpt-4.1, gpt-4.1-mini, gpt-4.1-nano)
- GPT-4.5 Preview
- GPT-4o family (gpt-4o, gpt-4o-mini)
- O1 family (o1, o1-pro, o1-mini)
- O3 family (o3, o3-mini)
- O4 Mini
### Anthropic
2025-04-21 19:48:36 +02:00
2025-06-05 10:46:14 -07:00
- Claude 4 Sonnet
- Claude 4 Opus
2025-04-21 16:22:52 +02:00
- Claude 3.5 Sonnet
- Claude 3.5 Haiku
- Claude 3.7 Sonnet
- Claude 3 Haiku
- Claude 3 Opus
2025-06-25 15:23:40 -04:00
### GitHub Copilot
- GPT-3.5 Turbo
- GPT-4
- GPT-4o
- GPT-4o Mini
- GPT-4.1
- Claude 3.5 Sonnet
- Claude 3.7 Sonnet
- Claude 3.7 Sonnet Thinking
- Claude Sonnet 4
- O1
- O3 Mini
- O4 Mini
- Gemini 2.0 Flash
- Gemini 2.5 Pro
2025-04-21 16:22:52 +02:00
### Google
2025-04-21 19:48:36 +02:00
2025-04-21 16:22:52 +02:00
- Gemini 2.5
- Gemini 2.5 Flash
- Gemini 2.0 Flash
- Gemini 2.0 Flash Lite
### AWS Bedrock
2025-04-21 19:48:36 +02:00
2025-04-21 16:22:52 +02:00
- Claude 3.7 Sonnet
2025-03-27 22:35:48 +01:00
2025-04-24 22:48:48 -07:00
### Groq
2025-04-28 12:25:06 -05:00
- Llama 4 Maverick (17b-128e-instruct)
2025-04-24 22:48:48 -07:00
- Llama 4 Scout (17b-16e-instruct)
- QWEN QWQ-32b
- Deepseek R1 distill Llama 70b
- Llama 3.3 70b Versatile
2025-04-28 10:42:57 -03:00
### Azure OpenAI
- GPT-4.1 family (gpt-4.1, gpt-4.1-mini, gpt-4.1-nano)
- GPT-4.5 Preview
- GPT-4o family (gpt-4o, gpt-4o-mini)
- O1 family (o1, o1-mini)
- O3 family (o3, o3-mini)
- O4 Mini
2025-05-16 03:25:21 +09:00
### Google Cloud VertexAI
- Gemini 2.5
- Gemini 2.5 Flash
2025-04-30 12:42:41 +03:00
2025-03-27 22:35:48 +01:00
## Usage
```bash
2025-04-16 20:06:23 +02:00
# Start OpenCode
opencode
2025-03-27 22:35:48 +01:00
# Start with debug logging
2025-04-16 20:06:23 +02:00
opencode -d
2025-04-18 20:17:38 +02:00
# Start with a specific working directory
opencode -c /path/to/project
2025-03-27 22:35:48 +01:00
```
2025-04-30 12:42:41 +03:00
## Non-interactive Prompt Mode
You can run OpenCode in non-interactive mode by passing a prompt directly as a command-line argument. This is useful for scripting, automation, or when you want a quick answer without launching the full TUI.
```bash
# Run a single prompt and print the AI's response to the terminal
opencode -p "Explain the use of context in Go"
# Get response in JSON format
opencode -p "Explain the use of context in Go" -f json
# Run without showing the spinner (useful for scripts)
opencode -p "Explain the use of context in Go" -q
```
In this mode, OpenCode will process your prompt, print the result to standard output, and then exit. All permissions are auto-approved for the session.
By default, a spinner animation is displayed while the model is processing your query. You can disable this spinner with the `-q` or `--quiet` flag, which is particularly useful when running OpenCode from scripts or automated workflows.
### Output Formats
OpenCode supports the following output formats in non-interactive mode:
2025-06-04 15:08:50 +02:00
| Format | Description |
| ------ | ------------------------------- |
| `text` | Plain text output (default) |
| `json` | Output wrapped in a JSON object |
2025-04-30 12:42:41 +03:00
The output format is implemented as a strongly-typed `OutputFormat` in the codebase, ensuring type safety and validation when processing outputs.
2025-04-18 20:17:38 +02:00
## Command-line Flags
2025-06-04 15:08:50 +02:00
| Flag | Short | Description |
| ----------------- | ----- | --------------------------------------------------- |
| `--help` | `-h` | Display help information |
| `--debug` | `-d` | Enable debug mode |
| `--cwd` | `-c` | Set current working directory |
| `--prompt` | `-p` | Run a single prompt in non-interactive mode |
| `--output-format` | `-f` | Output format for non-interactive mode (text, json) |
| `--quiet` | `-q` | Hide spinner in non-interactive mode |
2025-04-18 20:17:38 +02:00
## Keyboard Shortcuts
### Global Shortcuts
2025-04-21 19:48:36 +02:00
| Shortcut | Action |
| -------- | ------------------------------------------------------- |
| `Ctrl+C` | Quit application |
| `Ctrl+?` | Toggle help dialog |
| `?` | Toggle help dialog (when not in editing mode) |
| `Ctrl+L` | View logs |
| `Ctrl+A` | Switch session |
| `Ctrl+K` | Command dialog |
2025-04-28 12:25:06 -05:00
| `Ctrl+O` | Toggle model selection dialog |
2025-04-21 19:48:36 +02:00
| `Esc` | Close current overlay/dialog or return to previous mode |
2025-04-18 20:17:38 +02:00
### Chat Page Shortcuts
| Shortcut | Action |
| -------- | --------------------------------------- |
| `Ctrl+N` | Create new session |
| `Ctrl+X` | Cancel current operation/generation |
| `i` | Focus editor (when not in writing mode) |
| `Esc` | Exit writing mode and focus messages |
### Editor Shortcuts
2025-03-27 22:35:48 +01:00
2025-04-18 20:17:38 +02:00
| Shortcut | Action |
| ------------------- | ----------------------------------------- |
| `Ctrl+S` | Send message (when editor is focused) |
| `Enter` or `Ctrl+S` | Send message (when editor is not focused) |
2025-04-21 16:22:52 +02:00
| `Ctrl+E` | Open external editor |
2025-04-18 20:17:38 +02:00
| `Esc` | Blur editor and focus messages |
2025-04-13 14:37:05 +02:00
2025-04-21 16:22:52 +02:00
### Session Dialog Shortcuts
2025-04-21 19:48:36 +02:00
| Shortcut | Action |
| ---------- | ---------------- |
| `↑` or `k` | Previous session |
| `↓` or `j` | Next session |
| `Enter` | Select session |
| `Esc` | Close dialog |
2025-04-21 16:22:52 +02:00
2025-04-28 12:25:06 -05:00
### Model Dialog Shortcuts
| Shortcut | Action |
| ---------- | ----------------- |
| `↑` or `k` | Move up |
| `↓` or `j` | Move down |
| `←` or `h` | Previous provider |
| `→` or `l` | Next provider |
| `Esc` | Close dialog |
2025-04-21 16:22:52 +02:00
### Permission Dialog Shortcuts
2025-04-21 19:48:36 +02:00
| Shortcut | Action |
| ----------------------- | ---------------------------- |
| `←` or `left` | Switch options left |
| `→` or `right` or `tab` | Switch options right |
| `Enter` or `space` | Confirm selection |
| `a` | Allow permission |
| `A` | Allow permission for session |
| `d` | Deny permission |
2025-04-21 16:22:52 +02:00
2025-04-18 20:17:38 +02:00
### Logs Page Shortcuts
2025-04-03 19:50:31 +02:00
2025-04-21 19:48:36 +02:00
| Shortcut | Action |
| ------------------ | ------------------- |
2025-04-21 16:22:52 +02:00
| `Backspace` or `q` | Return to chat page |
2025-04-13 14:37:05 +02:00
2025-04-18 20:17:38 +02:00
## AI Assistant Tools
2025-04-03 19:50:31 +02:00
2025-04-18 20:17:38 +02:00
OpenCode's AI assistant has access to various tools to help with coding tasks:
2025-04-13 14:37:05 +02:00
2025-04-18 20:17:38 +02:00
### File and Code Tools
2025-04-03 19:50:31 +02:00
2025-04-18 20:17:38 +02:00
| Tool | Description | Parameters |
| ------------- | --------------------------- | ---------------------------------------------------------------------------------------- |
| `glob` | Find files by pattern | `pattern` (required), `path` (optional) |
| `grep` | Search file contents | `pattern` (required), `path` (optional), `include` (optional), `literal_text` (optional) |
| `ls` | List directory contents | `path` (optional), `ignore` (optional array of patterns) |
| `view` | View file contents | `file_path` (required), `offset` (optional), `limit` (optional) |
| `write` | Write to files | `file_path` (required), `content` (required) |
| `edit` | Edit files | Various parameters for file editing |
| `patch` | Apply patches to files | `file_path` (required), `diff` (required) |
| `diagnostics` | Get diagnostics information | `file_path` (optional) |
2025-04-13 14:37:05 +02:00
2025-04-18 20:17:38 +02:00
### Other Tools
| Tool | Description | Parameters |
| ------------- | -------------------------------------- | ----------------------------------------------------------------------------------------- |
| `bash` | Execute shell commands | `command` (required), `timeout` (optional) |
| `fetch` | Fetch data from URLs | `url` (required), `format` (required), `timeout` (optional) |
| `sourcegraph` | Search code across public repositories | `query` (required), `count` (optional), `context_window` (optional), `timeout` (optional) |
| `agent` | Run sub-tasks with the AI agent | `prompt` (required) |
2025-03-27 22:35:48 +01:00
## Architecture
2025-04-16 20:06:23 +02:00
OpenCode is built with a modular architecture:
2025-03-27 22:35:48 +01:00
- **cmd**: Command-line interface using Cobra
- **internal/app**: Core application services
- **internal/config**: Configuration management
- **internal/db**: Database operations and migrations
- **internal/llm**: LLM providers and tools integration
- **internal/tui**: Terminal UI components and layouts
- **internal/logging**: Logging infrastructure
- **internal/message**: Message handling
- **internal/session**: Session management
2025-04-18 20:17:38 +02:00
- **internal/lsp**: Language Server Protocol integration
2025-05-09 17:33:35 +03:00
## Custom Commands
OpenCode supports custom commands that can be created by users to quickly send predefined prompts to the AI assistant.
### Creating Custom Commands
Custom commands are predefined prompts stored as Markdown files in one of three locations:
1. **User Commands** (prefixed with `user:` ):
2025-05-09 19:30:57 +02:00
2025-05-09 17:33:35 +03:00
```
$XDG_CONFIG_HOME/opencode/commands/
```
2025-05-09 19:30:57 +02:00
2025-05-09 17:33:35 +03:00
(typically `~/.config/opencode/commands/` on Linux/macOS)
or
```
$HOME/.opencode/commands/
```
2. **Project Commands** (prefixed with `project:` ):
2025-04-30 12:42:41 +03:00
2025-05-09 17:33:35 +03:00
```
< PROJECT DIR > /.opencode/commands/
```
Each `.md` file in these directories becomes a custom command. The file name (without extension) becomes the command ID.
For example, creating a file at `~/.config/opencode/commands/prime-context.md` with content:
```markdown
RUN git ls-files
READ README.md
```
This creates a command called `user:prime-context` .
### Command Arguments
2025-05-15 16:52:24 +03:00
OpenCode supports named arguments in custom commands using placeholders in the format `$NAME` (where NAME consists of uppercase letters, numbers, and underscores, and must start with a letter).
For example:
2025-05-09 17:33:35 +03:00
```markdown
2025-05-15 16:52:24 +03:00
# Fetch Context for Issue $ISSUE_NUMBER
RUN gh issue view $ISSUE_NUMBER --json title,body,comments
RUN git grep --author="$AUTHOR_NAME" -n .
RUN grep -R "$SEARCH_PATTERN" $DIRECTORY
2025-05-09 17:33:35 +03:00
```
2025-05-15 16:52:24 +03:00
When you run a command with arguments, OpenCode will prompt you to enter values for each unique placeholder. Named arguments provide several benefits:
2025-04-30 12:42:41 +03:00
2025-05-15 16:52:24 +03:00
- Clear identification of what each argument represents
- Ability to use the same argument multiple times
- Better organization for commands with multiple inputs
2025-05-09 17:33:35 +03:00
### Organizing Commands
You can organize commands in subdirectories:
```
~/.config/opencode/commands/git/commit.md
```
This creates a command with ID `user:git:commit` .
### Using Custom Commands
1. Press `Ctrl+K` to open the command dialog
2. Select your custom command (prefixed with either `user:` or `project:` )
3. Press Enter to execute the command
The content of the command file will be sent as a message to the AI assistant.
2025-05-09 19:30:57 +02:00
### Built-in Commands
OpenCode includes several built-in commands:
| Command | Description |
| ------------------ | --------------------------------------------------------------------------------------------------- |
| Initialize Project | Creates or updates the OpenCode.md memory file with project-specific information |
| Compact Session | Manually triggers the summarization of the current session, creating a new session with the summary |
2025-04-18 20:17:38 +02:00
## MCP (Model Context Protocol)
OpenCode implements the Model Context Protocol (MCP) to extend its capabilities through external tools. MCP provides a standardized way for the AI assistant to interact with external services and tools.
### MCP Features
- **External Tool Integration**: Connect to external tools and services via a standardized protocol
- **Tool Discovery**: Automatically discover available tools from MCP servers
- **Multiple Connection Types**:
- **Stdio**: Communicate with tools via standard input/output
- **SSE**: Communicate with tools via Server-Sent Events
- **Security**: Permission system for controlling access to MCP tools
### Configuring MCP Servers
MCP servers are defined in the configuration file under the `mcpServers` section:
```json
{
"mcpServers": {
"example": {
"type": "stdio",
"command": "path/to/mcp-server",
"env": [],
"args": []
},
"web-example": {
"type": "sse",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer token"
}
}
}
}
```
### MCP Tool Usage
Once configured, MCP tools are automatically available to the AI assistant alongside built-in tools. They follow the same permission model as other tools, requiring user approval before execution.
## LSP (Language Server Protocol)
2025-04-21 16:22:52 +02:00
OpenCode integrates with Language Server Protocol to provide code intelligence features across multiple programming languages.
2025-04-18 20:17:38 +02:00
### LSP Features
- **Multi-language Support**: Connect to language servers for different programming languages
2025-04-21 16:22:52 +02:00
- **Diagnostics**: Receive error checking and linting information
2025-04-18 20:17:38 +02:00
- **File Watching**: Automatically notify language servers of file changes
### Configuring LSP
Language servers are configured in the configuration file under the `lsp` section:
```json
{
"lsp": {
"go": {
"disabled": false,
"command": "gopls"
},
"typescript": {
"disabled": false,
"command": "typescript-language-server",
"args": ["--stdio"]
}
}
}
```
### LSP Integration with AI
The AI assistant can access LSP features through the `diagnostics` tool, allowing it to:
- Check for errors in your code
- Suggest fixes based on diagnostics
2025-04-21 16:22:52 +02:00
While the LSP client implementation supports the full LSP protocol (including completions, hover, definition, etc.), currently only diagnostics are exposed to the AI assistant.
2025-03-27 22:35:48 +01:00
2025-06-25 15:23:40 -04:00
## Using Github Copilot
_Copilot support is currently experimental._
### Requirements
- [Copilot chat in the IDE ](https://github.com/settings/copilot ) enabled in GitHub settings
- One of:
- VSCode Github Copilot chat extension
- Github `gh` CLI
- Neovim Github Copilot plugin (`copilot.vim` or `copilot.lua` )
- Github token with copilot permissions
If using one of the above plugins or cli tools, make sure you use the authenticate
the tool with your github account. This should create a github token at one of the following locations:
- ~/.config/github-copilot/[hosts,apps].json
- $XDG_CONFIG_HOME/github-copilot/[hosts,apps].json
If using an explicit github token, you may either set the $GITHUB_TOKEN environment variable or add it to the opencode.json config file at `providers.copilot.apiKey` .
2025-05-16 19:38:53 +02:00
## Using a self-hosted model provider
OpenCode can also load and use models from a self-hosted (OpenAI-like) provider.
This is useful for developers who want to experiment with custom models.
2025-06-04 15:08:50 +02:00
### Configuring a self-hosted provider
2025-05-16 19:38:53 +02:00
You can use a self-hosted model by setting the `LOCAL_ENDPOINT` environment variable.
This will cause OpenCode to load and use the models from the specified endpoint.
```bash
LOCAL_ENDPOINT=http://localhost:1235/v1
```
### Configuring a self-hosted model
You can also configure a self-hosted model in the configuration file under the `agents` section:
```json
{
"agents": {
"coder": {
"model": "local.granite-3.3-2b-instruct@q8_0 ",
"reasoningEffort": "high"
}
}
}
```
2025-03-27 22:35:48 +01:00
## Development
### Prerequisites
2025-04-21 16:22:52 +02:00
- Go 1.24.0 or higher
2025-03-27 22:35:48 +01:00
### Building from Source
```bash
# Clone the repository
2025-04-24 18:25:52 +02:00
git clone https://github.com/opencode-ai/opencode.git
2025-04-16 20:06:23 +02:00
cd opencode
2025-03-27 22:35:48 +01:00
# Build
2025-04-16 20:06:23 +02:00
go build -o opencode
2025-03-27 22:35:48 +01:00
# Run
2025-04-16 20:06:23 +02:00
./opencode
2025-03-27 22:35:48 +01:00
```
2025-04-03 15:20:15 +02:00
## Acknowledgments
2025-04-21 13:33:51 +02:00
OpenCode gratefully acknowledges the contributions and support from these key individuals:
2025-04-03 15:20:15 +02:00
2025-04-21 13:33:51 +02:00
- [@isaacphi ](https://github.com/isaacphi ) - For the [mcp-language-server ](https://github.com/isaacphi/mcp-language-server ) project which provided the foundation for our LSP client implementation
- [@adamdottv ](https://github.com/adamdottv ) - For the design direction and UI/UX architecture
Special thanks to the broader open source community whose tools and libraries have made this project possible.
2025-04-03 15:20:15 +02:00
2025-03-27 22:35:48 +01:00
## License
2025-04-18 20:17:38 +02:00
OpenCode is licensed under the MIT License. See the [LICENSE ](LICENSE ) file for details.
2025-03-27 22:35:48 +01:00
## Contributing
2025-04-18 20:17:38 +02:00
Contributions are welcome! Here's how you can contribute:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature` )
3. Commit your changes (`git commit -m 'Add some amazing feature'` )
4. Push to the branch (`git push origin feature/amazing-feature` )
5. Open a Pull Request
2025-04-21 19:48:36 +02:00
Please make sure to update tests as appropriate and follow the existing code style.