We want to make it easy for you to contribute to OpenCode. Here are the most common type of changes that get merged:
However, any UI or core product feature must go through a design review with the core team before implementation.
If you are unsure if a PR would be accepted, feel free to ask a maintainer or look for issues with any of the following labels:
[!NOTE] PRs that ignore these guardrails will likely be closed.
Want to take on an issue? Leave a comment and a maintainer may assign it to you unless it is something we are already working on.
Install dependencies and start the dev server from the repo root:
bun install
bun dev
Core pieces:
packages/opencode: OpenCode core business logic & server.packages/tui: The TUI code, written in Go (will be removed soon in favor of opentui)packages/plugin: Source for @opencode-ai/plugin[!NOTE] After touching
packages/opencode/src/server/server.ts, the OpenCode team must regenerate the Stainless SDK before any client updates merge.
These are not strictly enforced, they are just general guidelines:
else statements..catch(...) instead of try/catch when possible.any.let.Bun.file() when they fit the use case.For net-new functionality, start with a design conversation. Open an issue describing the problem, your proposed approach (optional), and why it belongs in OpenCode. The core team will help decide whether it should move forward; please wait for that approval instead of opening a feature PR directly.