ForteAI-Org/mecum

Let agents work in your apps while you keep using your Mac.

Swift

14

313 commits

updated Oct 7, 2026

See the code

See what people are saying

README

Mecum

Let agents work in your apps while you keep using your Mac.

Mecum gives agents a desktop workspace on your Mac. Give a worker a task in the Mecum app, or connect Claude Code or Codex through MCP to work in desktop apps, even when they expose neither an API nor an AX tree.

Download for macOS Docs Discord Follow Mecum on X

License: Apache 2.0 Swift 6.4

See Mecum in action

Get started

Mecum runs on macOS 15+, on Apple silicon and Intel. Follow the installation guide to get set up.

  1. Install and open Mecum.
  2. Create a worker, connect a supported model and grant the Mac access needed for desktop work.
  3. Start with a small task in a disposable document. Name the app, the result you want and where the agent should stop.
  4. Follow the activity and inspect the result in the app.

For your first task, ask the agent to read an open TextEdit test document and summarize it without editing or saving.

If you use Codex or Claude Code, keep their CLIs up to date to access the latest models available to your account.

To build from source with Swift 6.4, follow the developer Quickstart.

Connect Claude Code, Codex or another local MCP client

Mecum and your client must run on the same Mac. The app includes the STDIO bridge; no Node.js or Python installation is needed.

  1. Keep Mecum open. In MCP → MCP Connections…, name your client, choose its capabilities and click Add Client.
  2. Turn Enabled on and wait for Ready.
  3. Expand Client configuration and use Copy Claude Code command, Copy Codex command or Copy JSON. Prefer these generated values over the templates below.

Claude Code

claude mcp add --scope user --transport stdio mecum -- \
  "/Applications/Mecum.app/Contents/Helpers/mecum-bridge" \
  mcp-bridge --connection \
  "/Users/YOUR_USERNAME/Library/Application Support/Mecum/MCP/CLIENT_UUID.connection.json"

Codex

codex mcp add mecum -- \
  "/Applications/Mecum.app/Contents/Helpers/mecum-bridge" \
  mcp-bridge --connection \
  "/Users/YOUR_USERNAME/Library/Application Support/Mecum/MCP/CLIENT_UUID.connection.json"

These are templates. Replace YOUR_USERNAME and CLIENT_UUID with the values from Mecum, and use the generated helper path if the app is elsewhere. Keep paths quoted. Save configurations in personal settings.

Check registration with claude mcp get mecum or codex mcp list. Start a new client session and use /mcp to inspect the live connection, then run the read-only connection check.

Each connection entry accepts one active client. Create separate entries for independently running clients. Never share the contents of *.connection.json.

The full MCP guide covers other local clients, capabilities and troubleshooting. Not every client has been tested end to end. URL-only web connectors cannot use this local bridge.

What works today

Supported frameworks: AppKit, Chromium, Electron and Qt. UXP support is in development (Adobe apps).

Workers take turns controlling desktop apps. While one works, the others wait in line.

Read the compatibility and limitations guide for the current scope and how to report a workflow.

How it works

  • Driver: written in Swift, it moves app windows to a virtual display and routes the agent's input there, so you can keep working on your Mac without a virtual machine.
  • Perception: turns the current interface into structured text and refreshes it as the window changes.
  • Brain: builds a map of each app's controls, relationships and transitions, giving agents context about how the app works.
  • Memory: stores past interactions and their outcomes, so agents can draw on that experience in later tasks (still in development; recall can be inconsistent, with improvements on the way).

Driver, Perception and Engine are Swift package libraries you can use in your own macOS apps.

Mecum checks what changed after each action. You can follow the activity, review the result and stop the worker from the app.

The desktop window-to-text pipeline runs locally. A remote model can receive window text, task context and relevant app knowledge. Read Permissions & data.

Benchmarks

Mecum's full-scene responses used 85–97% fewer estimated tokens than Cua's screenshot + AX tree responses.

Driver comparison

