Metadata-Version: 2.5
Name: usemymac
Version: 0.1.0
Summary: Turn your Mac into a remote computer-use host for Claude Code, Codex, or any MCP agent.
Project-URL: Homepage, https://github.com/yunfeng-enrich/usemymac
Project-URL: Repository, https://github.com/yunfeng-enrich/usemymac
Project-URL: Issues, https://github.com/yunfeng-enrich/usemymac/issues
Author: Yunfeng Bai
License-Expression: MIT
License-File: LICENSE
Keywords: agent,claude-code,codex,computer-use,macos,mcp
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.12
Requires-Dist: cua-computer-server[driver]>=0.3.45
Requires-Dist: fastmcp>=3.0
Requires-Dist: rich>=15.0.0
Requires-Dist: uvicorn>=0.30
Description-Content-Type: text/markdown

# UseMyMac

![Claude Code on one machine driving a Mac through UseMyMac](https://raw.githubusercontent.com/yunfeng-enrich/usemymac/main/demo/demo.gif)

*Left: Claude Code, anywhere. Right: a Mac running `usemymac up`. The agent reaches it only through the printed URL.*

Turn your Mac into a remote computer-use host. One command on the Mac, one paste into
Claude Code or Codex, and the agent can see your screen, click, type, and open apps.

Built on [CUA](https://github.com/trycua/cua)'s `computer-server` for the macOS driver.
UseMyMac adds the parts that make it safe to reach from outside: a bearer token, a tool
allowlist that hides shell and filesystem access by default, a Cloudflare quick tunnel,
keep-awake, and a permissions preflight.

## Quick start

```
uvx usemymac up
```

Or without uv installed:

```
curl -fsSL https://raw.githubusercontent.com/yunfeng-enrich/usemymac/main/install.sh | sh
```

Either way UseMyMac fetches cloudflared on first run and starts the server. It prints one line to paste into your agent, plus the one-line commands:

```
claude mcp add --transport http usemymac https://<host>/<token>/mcp
codex mcp add usemymac --url https://<host>/<token>/mcp
```

The token lives in the URL so no client needs custom headers. `Authorization: Bearer <token>`
against `https://<host>/mcp` works too.

## Permissions

macOS grants Screen Recording and Accessibility per app, and the app is whichever
terminal launched `usemymac`. The first run triggers both prompts. Screen Recording only
takes effect after that terminal is fully quit and reopened. Without it, screenshots
are black and window titles are empty. Check with:

```
usemymac check
```

## What is exposed

By default: screenshot, mouse, keyboard, clipboard, windows, app launch, and the
accessibility tree. Not exposed unless you ask:

- `--allow-shell` adds `computer_run_command`
- `--allow-files` adds file read, write, and delete tools

Other flags: `--no-tunnel` for LAN or SSH-forwarded use, `--width/--height` to scale
screenshots and coordinates for the model, `--port`, `--token`.

## Security

This is your real desktop on a public URL. The token is the only lock, and it is in the
URL, so treat the URL like a password. Both the hostname and the token are new on every
run, so a leaked URL stops working the moment you Ctrl-C. Keep the terminal visible while
an agent is connected. Pass `--token` only if you need a fixed one.

## Status

Spike. Works end to end on macOS 15 with Claude Code over a Cloudflare tunnel.
Not yet: signed menu bar app, persistent tunnel hostnames, per-app allowlists, Lume VM
sandbox mode.
