RepoMicrosoftMicrosoftpublished Jan 8, 2026seen 5d

microsoft/dcp

Go

Open original ↗

Captured source

source ↗
published Jan 8, 2026seen 5dcaptured 14hhttp 200method plain

microsoft/dcp

Description: Developer Control Plane API server and CLI.

Language: Go

License: MIT

Stars: 169

Forks: 14

Open issues: 41

Created: 2026-01-08T19:47:47Z

Pushed: 2026-06-10T23:12:02Z

Default branch: main

Fork: no

Archived: no

README:

Developer Control Plane

Overview

Developer Control Plane (DCP) is a local application runner for multi-service, polyglot applications. It integrates your code, emulators, and containers to give you a development environment with minimum remote dependencies and maximum ease of use.

DCP exposes a Kubernetes-compatible API (using custom resource definitions) for describing and managing workloads. Object status change notifications allow clients to monitor the state of the application as the run progresses.

DCP integrates with development tools such as Microsoft Aspire, Visual Studio, and VS Code, enabling IDE-based execution and debugging of application components.

Key Features

  • Local Multi-Service Orchestration: Run multi-service applications composed of processes and containers on your local machine
  • IDE Integration: Execute and debug application components directly from VS Code or Visual Studio
  • Kubernetes-Compatible API: Describe workloads using a language-agnostic API built on Kubernetes custom resource definitions
  • Process & Container Lifecycle Management: Automatically manage the lifecycle and cleanup of executed processes and containers
  • Network management: DCP has several facilities to help with service-to-service and service-to-container communication such as dynamic port allocation, injecting port information into services and containers via command-line arguments and environment variables, stable ports for clients of multi-replica services, isolated container networks, and a tunnel for container-to-host communication

DCP is implemented as a single binary (dcp) that can run in one of several modes depending on how it is invoked. The main modes of operation are:

  • dcp start-apiserver - runs the DCP API server that holds the workload model and exposes a Kubernetes-compatible API for managing workloads using the Tilt API server library. The API server is Kubernetes-compatible but using custom resource definitions. This is the main entry point for DCP; users or other tools such as Aspire invoke DCP in this mode to launch the API server and controllers.
  • dcp run-controllers - runs the core DCP controllers that implement the standard behavior for DCP workload models. This mode is typically invoked as a child process of the API server.
  • dcp monitor-process - monitors a given process and ensures that it's cleaned up properly when a DCP session ends. This mode is typically invoked as a child process of the controllers.
  • dcp monitor-container - monitors a given container and ensures that it's cleaned up properly when a DCP session ends. This mode is typically invoked as a child process of the controllers.
  • dcp stop-process-tree - stops a given process and all its child processes. Attempts to gracefully terminate the process tree first via signals and then forcibly terminates it if the graceful termination does not complete within a timeout.
  • dcp version - displays version information about the DCP installation.
  • dcp info - displays information about the current DCP installation and identified container runtime.

Environment variables affecting DCP behavior

DCP has knowledge of a number of environment variables that can change its behavior; they are used mostly for testing.

| Variable | Description | | --- | --------- | | DCP_EXTENSIONS_PATH | Points to directory that contains DCP extensions. By default extensions are placed in the ext sub-directory of the directory where DCP main executable is located. | | DEBUG_SESSION_PORT, DEBUG_SESSION_TOKEN, and DEBUG_SESSION_SERVER_CERTIFICATE | These are variables that configure the endpoint for running Executables via a developer IDE/under debugger. For more information see IDE execution specification. | | DCP_SESSION_FOLDER | This variable is used for isolating multiple DCP instances running concurrently on the same machine. If set (to a valid filesystem folder), DCP process(es) will create files related to their execution in this folder: the access configuration file (kubeconfig), captured Executable/Container logs, etc. | | DCP_STATE_STORE_PATH | Overrides the path to the local SQLite state store used for DCP coordination metadata such as process records and resource leases. Resource leases are owned by the leasing DCP process identity and stale leases are cleaned up on startup. If unset, DCP uses the default per-user state store under a standard or elevated subdirectory of the DCP user directory. | | DCP_LOG_SOCKET | If set to a Unix domain socket, DCP will write its execution logs to that socket instead of writing them to standard error stream (stderr). This allows programs that launch DCP to capture its output even if DCP is running in --detach mode. The --detach mode causes DCP to fork itself and break the parent-child relationship (and lifetime dependency) from the process that launched it, but the side effect of doing so is that the parent process loses ability to monitor DCP standard output and standard error streamd. | | DCP_LOG_SESSION_ID | If set, DCP will prepend this value to all diagnostics log names. If unset, a session ID will be calculated. The value is propagated to all child DCP processes. | | DCP_DIAGNOSTICS_LOG_LEVEL | If set, enabled DCP diagnostic logging. Can be set to error, info, or debug; for troubleshooting debug is recommended, although it results in the most verbose output. | | DCP_DIAGNOSTICS_LOG_FOLDER | If set to a valid filesystem folder, DCP will place the diagnostic logging files there. Otherwise (if enabled) they are written to the default temporary files folder. | | DCP_LOG_FILE_NAME_SUFFIX | Suffix to append to the log file name (defaults to process ID if not set). | | DCP_LOGGING_CONTEXT | If set, the value of this variable will be written to the log file as one of the first log messages (as verbose, "info" type of message). | | DCP_PRESERVE_EXECUTABLE_LOGS | If set (to "true", "yes", or "1"), the logs from Executables will not be deleted when DCP shuts down. This can…

Excerpt shown — open the source for the full document.

Notability

notability 5.0/10

Moderate stars from Microsoft