8 runs after 1 warm-up. Times include the action and updated view.

Application / frameworkMecum supportCua supportMecum step (ms)Cua step (ms)
TextEdit (AppKit)PartialSupported1,0691,489
Chrome (Chromium)PartialSupported1,2271,590
Obsidian (Electron)SupportedSupported1,3161,513
Stocks (Mac Catalyst)UnavailableSupported—2,061
kitty (OpenGL/GLFW)PartialPartial1,1551,602
DaVinci Resolve (Qt + GPU UI)SupportedNot supported1,269—
Prism Launcher (Qt 6)SupportedNot supported1,127—
Calculator (SwiftUI)SupportedSupported1,0471,355
Safari (WebKit)PartialPartial1,2461,385

See the full report for the method and support limits.

Perception context per read

Estimated tokens in the tool response, rather than total tokens for a task with a model:

Application / frameworkMecum full readMecum unchangedCua full read
TextEdit (AppKit)3851006,185
Chrome (Chromium)9783813,986
Obsidian (Electron)738977,307
kitty (OpenGL/GLFW)142394,566
DaVinci Resolve (Qt + GPU UI)7643817,924
Prism Launcher (Qt 6)622394,157
Calculator (SwiftUI)476383,801
Safari (WebKit)9773834,002

Full read: the complete view, as structured text for Mecum or screenshot + AX tree for Cua.

Unchanged: no changes since the previous step. Mecum sends a short confirmation; Cua sends the full view again.

Test hardware: MacBook Pro with M4 (base model), 16 GB RAM, macOS 27.0.1 (26A434).

Read the method, results and per-operation data →

Contribute

We welcome help with Qt driver coverage, UXP and Flutter support, missing Perception controls, and feedback on Brain and Memory as you use apps. Start with CONTRIBUTING.md and GitHub Issues.

For questions and workflows, join Discord.

License

Apache 2.0, Copyright 2026 Forte Audio S.r.l.

ai-agents
computer-use
desktop-automation
macos
mcp
mcp-server
swift

ForteAI-Org/mecum

Let agents work in your apps while you keep using your Mac.

Swift

14

313 commits

updated Oct 7, 2026

See the code

See what people are saying

README

Mecum

Let agents work in your apps while you keep using your Mac.

Mecum gives agents a desktop workspace on your Mac. Give a worker a task in the Mecum app, or connect Claude Code or Codex through MCP to work in desktop apps, even when they expose neither an API nor an AX tree.

Download for macOS Docs Discord Follow Mecum on X

License: Apache 2.0 Swift 6.4

See Mecum in action

Get started

Mecum runs on macOS 15+, on Apple silicon and Intel. Follow the installation guide to get set up.

  1. Install and open Mecum.
  2. Create a worker, connect a supported model and grant the Mac access needed for desktop work.
  3. Start with a small task in a disposable document. Name the app, the result you want and where the agent should stop.
  4. Follow the activity and inspect the result in the app.

For your first task, ask the agent to read an open TextEdit test document and summarize it without editing or saving.

If you use Codex or Claude Code, keep their CLIs up to date to access the latest models available to your account.

To build from source with Swift 6.4, follow the developer Quickstart.

Connect Claude Code, Codex or another local MCP client

Mecum and your client must run on the same Mac. The app includes the STDIO bridge; no Node.js or Python installation is needed.

  1. Keep Mecum open. In MCP → MCP Connections…, name your client, choose its capabilities and click Add Client.
  2. Turn Enabled on and wait for Ready.
  3. Expand Client configuration and use Copy Claude Code command, Copy Codex command or Copy JSON. Prefer these generated values over the templates below.

Claude Code

claude mcp add --scope user --transport stdio mecum -- \
  "/Applications/Mecum.app/Contents/Helpers/mecum-bridge" \
  mcp-bridge --connection \
  "/Users/YOUR_USERNAME/Library/Application Support/Mecum/MCP/CLIENT_UUID.connection.json"

Codex

