Skip to content

mini: let cloud agents use the Mac mini over MCP at mini-mcp.jgoon.com - #61

Merged
Jish2 merged 1 commit into
mainfrom
feat/desktop-commander-mcp
Nov 10, 2026
Merged

Jish2 merged 1 commit into
mainfrom
feat/desktop-commander-mcp

Conversation

@Jish2

@Jish2 Jish2 commented Nov 9, 2026 •

Copy link
Copy Markdown
Owner

I want my cloud agents (Meta Muse, the Grok bot) to reach mini over MCP — remindctl, imsg, my files — without opening a shell to the whole internet.

fleet.desktopCommander runs Desktop Commander behind a small proxy (proxy.mjs) on 127.0.0.1:7801, published at mini-mcp.jgoon.com by its own tunnel (terraform: https://github.com/Jish2/terraform/pull/21). The proxy:

  • re-verifies the Cloudflare Access JWT (audience, issuer, expiry, signature), so the port is useless without Access in front;
  • exposes an allowlist of 17 tools — shell sessions, files, search. Hidden: set_config_value/get_config (an agent could clear its own limits), kill_process, write_pdf, and DC's usage/feedback tools;
  • logs each call with the calling service token.

DC is the npm release, built with buildNpmPackage from the tag's lockfile with install scripts off (no install-tracking ping, no Chromium/ripgrep downloads); telemetry and remote feature flags are off.

The proxy is a LaunchAgent: imsg and remindctl need the login session (Messages automation, Reminders and Full Disk Access are per-session TCC), so it runs while I'm logged in, like BlueBubbles. The connector is a LaunchDaemon on a separate tunnel from cloudflared-ssh, so the ssh lifeline is untouched.

Also: make doctor checks, a FLEET.md section, and steipete/tap/remindctl declared (already installed by hand).

Tested on mini against the built package: no JWT, wrong audience and expired JWTs get 401; tools/list returns only the allowlist; set_config_value is refused; start_process runs commands. darwinConfigurations.mini.system builds.

After merge: yadm pull, switch mini via the remote procedure, then grant Reminders / Automation → Messages / Full Disk Access to the nix node in a GUI session.

Created with Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code

fleet.desktopCommander runs Desktop Commander (npm release, nix-built
without install scripts) behind proxy.mjs on 127.0.0.1:7801, which
re-verifies the Cloudflare Access JWT and exposes only an allowlist of
tools (no set_config_value). Proxy is a LaunchAgent (Messages/Reminders
need the login session); the connector is a LaunchDaemon on its own
tunnel, apart from the ssh lifeline. Adds make doctor checks, a FLEET.md
section, and declares remindctl.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@claude

claude Bot commented Nov 9, 2026

Copy link
Copy Markdown

Claude review: no issues found

Read the full diff (nix module, proxy.mjs JWT verification and tool allowlist, Makefile doctor checks, FLEET.md, host wiring) for bugs and CLAUDE.md compliance; no earlier review comments existed.

Not approved: this change exposes a remote shell to the internet, and I can't verify the nix fetch hashes or the Access/TCC setup here, so I wouldn't be comfortable with it merging without a human reading it.

@Jish2
Jish2 merged commit f1179b9 into main Nov 10, 2026
2 checks passed
@Jish2
Jish2 deleted the feat/desktop-commander-mcp branch November 10, 2026 00:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant