Release status: CI
builds candidate archives on pull requests, master pushes and manual runs.
release.yml
implements dry runs and publication; native and host acceptance are manual.
The organization VERSIONING owns version rules, including tags, version choice and the changelog. This reference records this repository's version sources, compatibility, release procedure and checks. The shared release workflow guide describes workflow verification and recovery.
| Shipped component | Version meaning | Version source | Mirrors and derived fields | Update and read-only check |
|---|---|---|---|---|
computer-use.zip plugin package |
Package version | version in computer-mcp-plugin.toml |
builder and release receipts, release tag, catalog entry, the App's bundled index | Edit the manifest; release.yml checks agreement with the tag |
| Manifest and host runtime contract | Plugin API version | plugin_api in computer-mcp-plugin.toml |
release receipt and host compatibility evaluation | Package tests check the declaration; release.yml verifies it |
The archive contains the README, contribution guide, manifest, license, notices,
skills/, docs/ and the README images .github/assets/logo/logo-light.png
and .github/assets/logo/logo-dark.png. Tests, build scripts and workflows
are excluded from the archive.
The package contributes the vendor's native stdio MCP registration and portable observe–act–verify guidance. Package architecture owns executable discovery and the host/vendor authority boundaries. Native tool behavior and caller authentication belong to the vendor.
The manifest owns the plugin API declaration and host compatibility bounds. Validate changes to those bounds against the required host.
The package is a declaration: it registers the vendor's native Computer Use MCP client and ships no runtime code. The manifest locates that client by command name or application bundle, and the vendor owns its installation and caller authentication.
The builder needs only the Python 3.11 standard library. CI runs the tests and build on Python 3.11 and 3.13. Package checks do not establish compatibility of a particular vendor client, caller or GUI target; native discovery and action acceptance identify the combination actually observed.
scripts/build_package.py verifies the plugin ID, explicitly includes the README
logo images, skips hidden files and Python caches when traversing content trees,
rejects links and special files, and produces the same archive bytes from the
same source. tests/test_build_package.py checks the plugin API
declaration and pins the exact archive file set. The builder receipt prints the
ID, version and SHA-256.
Publication depends on the repository's GitHub release immutability setting. The shared workflow checks that setting before writing a Release.
- Confirm that
versionincomputer-mcp-plugin.tomlhas not been released and that the reviewedmastercommit has a successfulpushrun ofci.yml, including itscomputer-use-plugin-<commit>artifact. - Dispatch
release.ymlwithrefset to that full commit SHA andpublishset tofalse(the default). The workflow rebuilds withscripts/build-package.shand compares the archive bytes with the exact CI artifact. Inspect theplugin-release-<run-id>-<attempt>Actions artifact:assets/containscomputer-use.zip,release-receipt.jsonandSHA256SUMS. An untagged dry run reports the signed annotated tag still required for publication. - Rebuild the same commit with
scripts/build-package.sh <output-directory>and confirm it matches the dry-run archive. Validate and install that exact archive with the selected Computer MCP host, and confirm native catalog discovery with the installed vendor client. GUI checks use a disposable, explicitly authorized target. - Create the version tag that VERSIONING requires on the accepted commit and push it. Create a draft GitHub Release for that tag, targeting the full commit SHA, and record the manual acceptance results and their limits in its notes.
- Dispatch
release.ymlwithrefset to that version tag andpublishset totrue. The workflow verifies the tag, manifest, CI source and archive bytes, completes the draft's assets and publishes the verified release. Confirm the public release is immutable and its archive digest matches the accepted archive.
The public assets are computer-use.zip, the shared release-receipt.json and
SHA256SUMS. CI's package-receipt.json remains builder evidence in the CI
artifact.
The Computer MCP App bundles a copy of this package, pinned by version and
SHA-256 in the App repository's Resources/PluginArchives/index.json. Before
the first release, the host may bundle an archive reproducibly built from an
accepted commit before that plugin version is published. A host release
requires the plugin release with the same archive digest to be public first.
release.yml calls notify-catalog.yml only when publish is true and the
shared release workflow reports published: true. Only the notifier job
receives the catalog App private key; the shared release workflow receives no
secret inputs. This explicit call handles publication through GITHUB_TOKEN,
which does not trigger release-event workflows.
notify-catalog.yml also runs when a release is published, edited, released,
unpublished or deleted, and on manual dispatch. It asks the website to
reconcile the complete catalog. The website verifies the actual GitHub
releases rather than the event payload, keeps verified history, and applies
its own withdrawal policy; an event never withdraws a release by itself.
The workflow authenticates as the receiver-scoped catalog GitHub App through
the CATALOG_APP_CLIENT_ID variable and the CATALOG_APP_PRIVATE_KEY secret.
The App needs Actions write access to computer-mcp/computer-mcp.github.io only.
The job checks this repository's immutable ID, does not check out package code,
and grants its own token no repository permissions. Missing or rejected
authority fails the run visibly.
The shared notification action is pinned to a reviewed full commit of
computer-mcp/github-workflows. Publish that commit first, then update the pin
here when adopting a change to the notification contract.
The CI artifact name identifies the source commit, and the builder receipt records
the archive SHA-256. The release workflow verifies CI provenance and artifact
digests; release-receipt.json records the commit, CI run and attempt, artifact
digest and archive SHA-256.
An archive with the accepted digest keeps its archive acceptance for the tested combination. Reuse of manual results is reviewed against the native dependency, selected host, check definitions and relevant environment recorded with them. Changes to packaged files produce a new archive and require the affected checks again. A check-only change can reuse unchanged archive bytes with fresh affected checks. Source tests do not replace installation, native or authenticated execution evidence. Keep failed-check output and result limits with the manual acceptance record.
| Operation | Existing command or explicit manual procedure | Required access |
|---|---|---|
| Version update and check | Edit computer-mcp-plugin.toml; python3 -m unittest discover -s tests -p 'test_*.py' |
Local checkout |
| Candidate validation and build | ci.yml; locally scripts/build-package.sh <output-directory> |
CI or local checkout |
| Native and host acceptance | Validate and install the exact archive with the selected host; verify native catalog discovery and authorized GUI behavior | Selected host, vendor client and authorized disposable target |
| Acceptance and publication | Manual checks above; dispatch release.yml, dry run first |
Repository Actions; publication also needs a signing key and release write access |
| Status and interrupted-run recovery | Inspect CI or release.yml; follow Retry |
Repository Actions |
| Cleanup | Delete obsolete local output and evidence directories | Local checkout |
CI keeps candidate artifacts for 14 days. The builder refuses to overwrite a
different archive. Local package output belongs in ignored dist/; keep
manual evidence outside the repository and retain it while the acceptance
record requires it.
For an interrupted publication, use Re-run failed jobs and follow the shared workflow guide's recovery rules. If verification already succeeded, the publish job reuses its verified bundle and digest outputs.
For a missed or failed notification, rerun only the notifier job or dispatch:
gh workflow run notify-catalog.yml --repo computer-mcp/plugin-computer-use --ref masterA successful dispatch only proves the request was accepted. Follow the run's
run_url output to the website run, confirm it succeeded, and confirm the public
index lists the expected release. Retrying never requires changing or
republishing the release: reconciliation is idempotent, and the website's
hourly schedule also repairs missed notifications.
The website's catalog publication and notification contract covers provenance, credentials, retry bounds and deployment.