Repository navigation
OpenCode plugin 0.1.1
First release of opencode-multi-llm, the multi-llm workflow inside OpenCode, installed from npm. multi-llm runs plan reviews, task generation, implementation and code review across several LLM CLIs. The package adds a /multi-llm command and a model-callable multi_llm tool.
Install
Add the exact pin to ~/.config/opencode/opencode.json, then restart OpenCode:
{ "plugin": ["opencode-multi-llm@0.1.1"] }Check that it loaded. Every failure on this route is silent: the entry stays listed and nothing reports an error.
opencode debug config | jq '.command["multi-llm"] != null' # true = loadedThen, once per repository, run /multi-llm --init. It writes <git-root>/.multi-llm/providers.yaml, where you pick your providers and models. After that, run a workflow: /multi-llm plans/my-feature.md. Headless, the command is opencode run --command multi-llm -- "plans/my-feature.md".
- Requirements: opencode 1.19.4 or newer, enforced through
engines(an older opencode refuses the package with a compatibility error), anduvonPATH, which supplies Python itself. - First run: the first start downloads the package, and the first
/multi-llmbuilds its Python environment (pyyamlalone). Both need the network. - Always pin. OpenCode caches a plugin under the exact string in
plugin, so an unpinned name or a range resolves once and never updates. To upgrade, change the pin and restart.
Full instructions: README §1.3 and docs/hosts.md. The latter covers troubleshooting, uninstall and local builds.
Coming from the file route
If you installed with install-host opencode, remove that command file from the checkout or plugin install you ran it from, then add the pin above:
uv run --frozen --no-dev --project "$SKILL" -- python "$SKILL/multi_llm.py" uninstall-host opencode --dry-run # lists the files
uv run --frozen --no-dev --project "$SKILL" -- python "$SKILL/multi_llm.py" uninstall-host opencodeA leftover file does no harm, because the package's command replaces it at startup. install-host opencode --check reports BOTH routes until it's removed.
What was checked
-
The full local release gate (
make opencode-package-check) onf4f024c7: rows 1–9 and 5b pass. That includes:- a clean install of the exact tarball by opencode 1.19.4, in a committed project and in a project with no commits;
- five container scenarios run through the installed package with stub models and no credentials:
init/status, detached launch, supervision, completion and cancellation; - registry absence immediately before the upload.
Record:
skills/multi-llm/tests/container/records/20261026T125425Z-opencode-release-gate.json. -
CI on the release commit: the test suite on Ubuntu, macOS and Windows, and the package job, all green.
-
The upload is the gated tarball itself (
npm publish <tarball> --ignore-scripts). The registry serves integritysha512-XjxHpcySLlsWfUQdlApgEM82ojLfJg1SD9pkAbkGPw5pv0j0+29iQJtxGb9vEQLaQNZw8VJMSs+CSpDfswCFoQ==, identical to the gated one. -
Installed as a user would, from registry.npmjs.org, into a fresh stock
node:22-bookworm-slimcontainer: opencode 1.19.4, uv 0.13.5, empty caches, no checkout of this repository, and a new project made with a plaingit init. All eight first-release criteria pass:- the spec resolves with the gated integrity;
- the installed manifest says 0.1.1;
- the installed tree equals the package rebuilt from this tag's commit (199 files), checked before the first tool call;
/multi-llmresolves the installed skill;- the
multi_llmtool runsinitfrom the installed payload; - first use installs the runtime dependencies;
- a warm
statusruns with the container's network cut; - a restart on the same pin serves the same payload.
Record:
skills/multi-llm/tests/container/records/20261026T175524Z-opencode-release-network-check.json.
Both records are attached below. The raw supporting output stays local, because it holds machine-specific paths.
Provenance
This first version was uploaded from the maintainer's machine, not from CI. npm can only attach a trusted publisher to a package that already exists, so 0.1.1 carries no npm provenance attestation. Its bytes are tied to this tag in two other ways: the uploaded file is the gated tarball, and the registry install check rebuilt the package from this tag's commit and found the installed tree identical. Later versions publish from the publish opencode plugin workflow through npm trusted publishing (OIDC), with provenance.
The workflow run that this tag's push started stopped before verifying anything. Its shared-version check refused npm's placeholder version (below). The registry install check above stands as this release's evidence.
Platforms
Linux is the verified platform. macOS and Windows are untested on this route.
0.0.0-stage on npm
npm lists a 0.0.0-stage version next to 0.1.1. It's a placeholder npm created at the package's first publish, not a release, and installs never select it. Never pin it.
No providers.yaml migration is needed (first release).