codex mcp add mecum -- \
  "/Applications/Mecum.app/Contents/Helpers/mecum-bridge" \
  mcp-bridge --connection \
  "/Users/YOUR_USERNAME/Library/Application Support/Mecum/MCP/CLIENT_UUID.connection.json"

These are templates. Replace YOUR_USERNAME and CLIENT_UUID with the values from Mecum, and use the generated helper path if the app is elsewhere. Keep paths quoted. Save configurations in personal settings.

Check registration with claude mcp get mecum or codex mcp list. Start a new client session and use /mcp to inspect the live connection, then run the read-only connection check.

Each connection entry accepts one active client. Create separate entries for independently running clients. Never share the contents of *.connection.json.

The full MCP guide covers other local clients, capabilities and troubleshooting. Not every client has been tested end to end. URL-only web connectors cannot use this local bridge.

What works today

Supported frameworks: AppKit, Chromium, Electron and Qt. UXP support is in development (Adobe apps).

Workers take turns controlling desktop apps. While one works, the others wait in line.

Read the compatibility and limitations guide for the current scope and how to report a workflow.

How it works

  • Driver: written in Swift, it moves app windows to a virtual display and routes the agent's input there, so you can keep working on your Mac without a virtual machine.
  • Perception: turns the current interface into structured text and refreshes it as the window changes.
  • Brain: builds a map of each app's controls, relationships and transitions, giving agents context about how the app works.
  • Memory: stores past interactions and their outcomes, so agents can draw on that experience in later tasks (still in development; recall can be inconsistent, with improvements on the way).

Driver, Perception and Engine are Swift package libraries you can use in your own macOS apps.

Mecum checks what changed after each action. You can follow the activity, review the result and stop the worker from the app.

The desktop window-to-text pipeline runs locally. A remote model can receive window text, task context and relevant app knowledge. Read Permissions & data.

Benchmarks

Mecum's full-scene responses used 85–97% fewer estimated tokens than Cua's screenshot + AX tree responses.

Driver comparison

8 runs after 1 warm-up. Times include the action and updated view.

Application / frameworkMecum supportCua supportMecum step (ms)Cua step (ms)
TextEdit (AppKit)PartialSupported1,0691,489
Chrome (Chromium)PartialSupported1,2271,590
Obsidian (Electron)SupportedSupported1,3161,513
Stocks (Mac Catalyst)UnavailableSupported—2,061
kitty (OpenGL/GLFW)PartialPartial1,1551,602
DaVinci Resolve (Qt + GPU UI)SupportedNot supported1,269—
Prism Launcher (Qt 6)SupportedNot supported1,127—
Calculator (SwiftUI)SupportedSupported1,0471,355
Safari (WebKit)PartialPartial1,2461,385

See the full report for the method and support limits.

Perception context per read

Estimated tokens in the tool response, rather than total tokens for a task with a model:

Application / frameworkMecum full readMecum unchangedCua full read
TextEdit (AppKit)3851006,185
Chrome (Chromium)9783813,986
Obsidian (Electron)738977,307
kitty (OpenGL/GLFW)142394,566
DaVinci Resolve (Qt + GPU UI)7643817,924
Prism Launcher (Qt 6)622394,157
Calculator (SwiftUI)476383,801
Safari (WebKit)9773834,002

Full read: the complete view, as structured text for Mecum or screenshot + AX tree for Cua.

Unchanged: no changes since the previous step. Mecum sends a short confirmation; Cua sends the full view again.

Test hardware: MacBook Pro with M4 (base model), 16 GB RAM, macOS 27.0.1 (26A434).

Read the method, results and per-operation data →

Contribute

We welcome help with Qt driver coverage, UXP and Flutter support, missing Perception controls, and feedback on Brain and Memory as you use apps. Start with CONTRIBUTING.md and GitHub Issues.

For questions and workflows, join Discord.

License

Apache 2.0, Copyright 2026 Forte Audio S.r.l.

ai-agents
computer-use
desktop-automation
macos
mcp
mcp-server
swift