feat(computer-use): ship munim-computer-use instead of in-tree desktop MCP copies - #29
Merged
Merged
Conversation
…p MCP copies MT Code carried its own diverging copies of the desktop-control MCP server (native/t3-desktop-mcp Swift, native/t3-desktop-mcp-rs Rust, native/t3-chrome-extension) and mirrored them out to the open-source munim-computer-use repo. The server is now built once, there, and MT Code ships its signed release: - native/munim-computer-use.json pins the release version and each asset's sha256. The desktop build fetches, verifies and caches the assets and stages the binary, the Chrome extension and MT's agent-cursor app into Resources/munim-computer-use. The pin ships as FILL-AT-RELEASE and the build refuses to run until it is filled; MTCODE_COMPUTER_USE_BINARY / MTCODE_COMPUTER_USE_EXTENSION_DIR stage a local build instead. - It stays MT-branded: registered as `mt-desktop`, run under an MT identity profile (bridge socket and support dir `mtcode-desktop`, MTCODE_DESKTOP_* tunables, MTCodeAgentCursor / com.munim.mtcode.agent-cursor, native host com.munim.mtcode.desktop) via munim-computer-use's embedding support. - Resolution (server and Electron main): MTCODE_DESKTOP_MCP_PATH, then the deprecated T3CODE_DESKTOP_MCP_PATH, the packaged copy, a local ~/computer-use build, then the fetched release. - The desktop app registers its Chrome native host itself (`munim-computer-use install-native-host`) at launch when browser control is on and when Computer Use settings are opened; settings point at the bundled extension folder. - .mcp.json runs scripts/run-desktop-mcp.ts; `fetch:desktop-mcp` replaces `build:desktop-mcp`. The mirror script and rebrand map are gone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…nt rules Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MT Code carried its own diverging copies of the desktop-control MCP server (
native/t3-desktop-mcpSwift,native/t3-desktop-mcp-rsRust,native/t3-chrome-extension) and mirrored them out to munim-computer-use. This makes the server built once, in the open-source repo, and has MT Code ship its signed release, still MT-branded.Depends on munimtechnologies/munim-computer-use#3 (embedding support), which is stacked on #2 (0.4.0).
What changes
native/munim-computer-use.jsonpins the version and the sha256 of each asset (macOS universal, Windows x64, Linux x64/arm64, Chrome extension).scripts/build-desktop-artifact.tsfetches, verifies, caches (~/.cache/mtcode/munim-computer-use/<version>/) and stages the binary, the extension and MT's agent-cursor app intoResources/munim-computer-use/. The pin ships asFILL-AT-RELEASEand the build fails loudly until it is filled.MTCODE_COMPUTER_USE_BINARY/MTCODE_COMPUTER_USE_EXTENSION_DIRstage a local build instead.mt-desktop(unchanged) and launched with an MT profile: bridge socket/support dirmtcode-desktop, tunablesMTCODE_DESKTOP_BROWSER/MTCODE_DESKTOP_AGENT_CURSOR, overlayMTCodeAgentCursor.app/com.munim.mtcode.agent-cursor, Chrome hostcom.munim.mtcode.desktopfor extensionkgdolgnijopbghhomnblabjkmjhnoage. The shared names live inpackages/shared/src/munimComputerUse.ts.desktopMcpBinary.tsand Electron mainresolveBinary.ts):MTCODE_DESKTOP_MCP_PATH, then deprecatedT3CODE_DESKTOP_MCP_PATH(still honoured), packaged copy, a local~/computer-usebuild ($MUNIM_COMPUTER_USE_CHECKOUT), then the fetched release.munim-computer-use install-native-hostunder the MT profile) at launch when browser control is on, and when Computer Use settings are opened. Settings point at the bundledmunim-computer-use/chrome-extensionfolder and show its path until it is loaded. Computer History runs under the same profile.native/t3-desktop-mcp,native/t3-desktop-mcp-rs,native/t3-chrome-extension,native/computer-use,scripts/personal-publish-computer-use.sh,scripts/lib/computer-use-rebrand.py.build:desktop-mcp→fetch:desktop-mcp;.mcp.jsonrunsscripts/run-desktop-mcp.ts. Guard script lines updated; release doc has a short section on the pin.Owner actions / release order
gh workflow run release-assets.yml -f version=<v>(adds Linux tarballs + extension zip and rewritesSHA256SUMS.txt), npm publish, un-draft.native/munim-computer-use.json(version + sha256 fromSHA256SUMS.txt) in this branch.Upgrade notes (users / fleet)
native/t3-chrome-extensionin a checkout must re-load it from the app'sResources/munim-computer-use/chrome-extension(same extension id, so nothing else changes). The old~/Library/Application Support/t3-desktop-mcp/native-hostwrapper andcom.t3tools.t3code.desktopmanifest are no longer used; MT Code overwritescom.munim.mtcode.desktop.jsonwith its own.…/Resources/t3-desktop-mcp/t3-desktop-mcppath (e.g. adesktopentry in~/.claude.json) must be repointed at…/Resources/munim-computer-use/munim-computer-usewithCOMPUTER_USE_PROFILEset, or it runs the standalone identity.com.t3tools.t3code.agent-cursortocom.munim.mtcode.agent-cursor; it holds no TCC grants.Verified
packages/shared,scripts,apps/desktop,apps/serverclean (web change is copy only).vp test run:apps/server/src/desktopControl/(26 passed, incl. new legacy-env fallback and checkout-build cases),scripts/lib/munim-computer-use.test.ts(placeholder refusal, sha256 verify + cache reuse, mismatch rejection, macOS staging withMTCodeAgentCursor.app),scripts/build-desktop-artifact.test.ts(2 failures are pre-existing: the Apple Events usage string and the audio-input entitlement assertions, unrelated to this change),apps/desktop/src/computerUse/permissions.test.ts(1 pre-existing environment failure: EPERM reading the real Chrome Secure Preferences).personal-verify-fork-features.shOK against this tree.node scripts/run-desktop-mcp.ts(what.mcp.jsonruns) answersinitializeasmt-desktopand lists tools under the MT profile; an MT-profile server bindsmtcode-desktop/bridge.sockand the wrapper written byinstall-native-hostconnects to it;MTCODE_DESKTOP_BROWSER=0hides the browser tools. The fetch path was exercised against the real v0.3.1 macOS asset (download, sha256 verify, unpack, Developer ID signature intact).node scripts/fetch-munim-computer-use.tsfails with the placeholder message as intended.Not merged, not released, fleet untouched.
🤖 Generated with Claude Code