You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ADP does not compile or run on Windows today. There are a handful of existing issues that address specific pieces (#1466 for DogStatsD named pipe, #519 for Agent service integration, #580 for CI), but no issue inventories the full set of compile and runtime gaps across the codebase. This issue serves as that catalog.
Related issues: #1466 (named pipe DogStatsD listener), #519 (Windows service / Agent integration), #580 (CI build/test).
What already exists (skeleton)
process-memory (lib/process-memory/src/windows.rs) uses GetProcessMemoryInfo via windows-sys. This is the one fully implemented Windows module.
DogStatsD config accepts named_pipe as a valid dogstatsd_eol_required value (no-op, for forward compat).
There is a linux_impl.rs and a macos_impl.rs but no windows_impl.rs. PlatformSettings::get_config_dir_path(), get_log_file_path(), get_default_syslog_uri(), etc. are all gated on Linux/macOS cfg attributes. ADP will fail to compile on Windows because these constants are undefined.
Needs a windows_impl.rs with the standard Datadog Agent Windows paths (e.g., %ProgramData%\Datadog) matching what the Core Agent uses.
All UDS listener and address variants (Unixgram, Unix) are #[cfg(unix)]. On Windows these arms are absent, but call sites that match on ListenAddress without the #[cfg(unix)] arm may produce unreachable/dead-code warnings or errors depending on how exhaustiveness plays out. Syslog unixgram:// / unix:// parsing is entirely #[cfg(unix)] with no Windows Event Log alternative.
3. IPC / secure API client — no named-pipe path
File:bin/agent-data-plane/src/cli/utils.rs
DataPlaneAPIClient::from_config has a #[cfg(unix)] branch for UDS connection. On Windows only TCP is compiled in. The Core Agent communicates with subagents on Windows via named pipes; the IPC cert/auth path also needs to account for Windows paths.
Runtime / feature gaps
4. DogStatsD named pipe listener — tracked in #1466
dogstatsd_pipe_name and dogstatsd_windows_pipe_security_descriptor are explicitly marked SupportLevel::Incompatible with // Windows support not implemented. #1466. No ListenAddress::NamedPipe variant exists. See #1466 for full spec.
Both the cgroups collector (#[cfg(target_os = "linux")]) and the on-demand PID resolver (#[cfg(target_os = "linux")]) are absent on Windows. Container workload metadata would need a Windows-native mechanism or the remote tagger path used exclusively.
6. UDP autoscaling — Linux only
Same as macOS: SO_REUSEPORT multi-socket UDP autoscaling is Linux-only. On Windows ADP falls back to a single UDP socket.
7. Syslog — no Windows Event Log
File:lib/saluki-app/src/logging/syslog.rs
Syslog transport is #[cfg(unix)] for socket types; the #[cfg(not(unix))] branch only supports UDP/TCP syslog. There is no Windows Event Log integration.
8. APM named pipe config — explicitly not applicable
apm_config.windows_pipe_name, apm_config.windows_pipe_buffer_size, apm_config.windows_pipe_security_descriptor are listed as not applicable. These will need revisiting when Windows support is active.
ADP needs a Windows service definition and the Core Agent needs updating to start/stop the ADP service. See #519 for details including the -foreground flag used for Kubernetes subagents on Windows.
Suggested implementation order
PlatformSettings Windows implementation — unblocks compilation; define standard Windows paths matching the Core Agent installer.
#[cfg] audit — ensure all #[cfg(unix)] call sites compile cleanly on Windows (dead code, exhaustive matches, etc.).
Context
ADP does not compile or run on Windows today. There are a handful of existing issues that address specific pieces (#1466 for DogStatsD named pipe, #519 for Agent service integration, #580 for CI), but no issue inventories the full set of compile and runtime gaps across the codebase. This issue serves as that catalog.
Related issues: #1466 (named pipe DogStatsD listener), #519 (Windows service / Agent integration), #580 (CI build/test).
What already exists (skeleton)
process-memory(lib/process-memory/src/windows.rs) usesGetProcessMemoryInfoviawindows-sys. This is the one fully implemented Windows module.named_pipeas a validdogstatsd_eol_requiredvalue (no-op, for forward compat).Compile blockers
1.
PlatformSettings— no Windows implementationFile:
lib/datadog-agent-commons/src/platform/mod.rsThere is a
linux_impl.rsand amacos_impl.rsbut nowindows_impl.rs.PlatformSettings::get_config_dir_path(),get_log_file_path(),get_default_syslog_uri(), etc. are all gated on Linux/macOScfgattributes. ADP will fail to compile on Windows because these constants are undefined.Needs a
windows_impl.rswith the standard Datadog Agent Windows paths (e.g.,%ProgramData%\Datadog) matching what the Core Agent uses.2. UDS types used unconditionally
Files:
lib/saluki-io/src/net/listener.rs,lib/saluki-io/src/net/addr.rs,lib/saluki-app/src/logging/syslog.rsAll UDS listener and address variants (
Unixgram,Unix) are#[cfg(unix)]. On Windows these arms are absent, but call sites that match onListenAddresswithout the#[cfg(unix)]arm may produce unreachable/dead-code warnings or errors depending on how exhaustiveness plays out. Syslogunixgram:///unix://parsing is entirely#[cfg(unix)]with no Windows Event Log alternative.3. IPC / secure API client — no named-pipe path
File:
bin/agent-data-plane/src/cli/utils.rsDataPlaneAPIClient::from_confighas a#[cfg(unix)]branch for UDS connection. On Windows only TCP is compiled in. The Core Agent communicates with subagents on Windows via named pipes; the IPC cert/auth path also needs to account for Windows paths.Runtime / feature gaps
4. DogStatsD named pipe listener — tracked in #1466
Files:
lib/saluki-components/src/sources/dogstatsd/,lib/saluki-components/src/config_registry/datadog/unsupported.rsdogstatsd_pipe_nameanddogstatsd_windows_pipe_security_descriptorare explicitly markedSupportLevel::Incompatiblewith// Windows support not implemented. #1466. NoListenAddress::NamedPipevariant exists. See #1466 for full spec.5. Workload metadata collectors — Linux/Unix only
Files:
lib/saluki-env/src/workload/collectors/,lib/saluki-env/src/workload/on_demand_pid.rsBoth the cgroups collector (
#[cfg(target_os = "linux")]) and the on-demand PID resolver (#[cfg(target_os = "linux")]) are absent on Windows. Container workload metadata would need a Windows-native mechanism or the remote tagger path used exclusively.6. UDP autoscaling — Linux only
Same as macOS:
SO_REUSEPORTmulti-socket UDP autoscaling is Linux-only. On Windows ADP falls back to a single UDP socket.7. Syslog — no Windows Event Log
File:
lib/saluki-app/src/logging/syslog.rsSyslog transport is
#[cfg(unix)]for socket types; the#[cfg(not(unix))]branch only supports UDP/TCP syslog. There is no Windows Event Log integration.8. APM named pipe config — explicitly not applicable
File:
docs/agent-data-plane/configuration/dogstatsd/known-configs-not-applicable.jsonapm_config.windows_pipe_name,apm_config.windows_pipe_buffer_size,apm_config.windows_pipe_security_descriptorare listed as not applicable. These will need revisiting when Windows support is active.9. Agent service registration — tracked in #519
ADP needs a Windows service definition and the Core Agent needs updating to start/stop the ADP service. See #519 for details including the
-foregroundflag used for Kubernetes subagents on Windows.Suggested implementation order
PlatformSettingsWindows implementation — unblocks compilation; define standard Windows paths matching the Core Agent installer.#[cfg]audit — ensure all#[cfg(unix)]call sites compile cleanly on Windows (dead code, exhaustive matches, etc.).ListenAddress+ DogStatsD listener — see Support Windows named pipe listener for DogStatsD (dogstatsd_pipe_name,dogstatsd_windows_pipe_security_descriptor). #1466 for full spec.