OpenCode++ is split into two npm packages:
opencode-plusplus: CLI and MCP runtime.@opencode-plusplus/desktop: Electron main process and bundled renderer.
Benchmark fixtures, benchmark agent runs, repository documentation, source assets, and Desktop files are not included in the core package.
The recommended install path is:
npm i -g opencode-plusplus opencode-ai
cd your-repo
opencode-plusplusRun the full gate before publishing a new version:
npm run check
npm run lint
npm run format:check
npm run docs:cli:check
npm test
npm run benchmark
npm run benchmark:agent
npm run build
npm run release:verifyCI already runs the same baseline. prepublishOnly first deletes both build directories, rebuilds the core and Desktop packages, then validates both npm pack --json manifests. This prevents a release from depending on stale local dist files.
The root package.json version is the single version source. npm run package-info:generate generates the runtime constants and synchronizes the Desktop workspace and lock-file package versions. CLI, MCP, freshness manifests, and generated OpenCode plugins all consume the generated runtime version.
- Confirm
package.jsonhas the intended package name and version. - Confirm
README.mdandREADME.en.mduse the npm install path. - Run
npm run release:verifyand inspect the reported file counts and packed sizes. - Confirm the core package does not contain
assets/,benchmarks/, orapps/desktop/. - Confirm the tarball does not include local dependency folders such as
node_modules/orapps/desktop/node_modules/. - Confirm the tarball does not include generated local caches such as
.agent-context/cache/. - Smoke test the packed tarball in a temporary directory before publishing when possible.
- After publishing, confirm the published version with
npm view opencode-plusplus version.
Publishing requires an npm account with permission to publish opencode-plusplus:
npm publish
npm publish --workspace @opencode-plusplus/desktop --access publicFor packages that require two-factor authentication, use a one-time password or a granular access token with publish permission and 2FA bypass enabled.