opencode runner invokes opencode run as a subprocess and supports over 75 AI providers — including GitHub Copilot and local models via Ollama — with no API key required to get started.
Requirements
- Node.js 18 or later
- npm
No API key required
OpenCode works out of the box with:- GitHub Copilot — if you have an active Copilot subscription, opencode will use it automatically
- Local models via Ollama — run models entirely offline with no external API
- OpenCode Go subscription — opencode’s own hosted model access
Setup
opencode when prompted by the interactive wizard (it is listed first as the recommended default).
During remoteagent init, the wizard will ask:
- API key — optional; press Enter to skip if you are using Copilot, Ollama, or OpenCode Go
- Default model (e.g.
anthropic/claude-sonnet-4-5) — optional; leave blank to use opencode’s own default - Small model for lightweight tasks — optional
- Multiagent mode — yes/no
How it works
RemoteAgent injects configuration at runtime using theOPENCODE_CONFIG_CONTENT environment variable — opencode’s native config injection mechanism. RemoteAgent does not write any config files to disk.
The runner executes:
opencode.json file will be picked up by opencode automatically — RemoteAgent does not interfere with it.
Output from stdout is streamed back to the Redis output channel as it arrives.
OpenCode’s own configuration
opencode has a rich native configuration system (opencode.json). Any settings not exposed in the RemoteAgent wizard — custom keybindings, themes, provider-specific options, agent behaviors — can be configured directly in that file. opencode reads it automatically on every run.
See OpenCode’s documentation for the full list of supported configuration options and providers.
Pros and cons
| Pros | Cons |
|---|---|
| No API key required — recommended default | Beta output parsing in some edge cases |
| 75+ supported providers | Requires Node.js environment |
| Works with GitHub Copilot and local models | — |
| Open-source and auditable | — |
| No vendor lock-in | — |
| Active development by SST team | — |
| Config injected via env var — no file conflicts | — |