Repository navigation
OpenCode Plugin Test Lab v1.0.0
A disposable, isolated Docker test lab for OpenCode V2 plugins. Point it at
any plugin and it builds the plugin, loads it in the real opencode runtime, and
verifies the things plugin authors care about: does it load, do its tools
register, does it collide with other plugins, does it survive running next to a
broken plugin, does it clean up, and what exactly gets installed.
This is a standalone developer testing tool, not a loadable OpenCode runtime
plugin.
Highlights
- Works out of the box — the default manifest tests two tiny bundled example
plugins; no external plugin is required. - Bring your own plugin —
make test-plugin PLUGIN=/path/to/pluginbuilds and
tests any local plugin (source directory, packed tarball, or prebuilt package). - Multiple plugins — configurable load order, tool-name collision detection,
duplicate entries, and failure isolation, all generic. - Capability-aware — if a plugin registers no tools or no redaction, those
assertions are skipped and reported, never faked. - Optional regression profile —
PROFILE=gitdamnitreproduces the original
three-plugin compatibility matrix without depending on those plugins. - Provenance in every report — manifest digest, plugin version/commit, image
id, OpenCode/Node version, and a reproduction command.
Verified compatibility
| OpenCode V2 | Result |
|---|---|
| 2.0.21 (pinned baseline) | 76 pass / 0 fail / 5 skip |
| 2.0.32 (evaluated) | 76 pass / 0 fail / 5 skip |
gitdamnit regression profile, on the pinned historical commits
(65bf698, 6069f91, 9cfd813): 153 pass / 0 fail / 8 skip. Historical
evidence for the original 145-pass run is preserved unchanged under
reports/historical/.
Quick start
git clone https://github.com/gitdamnit/opencode-plugin-lab
cd opencode-plugin-lab
make build # stage the bundled example plugins + build the Docker image
make start # smoke-check the default configuration
make suite # full generic suite across every configuration
make report # print the latest reportSecurity
Offline by default (network_mode: "none"), read-only rootfs, all capabilities
dropped, non-root, no published ports, only ./reports bind-mounted out. Rootless
Docker limits but is not a hard sandbox against malicious plugin code.
License
MIT — see LICENSE and THIRD_PARTY_NOTICES.md.
Full details in CHANGELOG.md.