Skip to content

Muster's own computer use on macOS: helper, MCP server and agent cursor - #727

Open
Dkm0315 wants to merge 5 commits into
mainfrom
feat/721-own-computer-use
Open

Dkm0315 wants to merge 5 commits into
mainfrom
feat/721-own-computer-use

Conversation

@Dkm0315

@Dkm0315 Dkm0315 commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

Part of #721 (the macOS part; Windows and Linux backends follow under the same contract).

What changes

  • Muster's own computer-use helper (muster-computer, Swift, built by scripts/build-computer-helper.mjs, unpacked from asar). It reads apps through the macOS Accessibility tree and captures windows with ScreenCaptureKit. It does not depend on any other desktop app being installed.
  • muster_computer MCP server (computer-mcp.cjs). Tools: list_apps, get_app_state, click, type_text, set_value, press_key, perform_action, scroll, screenshot.
    • Each action waits for the UI to settle, then answers with only what changed (Changed: / Appeared: / Gone: / No visible change.). It falls back to the full tree when most of the screen changed.
    • Element numbers stay stable across steps; an unknown number is refused.
    • Read-only chats (MUSTER_COMPUTER_READ_ONLY=1) are not offered the mutating tools, and those tools are refused.
  • Wired into every agent route that loads MCP: Codex (config overrides), Claude Code (lane servers), and router chats on their own route. If the helper is missing, the old note stays.
  • Step labels in the transcript name the app and element: Clicked “Add one” in MusterFixture.
  • The earlier commit on this branch adds the orange Muster cursor, in the browser and in desktop apps. It glides to each target and fades out when the agent stops.

Timings (fixture app, M-series Mac)

Step Time Reply size
get_app_state ~1.0 s 266 chars
click 0.42–0.62 s 144 chars (delta only)
type_text 0.53 s delta only
press_key 0.33 s delta only

Spec and tests

  • MUS-SPEC-14-721E/F/G in docs/spec/clauses/14-agents-skills-plugins-and-automations.md, tests in tests/computer-mcp.test.ts.
  • Red on main: 0/3 pass. Green: 50/50 across computer-mcp, agent-tools, browser-route-matrix, claude-messages-lane, sandbox-honesty, agent-cursor, computer-pip, router-agents.
  • The E2E cases drive a real fixture app and need Accessibility permission. Set MUSTER_REQUIRE_COMPUTER_E2E=1 to make them mandatory; CI runners without the permission skip them with a reason.

Not in this PR

  • Windows (UI Automation) and Linux (AT-SPI, X11 and Wayland) helpers.
  • The browser tab-group mark and its extension.
  • Plugin bundle signing.
  • Release task suite.

…ktop apps

The in-app browser draws an orange Muster cursor that glides to each control before
the action, presses with a ripple, rings a field while typing and fades when the agent
goes quiet. The macOS computer-use host draws the same cursor plus an outline around
the window in use, above the target window only, and never in a capture.
@Dkm0315 Dkm0315 added p1 High-priority product work status-review Ready for review or integration type:feature New feature or request area:providers Area: providers labels Oct 26, 2026
Comment thread packages/agent-app/tests/agent-cursor.test.ts Fixed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providers Area: providers p1 High-priority product work status-review Ready for review or integration type:feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants