Deployment

This guide describes the production shape of a CommandCore deployment. It does not prescribe a particular cloud, reverse proxy, DNS provider, or OAuth vendor.

Components

Server deployment

Run the server behind a reverse proxy and expose one canonical HTTPS origin:

https://commandcore.example.com

Recommended public paths:

/        operator UI
/mcp     remote MCP
/agent   Agent WebSocket

Keep the internal application listener private.

Configuration

Start from .env.example and replace every placeholder. Generate new credentials for each deployment. Never reuse example, test, or repository credentials.

Production configuration should explicitly define:

Reverse proxy requirements

The proxy must support:

Test reconnect behavior after proxy and server restarts.

Agents

Install Agents under a normal operating-system account by default. Enrollment creates a device identity; operator approval and an account grant are separate steps.

Start with READ_ONLY or STANDARD. FULL_CONTROL requires explicit local configuration and should never be enabled merely to simplify onboarding.

Database migration

Server startup applies numbered migrations. Before upgrading:

  1. create a verified SQLite backup;
  2. record the currently deployed application version;
  3. retain the previous application artifact/image;
  4. apply the upgrade;
  5. run health and MCP acceptance;
  6. roll back the application if acceptance fails.

Database downgrade migrations are not assumed to exist.

Release and update trust

Agent release manifests and artifacts are signed. The release private key must not live on the internet-facing control plane or Agent.

A device may participate in remote update/fleet rollout only after local policy pins the trusted release public key and allowed manifest origin.

Production acceptance

Before calling a deployment production-ready, verify:

FULL_CONTROL, desktop input, package management, reboot, and shutdown require separate explicit acceptance.