Desktop Monkey
Your machines, one troop. A Desktop Commander–parity remote MCP plus a device mesh that pools compute, GPU, RAM and disk across the PCs and laptops you own.
Status: under construction — see docs/DONE-CONTRACT.json for the
machine-checkable list of what "finished" means and docs/STATUS.md for the live
done/asked count.
What it is
- Commander layer — 100% tool-surface and service parity with
Desktop Commander Remote MCP: every MCP tool, plus the
hosted pieces (device enrolment, tunnel, per-client OAuth, usage metering, tool-call log,
revoke/share, settings). Parity is tracked in
docs/parity/. - Troop mesh — concurrent coordination of several machines: primary + support, several
supports, rings and chains. Work is split so that no single machine has to carry the compute,
GPU memory, RAM or disk. See
docs/ARCHITECTURE.md. - Hooks — an improved, typed, auditable hook engine (lessons from Claude Code, Codex and Cursor hooks) that also fires on mesh events.
- Monkey Monitor entry point — the local GTK app
(
monkey-projects/monkey-monitor) is the local front door; Desktop Monkey shares its colour tokens and logo.
Layout
One Python package, src/desktop_monkey/ (the earlier packages/ / services/ / apps/ split was
never built):
| Path | Purpose |
|---|---|
src/desktop_monkey/protocol |
MCP tool schemas + mesh wire messages |
src/desktop_monkey/commander |
Desktop Commander–parity MCP server |
src/desktop_monkey/agent |
Per-device daemon |
src/desktop_monkey/mesh |
Mesh scheduling, placement and pooling |
src/desktop_monkey/relay |
Control plane + tunnel (deployed on Railway) |
src/desktop_monkey/hooks |
Hook engine and adapters |
src/desktop_monkey/learning |
Learning experiments |
src/desktop_monkey/monitor |
Monkey Monitor integration |
src/desktop_monkey/security |
Security helpers |
src/desktop_monkey/theme, theme/ |
Colour + logo tokens shared with Monkey Monitor |
tests/ |
Test suite |
deploy/ |
targets.json (pinned IDs) + guard.py (deploy isolation check) |
scripts/ |
Dev and operator scripts (connect_relay_db.sh, …) |
supabase/migrations/ |
Mesh schema on supabase-monkey-one (public.mesh_*, RLS on) |
docs/ |
Vision, architecture, ADRs, parity matrix, research |
Live hub
The mesh relay is deployed on Railway as the central hub. This section lists its endpoints;
current health is in docs/STATUS.md.
| Public URL | https://relay-production-ef48.up.railway.app |
| Health | GET /health → {"status":"ok"} |
| MCP endpoint | POST /mcp (OAuth 2.1 bearer token, PKCE S256; 401 without token) |
| Device mesh tunnel | wss://relay-production-ef48.up.railway.app/tunnel |
| OAuth discovery | /.well-known/oauth-authorization-server (issuer = public URL) |
| JWKS | /.well-known/jwks.json (ES256) |
| Device enrolment | /device/start → /device/poll → /device/verify (device-code flow) |
| Device API | /api/devices (pause / resume / revoke) |
Devices and MCP clients connect to the public URL above; RELAY_PUBLIC_URL is set
on the Railway relay service so the OAuth issuer matches. The image is built from
the repo Dockerfile (pip install '.[relay]'), which pins the relay extras the
platform builder would otherwise skip.
Rules of the road
Read AGENTS.md before touching anything — especially the deploy-isolation rules.
Metadata
Release files for desktop-monkey 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| desktop_monkey-0.1.2.tar.gz | 1.3 MB | Without provenance | Details for desktop_monkey-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| desktop_monkey-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for desktop_monkey-0.1.2-py3-none-any.whl |
Total release size: 2.1 MB
Release files / desktop_monkey-0.1.2.tar.gz
| Download URL | desktop_monkey-0.1.2.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
286de5b5665ac2cddff349497ca2fe09ce255f748a03207a7e3a097209ee37dc
|
|
BLAKE2b-256 checksum How to use checksums |
530570b2aff7e2c882028746401e1b179fa688501022f1d2fcb882829257dca3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / desktop_monkey-0.1.2-py3-none-any.whl
| Download URL | desktop_monkey-0.1.2-py3-none-any.whl |
|---|---|
| Size | 830.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eb1545f377f5c97e063e7763c545cbdf8e16de194cd05a7b7c3aa49b229b8def
|
|
BLAKE2b-256 checksum How to use checksums |
53f9ef38a7bb62d687c06971731e1830aa3b759e28e7004bebb3d071226973ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for desktop-monkey 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.