Overview
dfxd is the long-running daemon of the dfx project.
Its primary job is to supervise and manage one or more dfx instances on the local machine. It provides a stable control plane so that instances can be created, started, stopped, queried, and reconfigured without tying that responsibility to a single interactive dfx process.
Responsibilities
dfxd typically provides:
- instance lifecycle management (create/start/stop/kill/remove),
- process supervision (spawn and monitor dfx instances),
- control interface for external tools (primarily dfx-ctl),
- centralized configuration for daemon-level defaults and policies.
In other words: dfx executes graphs, while dfxd manages executors.
Control interface
dfxd exposes a control API over a Unix domain socket.
This interface is designed to be:
- local-machine friendly (no network exposure by default),
- scriptable (machine-readable request/response),
- suitable for orchestration tools and CI environments.
dfx-ctl is the canonical client for this interface.
Instances
An instance is a managed dfx process with its own:
- graph configuration and runtime state,
- control socket,
- lifecycle independent from other instances.
dfxd keeps track of these instances and provides an API to:
- enumerate them,
- reach their control endpoints,
- apply policies consistently across them.
What dfxd is (and is not)
dfxd is:
- a daemon / supervisor for dfx processes,
- the recommended way to run multiple managed dfx instances,
- the main service endpoint for operational control via dfx-ctl.
dfxd is not:
- a graph execution engine (that is dfx),
- a UI application.