UTM Monitor (utmm) lets you — and your AI agents — check processes,
read logs, run commands and transfer files on any Linux, macOS or Windows box.
One Zig binary, no SSH daemon, no runtime dependencies.
Everything a debugging session needs, packed into one static binary that installs itself and supervises itself.
Per-command pty on the target, output streamed back in real time. Exit code embedded as a marker — no timeout, no truncation.
Upload & download over direct TCP streaming with end-to-end SHA256 verification and atomic rename on write.
Host is the central proxy on :2121. Reach any Guest's services from the Host — no SSH tunnels, no port mapping.
Non-interactive SSH password auth, 100% CLI-compatible with standalone sshpass. POSIX PTY + Windows ConPTY.
Guests auto-discover the Host via LSA broadcast over UDP and keep /etc/hosts in sync automatically.
AI agents drive machines via JSON-RPC POST to :2121. First-byte dispatch shares one port with SOCKS5.
--install is a single atomic operation: stop → kill → copy to canonical path → install service → start.
A lightweight daemon manages utmm's lifecycle via shared memory: heartbeats, crash recovery with backoff, atomic upgrades.
utmm --mcp prints the HTTP endpoint and ensures the Host daemon is running.
Every response carries both human-readable content[0].text and machine-readable
structuredContent — agents parse JSON, not markdown.
| Tool | What it does | structuredContent |
|---|---|---|
| status | List all nodes: hostname, role, IP, OS/arch, MAC, version, status, shell, ConPTY | guests[], counts{total, serving, offline} |
| exec | Execute a shell command on any Guest via per-command pty | vm, command, exit_code |
| ping | Ping a Guest over the mesh network and measure RTT | vm, reachable, mac, rtt_ms |
| upload | Upload file Host → Guest (TCP/SOCKS5, SHA256 verified) | vm, local_path, remote_path, success |
| download | Download file Guest → Host (TCP/SOCKS5, SHA256 verified) | vm, remote_path, local_path, bytes, success |
| sshpass | Non-interactive SSH password auth — direct shell access to any machine | host, user, exit_code |
| manual | Return the full reference manual (embedded at compile time) | — |
Things your agent can now handle: "linuxvm just crashed — grab the system logs and core dump, find the root cause" · "push the new build to all machines and run the test suite" · "this binary works on Linux but panics on Windows — run it on both and compare". Full protocol reference in the Manual.
Download utmm.zip from
Releases,
pick your platform's binary, and install. That's the whole setup.
Hub-and-spoke: one Host, many Guests, everything on port 2121. TCP handles SOCKS5 + frame protocol + HTTP MCP (first-byte dispatch); UDP handles LSA mesh discovery.
┌── HTTP MCP ← AI Agent (POST to :2121) Guest (macvm) ──TCP──┐ Guest (linuxvm) ──TCP──┤──→ Host TCP :2121 ──┼── CLI (IPC) Guest (windows) ──TCP──┘ (SOCKS5 + HTTP MCP │ via first-byte) Guest ←── LSA broadcast (UDP :2121) ──┘ (auto-discovery + topology) Every node's TCP :2121 is a SOCKS5 endpoint. Guests route through the Host (gateway:2121); the Host chain-forwards between Guests. Third-party tools use any node as a proxy to reach any other node.
Every release ships all eight binaries, cross-compiled with
zig build cross and packaged as
utmm.zip.