Remote Coding Runtime
Provides Git repository inspection tools (git_status and git_diff) for workspaces, allowing clients to review repository status and changes with bounded output.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Remote Coding RuntimeCheck the git state in workspace zero and show uncommitted changes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Runmesh issource-available under the PolyForm Noncommercial License 1.0.0, not an OSI-approved open-source license. Commercial use requires separate written authorization; see COMMERCIAL_LICENSE.md.
shell is a host-shell capability, not a sandbox. Commands can access files, network resources, environment variables, credentials, and processes available to the Runner service identity. Use a restricted VM or container for untrusted code, and do not give a Runner more authority than necessary.
What Runmesh does
Runmesh lets an MCP client use approved workspaces on one or more machines while keeping the execution machines private:
Cloudflare Worker is the public control plane and MCP HTTP endpoint.
RegistryDO stores authentication, Runner and Workspace records, policy state, client selection, and bounded Job metadata.
RunnerDO maintains the authenticated outbound WebSocket bridge for a Runner. It coordinates messages but does not execute commands or access files.
Runner is the local service that performs approved filesystem, Git, shell, and persistent Job operations.
Runmesh does not call an AI or model service API. Your MCP client remains responsible for reasoning. A disconnected browser, chat, MCP request, or Runner WebSocket does not stop a persistent Job that has already started.
Related MCP server: cloud-to-local
Using an existing Runmesh deployment
If an administrator has given you an MCP connection URL, you do not need Node.js, npm, Wrangler, a Cloudflare account, or this repository. Configure the exact URL in an MCP-compatible client such as ChatGPT, Claude, Cursor, or another client that supports Streamable HTTP:
https://your-runmesh-host.example/<one-time-secret>/mcpThe URL is a credential. It is shown only when an administrator creates or rotates the MCP Client. Do not paste it into source control, screenshots, issue reports, analytics, or public chat. Do not add it to shell commands or configuration that will be shared with others. This self-hosted authentication flow does not require an OAuth callback or an additional Bearer token.
First use
Call
runner_listto see the Runners that the administrator has made available to this MCP Client.If more than one Runner is available, call
runner_select({"runner_id":"..."}). Switching an existing selection requiresconfirm_switch: true.Call
runner_currentto confirm the sticky selection, then callworkspace_listto see readable Workspace IDs.Use
readfor files,inspectfor bounded read-only inspection,editwhen your Client and Workspace have write permission, andshellonly when host execution is explicitly permitted.Use
jobto list Jobs, read paginated output, send input, or cancel a Job when your permissions allow it.
A selection belongs to the MCP Client and remains sticky across requests. If exactly one Runner is available, the service may select it automatically. Runmesh does not silently fail over from a selected offline, stale, revoked, or unavailable Runner; select another Runner explicitly when appropriate.
Administrators—not MCP Clients—define Workspace roots and permissions. If the required Runner or Workspace is not listed, ask the administrator to review the deployment rather than trying to work around the restriction.
Why Runmesh
Capability | What it means for users |
One control plane | A single MCP endpoint can route to approved Runners and Workspaces. |
Outbound-only Runner | The execution machine initiates the connection; it does not need a public inbound port, SSH server, tunnel, or public IPv4 address. |
Explicit Workspace policy | Administrators approve roots and permissions centrally. A policy must be validated and acknowledged before it becomes active. |
Persistent Jobs | Long-running commands continue after the MCP request or WebSocket disconnects and expose bounded, UTF-8-safe output pages. |
Defense in depth | Worker, Durable Object, and local Runner boundaries independently check identity, policy revisions, paths, permissions, and message sizes. |
No model lock-in | Runmesh does not require a particular AI provider or call a model API. |
Architecture
flowchart LR
Client["ChatGPT / Claude / Cursor<br/>MCP client"] -->|HTTPS · secret URL| Worker["Cloudflare Worker<br/>Admin UI · MCP · routing"]
Worker --> Registry[("RegistryDO<br/>SQLite metadata · policy · bounded Job snapshots")]
Worker --> RunnerDO["RunnerDO<br/>WebSocket bridge"]
RunnerDO -->|outbound WSS| Runner["Runmesh Runner<br/>local service"]
Runner --> Workspace["Approved Workspaces<br/>filesystem · Git"]
Runner --> Jobs["Persistent Jobs<br/>stdout/stderr · recovery"]
classDef edge fill:#e8f3ff,stroke:#2563eb,color:#111827
classDef control fill:#fff7ed,stroke:#ea580c,color:#111827
classDef local fill:#ecfdf5,stroke:#059669,color:#111827
class Client edge
class Worker,Registry,RunnerDO control
class Runner,Workspace,Jobs localThe Worker resolves the MCP Client's active Runner and checks effective permissions before forwarding a protected request. RunnerDO checks the current Registry policy revision and connection generation. The local Runner checks the policy again before touching the host.
MCP tools
The default public catalog contains nine tools:
Tool | Required scope | Purpose |
|
| List safe Runner IDs, display names, connection state, and availability. |
|
| Show this MCP Client's sticky Runner selection. |
|
| Select a Runner; switching requires |
|
| List readable Workspace IDs without exposing roots. |
|
| Perform bounded |
|
| Read a Workspace-relative file with UTF-8-safe pagination. |
|
| Apply a baseline-checked transactional multi-file patch. |
|
| Start a persistent host-shell Job through the Runner's Bash or PowerShell runtime. |
| Depends on operation | List Jobs, inspect metadata, read logs, send input, or cancel Jobs. |
Runner RPC names such as fs.*, exec.*, job.*, git.*, and env.* are private transport capabilities. They are not additional public MCP tools and are not advertised by tools/list.
Permissions
Effective access is the intersection of:
MCP Client scopes
∩ Client × Runner restriction
∩ Runner policy
∩ Workspace policyA Client×Runner restriction can only reduce access. It cannot grant a scope that the MCP Client does not already have. Permission dependencies are normalized consistently: edit requires read; shell requires read, edit, and job_control; job_control allows control of existing Jobs without granting shell access.
While a central policy is pending, rejected, invalid, offline-pending, or revision-mismatched, ordinary operations fail closed with a structured policy_pending or permission_denied result. Existing Jobs continue by default when permissions are tightened; an administrator must explicitly request termination if running Jobs should be stopped.
Files and inspection
Paths are Workspace-relative. Absolute paths, drive paths, UNC/device paths, NUL bytes, traversal, symlink escapes, and writes through symlinks are rejected.
readand Job logs use bounded UTF-8-safe cursors so multibyte text can be reconstructed page by page without replacement characters.editsupports Add, Update, Delete, and Move patches with expected-hash/baseline checks, staging, atomic replacement where available, rollback, and bounded structured results.inspectis read-only and bounded by result count, bytes, depth, and operation timeout. It does not return local root paths.
Shell and Jobs
shell always creates a persistent Job. A background request returns promptly; a foreground request waits only within a bounded budget and returns a job_id when more work remains. The current local foreground budget is 8 seconds and the Worker-to-Runner bridge budget is 12 seconds.
A Workspace identifies the initial working directory, policy, and audit context. It is not a shell root: a command may change directory and access anything permitted to the Runner service identity. Use an external sandbox or VM for untrusted execution.
Public Job metadata is redacted. RegistryDO retains bounded history so a Client can discover retained Jobs while the selected Runner is offline; complete stdout/stderr remains on the Runner and is read through pagination. When retention limits discard output, the Job reports output_truncated: true rather than consuming unlimited local disk.
Self-hosting for administrators
This section is for the person deploying and operating a Runmesh instance. It is not required when you are only configuring an MCP Client URL.
Deploy the control plane
The current implementation uses one Worker with SQLite-backed Durable Objects. It does not require D1, R2, Queues, Sandbox, Containers, a public Runner HTTP server, a tunnel, an inbound SSH service, OAuth, or a model provider. Account quotas and production behavior still depend on the Cloudflare account and plan; local validation is not proof of production capacity.
From a source checkout, the maintainer can run the local checks:
npm ci
npm run check:versions
npm run typecheck
npm run test:unit
npm run test:e2e
npm run build
npm run validate:worker
npm run pack:smoke
npm run check:licensesnpm run validate:worker is a Wrangler dry-run. It does not deploy, test production Durable Object migrations, prove edge-log redaction, or verify external Internet clients.
Before making the instance publicly reachable, configure these four Worker secrets and set the non-secret RUNMESH_PUBLIC_ORIGIN in the target Wrangler vars configuration before running the deploy command. It must be a canonical external HTTPS origin such as https://mcp.example.com; do not commit or enable RUNMESH_SIGNED_RELEASE_AVAILABLE unless the exact signed release has first been published and independently verified (the release gate is described below).
cd apps/worker
npm exec --offline -- wrangler secret put ADMIN_TOKEN --env production
npm exec --offline -- wrangler secret put SETUP_TOKEN --env production # or configure SETUP_TOKEN_HASH instead
npm exec --offline -- wrangler secret put RUNNER_TOKEN_PEPPER --env production
npm exec --offline -- wrangler secret put INTERNAL_CONTROL_SECRET --env production
npm exec --offline -- wrangler deploy --config wrangler.jsonc --env productionRUNMESH_PUBLIC_ORIGIN must have no path, query, fragment, credentials, whitespace, wildcard, or http:// scheme. A missing/invalid value keeps hosted bootstrap disabled; with it configured, installer rendering and browser/Admin POSTs reject a mismatched Host rather than embedding an attacker-controlled origin. The checked-in production environment is configured for https://runmesh.aloneio.workers.dev and the independently verified fixed v0.1.0-dev.2 release; the gates take effect after that environment is deployed. Forks or alternate hostnames must replace that origin and repeat the release verification before deploying. Local development uses the default environment and remains fail-closed.
The first administrator setup requires the configured SETUP_TOKEN or the SHA-256 verifier in SETUP_TOKEN_HASH; the setup token is never stored in RegistryDO or displayed by the dashboard. First setup is atomic and first-success-wins, so an uninitialized public instance must be protected by deployment access controls until the intended administrator completes setup. ADMIN_TOKEN is only for the manual/programmatic Runner administration API. It is not an administrator-password replacement, browser cookie, MCP credential, or Runner enrollment code.
Open the deployed root URL, set the administrator password with the setup token, and sign in. The dashboard then provides the normal flows to create and manage Runners, generate one-time enrollment codes, define managed Workspaces, review policy status, create MCP Clients, and rotate or revoke credentials.
Cloudflare Workers Builds (GitHub and GitLab)
The GitHub and GitLab repositories are connected directly to the runmesh Worker through Cloudflare Workers Builds. Cloudflare performs the build and deployment with its managed connection; GitHub Actions and GitLab CI in this repository run the same verification suite and do not need CLOUDFLARE_API_TOKEN or CLOUDFLARE_ACCOUNT_ID variables.
For each Cloudflare repository connection, select the dev production branch, keep the repository root as the build root, and set the deploy command to:
npm exec --offline -- wrangler deploy --config apps/worker/wrangler.jsonc --env production --strictThe --env production flag is required so the canonical origin and signed-release gate in the checked-in production environment are deployed. Keep the four Worker runtime secrets in Cloudflare Variables & Secrets; never put them in GitLab/GitHub CI variables or source control. Review the exact commit, Worker name, Durable Object migration changes, and recovery plan before changing either Cloudflare connection.
Runner onboarding
The dashboard-generated enrollment code is short-lived, single-use, and invalidated when regenerated or redeemed. The Runner connects outward to the Worker over authenticated WebSocket; it does not expose an HTTP server.
Hosted bootstrap is implemented as a fixed signed-preview mechanism. The default/local environment remains disabled, while the checked-in production environment enables it only after the exact immutable release and canonical origin gates have been verified. /runner/releases/latest and /runner/releases/stable return distributable: false until both RUNMESH_PUBLIC_ORIGIN and the exact RUNMESH_SIGNED_RELEASE_AVAILABLE=0.1.0-dev.2 acknowledgement are valid. The release flag is an equality acknowledgement, not a URL/package/version source, and setting it alone never enables distribution. The enabled installer pins the version, GitHub release URLs, key ID, and Ed25519 public key; it verifies manifest/signature/descriptor/artifact size/SHA-256 before a scripts-disabled local-tarball install. It never trusts a downloaded keyring, an npm spec, latest, or arbitrary URL. The Admin page's copied command contains no code; it prompts locally after verification and sends it only with coding-runner enroll --code-stdin. The HTTPS Worker script is the one-command bootstrap trust root and cannot detect a compromised Worker response itself; use the independent portable Runner verification and installation procedure for high-assurance installation.
Fresh enrollment starts with zero Workspaces. Workspace roots are added explicitly by an administrator through the dashboard and delivered privately to the selected Runner as policy data. Re-enrollment changes connection credentials without inventing a Workspace from the current directory. Browser Emergency Lock requires typing the Runner ID and locks future policy permissions without automatically stopping existing Jobs.
Credentials and security
MCP Client URLs contain high-entropy path credentials and are displayed only at creation or rotation. Rotate or revoke them immediately if exposed.
Runner enrollment codes are verifier-only, time-limited, and single-use. Runner credential rotation/revocation invalidates old credentials and closes the current connection.
The administrator password is stored as a salted PBKDF2-HMAC-SHA-256 verifier. Browser sessions are opaque, HttpOnly, Secure, and SameSite cookies.
Internal Worker-to-Durable-Object requests use versioned HMAC bound to the method, full path/query, timestamp, nonce, and body digest. Replayed or expired requests are rejected.
Absolute Workspace roots are private control-plane policy data. They are not returned to MCP Clients, public endpoints, ordinary logs, or errors.
A Runner running as root, Administrator, or another powerful service identity still has that host authority. Runmesh policy is not an operating-system sandbox.
Not included in v0.1.0-dev.2
This development preview includes policy-gated workspace access, sticky Runner selection, persistent local Jobs, offline Registry snapshots, authenticated Runner transport, MCP Client base-scope editing, and a disabled-by-default fixed signed hosted-bootstrap implementation. Automatic Runner update/rollback, SBOM publication, Reset runtime, enterprise multi-tenancy, and real-host macOS/Windows service E2E remain roadmap candidates rather than compatibility commitments.
Before operational use, administrators should validate the target deployment and host:
Cloudflare account quotas, CPU limits, Durable Object migrations, hibernation/restart behavior, and edge-log redaction;
external MCP client behavior and infrastructure handling of secret-bearing URL paths;
manual verified-portable-artifact installation and service provisioning on the target OS;
native service lifecycle and least-privilege behavior on macOS and Windows;
fixed-release signature/artifact verification, the Worker bootstrap trust boundary, and their own recovery procedures.
Hosted bootstrap is disabled by default unless the exact fixed signed release has been published, independently verified, a canonical RUNMESH_PUBLIC_ORIGIN has been configured, and the exact release acknowledgement has been explicitly set in the Worker deployment. Use a manually verified portable artifact until then; automatic Runner update/download/data downgrade/rollback remains outside this preview.
Runmesh is not an operating-system sandbox, and this preview does not include tenant isolation, automatic failover, inbound SSH, a public Runner HTTP server, a hosted IDE, billing, Teams/organizations, MCP Tasks, PTY/Web Terminal, browser automation, an AI agent, RAG, or a model gateway. Those exclusions describe the current preview scope, not a permanent compatibility commitment.
Documentation
Portable Runner installation — trusted-key verification, SHA-256 checks, local
.tgzinstallation, and version confirmation.Deployment — administrator setup, Worker secrets, Runner enrollment, and migration cautions.
Security — credentials, host-shell risk, policy enforcement, and threat boundaries.
Architecture — components, trust boundaries, and data flow.
Runner transport — outbound WebSocket, protocol versions, heartbeat, sync, and Jobs.
Protocol — typed wire messages, policy revisions, checksums, and limits.
Migration — additive schema changes, legacy profiles, and rollback precautions.
.github/SECURITY.md — vulnerability reporting.
.github/CONTRIBUTING.md — complete contribution terms and process.
License and community
Runmesh is source-available under the PolyForm Noncommercial License 1.0.0. It is not OSI-approved open-source software. Commercial use or additional rights require a separate written agreement; see COMMERCIAL_LICENSE.md.
Community contributions are welcome. See .github/CONTRIBUTING.md for the complete contribution terms and process. See NOTICE and THIRD_PARTY_NOTICES.md for notices, docs/legal/TRADEMARKS.md for name/logo guidance, and .github/SECURITY.md for security reports.
Runmesh is an independent implementation. Design research considered coding-tools-mcp, volter-tunnel, agent-mcp-gateway, and official Cloudflare/MCP documentation. These are research acknowledgements only; no referenced source or asset is claimed as included.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Cloudflare Workers MCP server: agent-workflow-engine
One PAT, any MCP agent: Vercel, GitHub, Cloudflare, Supabase, GCP — unified dev infra gateway.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables remote MCP clients to access local filesystem and shell commands by deploying a Cloudflare Worker relay and a local daemon, providing tools like read/write files, exec commands, git status, etc.8031MIT
- AlicenseNot gradedqualityAmaintenanceEnables cloud agents to securely operate local machine resources (files, commands, screenshots) via standard MCP protocol.MIT

SIN Mac Gatewayofficial
AlicenseNot gradedqualityCmaintenanceEnables remote MCP clients to securely access a trusted macOS machine's local file system and command execution tools (mcp-combiner) via OAuth-authenticated HTTPS through Cloudflare Tunnel, without opening router ports.MIT- AlicenseNot gradedqualityCmaintenanceEnables any MCP client to read, search, patch, and execute commands in a codebase, including interactive sessions and git operations, with permission modes and safety boundaries.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aloneio/runmesh'
If you have feedback or need assistance with the MCP directory API, please join our Discord server