Skip to content

Local Setup

Learn how to set up and run DCM on your local machine.

Prerequisites

  • Podman and podman-compose installed
  • Go (for building the CLI)
  • (Optional) A Kubernetes cluster with KubeVirt for the kubevirt-service-provider

Quick Start

Clone the control-plane repository, prepare the environment file, and start the core platform (postgres, nats, control-plane, and dcm-ui):

git clone https://github.com/dcm-project/control-plane.git
cd control-plane/deploy
cp .env.example .env

To use the m2 release images, add the following to your .env file:

CONTROL_PLANE_VERSION=m2
ENVIRONMENT_AGENT_VERSION=m2
DCM_UI_VERSION=m2

Then start the stack:

podman-compose up -d

The control-plane API is available at http://localhost:8080. The DCM UI is at http://localhost:7007.

Authentication is disabled by default on this stack. To require login and JWT bearer tokens, see Authentication.

Running with the KubeVirt Service Provider

The kubevirt-service-provider is behind a compose profile and does not start by default. To include it, set the required environment variables and activate the kubevirt profile:

export KUBERNETES_NAMESPACE=vms
export KUBEVIRT_KUBECONFIG="/path/to/kubeconfig"
podman-compose --profile kubevirt up -d

Note: The namespace set in KUBERNETES_NAMESPACE must already exist in your Kubernetes cluster.

Verifying the Deployment

Check that all services are running:

podman-compose ps

Check the health endpoint:

curl http://localhost:8080/api/v1alpha1/health

If you deployed with the KubeVirt provider, you can also list registered environment agents (when authentication is disabled):

curl http://localhost:8080/api/v1alpha1/agents

When authentication is enabled, add Authorization: Bearer <token> to API calls. See Authentication.

Note: This is the control plane’s own auth for the /agents endpoint. The environment agent process itself has separate, independent authentication for its own API and for its calls back to the control plane — see Environment Agent Authentication.

Setting Up the CLI

The DCM CLI (dcm) lets you interact with the DCM control plane from the command line. Clone the cli repository and build the binary:

git clone https://github.com/dcm-project/cli.git
cd cli
make build

The binary will be available at bin/dcm. You can move it to a directory in your PATH:

sudo cp bin/dcm /usr/local/bin/

By default, the CLI connects to the control plane at http://localhost:8080. You can verify it’s working with:

dcm version