Skip to content
Conduit

mcp server

commandcore

Self-hosted, vendor-neutral remote computer control plane for AI/MCP clients.

bazobehram/commandcorecommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "commandcore": {
      "command": "uvx",
      "args": [
        "commandcore-server"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 23, 2026

CommandCore

CI Repository policy License: AGPL-3.0-or-later

Self-hosted remote computer control for AI and MCP clients.

CommandCore connects AI clients to one or more computers through a vendor-neutral MCP control plane. Devices make outbound connections to the server, retain their own cryptographic identity, and enforce local permission ceilings.

CommandCore is free software licensed under GNU AGPL-3.0-or-later.

Project status: 0.9 release-candidate family. Linux is the primary supported platform. Windows support is a preview. Interactive desktop control is experimental and is not yet part of the stable support promise.

Why CommandCore?

Most computer-control MCP tools focus on one client talking to one machine. CommandCore is designed as a control plane:

ChatGPT -+
Claude --+
Gemini --+
Codex ---+-- MCP + OAuth --> CommandCore -- outbound WSS --> devices
IDE/CLI -+                       |
Other ---+                       +-- identity and grants
                                +-- policy and audit
                                +-- device selection
                                +-- signed agent lifecycle

A single MCP endpoint can expose every device the authenticated account is allowed to use. Adding a device does not require adding another MCP server to each AI client.

Core properties

  • Self-hosted control plane - server, protocol, agent, and deployment tooling are in this repository.
  • Vendor-neutral MCP - the control plane does not depend on one AI provider.
  • Multi-device by design - enumerate, select, and operate authorized devices.
  • Outbound-only device transport - enrolled devices do not need inbound command ports.
  • Cryptographic device identity - each agent keeps its Ed25519 private key locally.
  • Layered authorization - OAuth scope, account-to-device grant, server profile, and device-local ceiling all restrict effective authority.
  • Privilege separation on Linux - optional FULL_CONTROL uses a separate local privileged helper rather than making the network-facing agent root.
  • Auditable operations - remote work is associated with identity, device, request, and execution metadata.
  • Managed long-running jobs - process handles and bounded output survive transport/server reconnects in the native Linux agent.
  • Signed agent releases - integrity verification, versioned installation, health validation, and rollback are first-class lifecycle concerns.

Security model

CommandCore intentionally does not treat enrollment as authorization.

effective authority =
    OAuth scope
    AND account -> device grant
    AND server permission profile
    AND device-local permission ceiling

Profiles:

ProfileMeaning
READ_ONLYInspect permitted state and files
STANDARDNormal operating-system authority of the agent user
FULL_CONTROLExplicit local privileged-helper opt-in

STANDARD shell access is powerful: it has the same authority as the operating system account running the agent. Run the agent as a dedicated unprivileged user when stronger host separation is required.

Read SECURITY.md, Security model, and Threat model before exposing a deployment to untrusted clients.

Capabilities

The current Linux implementation covers:

  • filesystem list/stat/read/write/patch/search/copy/move/delete;
  • shell execution;
  • managed processes, status, output, and cancellation;
  • system information and metrics;
  • upload/download transfer primitives;
  • Git operations;
  • device enrollment, revocation, reconnect, and key rotation;
  • OAuth-protected MCP access and explicit device grants;
  • signed agent installation/update/rollback;
  • fleet/canary rollout primitives;
  • optional privilege-separated Linux FULL_CONTROL.

Interactive screen, mouse, keyboard, clipboard, browser automation, and some platform-specific administration remain experimental or incomplete. The project does not claim support from compilation alone; see the platform matrix.

Install with an AI agent

CommandCore includes a root-level AGENTS.md with repository-specific instructions for coding and operations agents, plus a human-readable agent-assisted installation guide.

A capable agent with access to the target server can inspect the machine, prepare the deployment, start CommandCore, configure the pieces it has authority to configure, and verify the result. Account-bound steps such as DNS ownership, OAuth provider login, MFA, or permission decisions remain with the operator.

A portable starting prompt is:

Clone https://github.com/bazobehram/commandcore.git and read AGENTS.md before
making any changes.

Install a self-hosted CommandCore server on this machine and make it usable for
remote MCP clients. Preserve the documented security model: keep the internal
application port private, use HTTPS/WSS for remote access, configure OAuth/OIDC
instead of leaving public bootstrap enabled, and do not enable FULL_CONTROL
unless I explicitly request it.

Inspect the machine first. Ask me only for account-bound information you cannot
safely infer. Verify /healthz and the MCP path, perform a read-only acceptance
test when a device is enrolled, and finish with the exact public URL, MCP URL,
Agent URL, OAuth status, permission ceiling, tests performed, rollback path, and
remaining manual steps.

AGENTS.md is a repository convention used by many coding agents, not a part of the MCP protocol itself. Agents that do not load it automatically should be explicitly told to read it first.

Quick start

Choose two roles: the server hosts the panel, identity/grants, and MCP endpoint; an agent runs on each computer you want to manage. They can share one Linux machine. Running the server alone does not enroll or give control of that machine.

The source checkout is suitable for technical Linux operators. Remote setup also requires HTTPS/WSS and an OAuth/OIDC provider. The signed agent installer needs a separately published release feed; it is not enabled by the default Compose file. See the installation readiness review before choosing a platform or promising an unattended installation.

1. Run CommandCore

Requirements: Docker with Compose.

git clone https://github.com/bazobehram/commandcore.git
cd commandcore
cp .env.example .env

# Generate two different secrets and place them in .env:
./scripts/generate-secret.sh   # COMMANDCORE_API_TOKEN
./scripts/generate-secret.sh   # COMMANDCORE_PANEL_SESSION_SECRET

# Set the deployment URLs in .env, then:
docker compose up -d --build
docker compose ps
curl -fsS http://127.0.0.1:8787/healthz

The public example binds the application port to 127.0.0.1. Public bootstrap and recovery are disabled by default. For a loopback-only first-time onboarding window, an operator may deliberately enable bootstrap, configure OAuth/OIDC, test it, and disable bootstrap again before normal remote operation.

For internet-facing deployments, use HTTPS/WSS behind a reverse proxy and configure an external OAuth/OIDC provider. See Self-hosting, Deployment, and OAuth/MCP.

2. Install an agent

A deployment can publish its signed Linux installer at its own CommandCore URL:

curl -fsSL https://commandcore.example.com/install/linux | sh -s -- --server https://commandcore.example.com

The installer verifies the signed release manifest and artifact, creates a versioned user installation, configures a systemd user service, and opens the device-enrollment flow. Replace commandcore.example.com with your deployment.

First confirm the operator has published the signed feed and pinned installer. A fresh default server returns 404 for /install/linux. Operators should follow release-feed setup; technical evaluators can use the source agent workflow.

See Installation for upgrade, rollback, uninstall, and advanced installation details.

3. Connect an MCP client

Use the deployment MCP endpoint:

https://commandcore.example.com/mcp

Then authenticate with the configured OAuth/OIDC provider and grant only the devices and scopes the client needs.

Client guides:

Client product capabilities change independently of CommandCore. Each guide distinguishes protocol support from live acceptance evidence.

Platform status

PlatformStatusNotes
Linux x86_64Supported candidatePython reference + native Rust agent
Linux ARM64Supported candidateNative Rust agent
WindowsPreviewCore enrollment/runtime work exists; release gates remain
macOSPlannedNo supported agent release yet
Interactive desktopExperimentalNot part of stable support promise

CommandCore and Desktop Commander

CommandCore is not a fork of Desktop Commander. The projects solve overlapping but different problems: Desktop Commander has a mature local computer-tool surface, while CommandCore focuses on a self-hosted, multi-device remote control plane with explicit identity, grants, policy, and agent lifecycle.

The comparison is intentionally factual rather than adversarial. See CommandCore and Desktop Commander.

Documentation

Start with the documentation index. Important references:

Contributing

Contributions are welcome. Before opening a pull request, read CONTRIBUTING.md.

The project uses review-first development:

  • changes arrive through pull requests;
  • CI must pass;
  • security-boundary changes require explicit security review;
  • protocol changes require compatibility notes and tests;
  • claims about platform support require real acceptance evidence;
  • commits must carry a Signed-off-by line under the Developer Certificate of Origin policy described in CONTRIBUTING.md.

Sensitive vulnerabilities must not be reported in public issues. Follow SECURITY.md.

License

CommandCore is licensed under the GNU Affero General Public License, version 3 or later.

If you modify CommandCore and make the modified program available to users over a network, review the AGPL source-availability requirements that apply to that use. Third-party dependencies retain their own licenses; see THIRD_PARTY_NOTICES.md and dependency licensing.

↑↓ navigate openesc close