Skip to content

feat(computer-use): ship munim-computer-use instead of in-tree desktop MCP copies - #29

Merged
sheehanmunim merged 3 commits into
mainfrom
feat/munim-computer-use
Sep 19, 2026
Merged

sheehanmunim merged 3 commits into
mainfrom
feat/munim-computer-use

Conversation

@sheehanmunim

Copy link
Copy Markdown
Member

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 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

  • Pinned release, fetched not built. native/munim-computer-use.json pins the version and the sha256 of each asset (macOS universal, Windows x64, Linux x64/arm64, Chrome extension). scripts/build-desktop-artifact.ts fetches, verifies, caches (~/.cache/mtcode/munim-computer-use/<version>/) and stages the binary, the extension and MT's agent-cursor app into Resources/munim-computer-use/. The pin ships as FILL-AT-RELEASE and the build fails loudly until it is filled. MTCODE_COMPUTER_USE_BINARY / MTCODE_COMPUTER_USE_EXTENSION_DIR stage a local build instead.
  • MT identity, not a rename. Registered as mt-desktop (unchanged) and launched with an MT profile: bridge socket/support dir mtcode-desktop, tunables MTCODE_DESKTOP_BROWSER / MTCODE_DESKTOP_AGENT_CURSOR, overlay MTCodeAgentCursor.app / com.munim.mtcode.agent-cursor, Chrome host com.munim.mtcode.desktop for extension kgdolgnijopbghhomnblabjkmjhnoage. The shared names live in packages/shared/src/munimComputerUse.ts.
  • Resolution (server desktopMcpBinary.ts and Electron main resolveBinary.ts): MTCODE_DESKTOP_MCP_PATH, then deprecated T3CODE_DESKTOP_MCP_PATH (still honoured), packaged copy, a local ~/computer-use build ($MUNIM_COMPUTER_USE_CHECKOUT), then the fetched release.
  • Chrome native host. The desktop app now registers it itself (munim-computer-use install-native-host under the MT profile) at launch when browser control is on, and when Computer Use settings are opened. Settings point at the bundled munim-computer-use/chrome-extension folder and show its path until it is loaded. Computer History runs under the same profile.
  • Removed: 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-mcpfetch:desktop-mcp; .mcp.json runs scripts/run-desktop-mcp.ts. Guard script lines updated; release doc has a short section on the pin.

Owner actions / release order

  1. Merge munim-computer-use feat(mcp): let agents send tasks to another connected computer #2, then feat: pick your own sidebar artwork, and wear the MT brand #3; bump its version, build/sign as usual, create the draft release with the macOS and Windows zips, run gh workflow run release-assets.yml -f version=<v> (adds Linux tarballs + extension zip and rewrites SHA256SUMS.txt), npm publish, un-draft.
  2. Fill native/munim-computer-use.json (version + sha256 from SHA256SUMS.txt) in this branch.
  3. Release MT Code.

Upgrade notes (users / fleet)

  • Chrome extension: anyone who loaded it unpacked from native/t3-chrome-extension in a checkout must re-load it from the app's Resources/munim-computer-use/chrome-extension (same extension id, so nothing else changes). The old ~/Library/Application Support/t3-desktop-mcp/native-host wrapper and com.t3tools.t3code.desktop manifest are no longer used; MT Code overwrites com.munim.mtcode.desktop.json with its own.
  • macOS TCC: the MCP server is a bare child of MT Code, so Accessibility/Screen Recording normally follow MT Code.app. But the shipped binary and its signing identity change (it is the munim-computer-use release, re-signed inside the app bundle), so if tccd refuses the new signature users re-grant Accessibility and Screen Recording once (Settings → Computer Use → open the privacy pane; MT Code already resets stale rows there). Any user-scope registration pointing at the old …/Resources/t3-desktop-mcp/t3-desktop-mcp path (e.g. a desktop entry in ~/.claude.json) must be repointed at …/Resources/munim-computer-use/munim-computer-use with COMPUTER_USE_PROFILE set, or it runs the standalone identity.
  • The agent-cursor overlay bundle id changes from com.t3tools.t3code.agent-cursor to com.munim.mtcode.agent-cursor; it holds no TCC grants.

Verified

  • Per-package typecheck, one at a time: packages/shared, scripts, apps/desktop, apps/server clean (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 with MTCodeAgentCursor.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.sh OK against this tree.
  • End to end against a locally built munim-computer-use (feat: pick your own sidebar artwork, and wear the MT brand #3): node scripts/run-desktop-mcp.ts (what .mcp.json runs) answers initialize as mt-desktop and lists tools under the MT profile; an MT-profile server binds mtcode-desktop/bridge.sock and the wrapper written by install-native-host connects to it; MTCODE_DESKTOP_BROWSER=0 hides 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.ts fails with the placeholder message as intended.

Not merged, not released, fleet untouched.

🤖 Generated with Claude Code

…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>
Copilot AI lite review requested due to automatic review settings September 19, 2026 07:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 19, 2026
sheehanmunim and others added 2 commits September 19, 2026 03:29
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…nt rules

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sheehanmunim
sheehanmunim merged commit 9cff84c into main Sep 19, 2026
7 of 16 checks passed
@sheehanmunim
sheehanmunim deleted the feat/munim-computer-use branch September 19, 2026 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants