chenhg5/cc-connect · error
daemon management is not supported on %s; use a process mana
Error message
daemon management is not supported on %s; use a process manager (e.g. nssm, pm2) instead
What it means
daemon/unsupported.go is the build-tag-selected fallback for operating systems cc-connect has no daemon manager for (anything other than Linux/systemd, macOS/launchd, Windows/schtasks). Its newPlatformManager unconditionally returns this error naming runtime.GOOS. It tells the user daemon install/uninstall is a no-go on that OS and to use a native process manager such as nssm or pm2.
Source
Thrown at daemon/unsupported.go:11
//go:build !linux && !darwin && !windows
package daemon
import (
"fmt"
"runtime"
)
func newPlatformManager() (Manager, error) {
return nil, fmt.Errorf("daemon management is not supported on %s; use a process manager (e.g. nssm, pm2) instead", runtime.GOOS)
}
// CheckLinger is a no-op on unsupported platforms (always returns false).
func CheckLinger() (enabled bool, user string) {
return false, ""
}
View on GitHub (pinned to 4000b2338a)
Solutions
- Use a native process manager on that OS: nssm on Windows-adjacent setups, pm2 (`pm2 start cc-connect`), supervisord, s6, or rc.init scripts on BSD
- Run cc-connect under a container orchestrator (Docker restart policy, Kubernetes) instead of a local daemon
- If the OS should be supported, build for a supported target (linux/darwin/windows) or contribute a daemon/<os>.go Manager implementation
- For long-running use, wrap the process in tmux/screen as a stopgap
Example fix
// before (on FreeBSD) $ cc-connect daemon install // error: daemon management is not supported on freebsd // after: use pm2 $ pm2 start cc-connect --name cc-connect $ pm2 save && pm2 startup
Defensive patterns
Strategy: fallback
Validate before calling
supported := map[string]bool{"linux": true, "darwin": true, "windows": true}
if !supported[runtime.GOOS] {
// use pm2/nssm/supervisord instead of cc-connect daemon
fmt.Println("daemon subcommands unsupported here; use pm2 or a native supervisor")
} Try / catch
mgr, err := daemon.NewPlatformManager()
if err != nil {
if errors.Is(err, daemon.ErrUnsupportedPlatform) || strings.Contains(err.Error(), "not supported on") {
return superviseWithPm2(cfg) // external supervisor fallback
}
return err
} Prevention
- Check runtime.GOOS / the target OS in deployment scripts and pick a supervisor (pm2, nssm, supervisord, s6) accordingly
- Build only for supported GOOS/GOARCH combinations in CI (linux, darwin, windows)
- Avoid stripping daemon platform files with build tags on targets where you need `daemon install`
- For containers/BSDs, standardize on an external process manager instead of in-app daemon management
When it happens
Trigger: Running any `cc-connect daemon ...` subcommand on an OS without a dedicated daemon implementation (e.g. FreeBSD, OpenBSD, NetBSD, Solaris, AIX, plan9), or on a Linux/macOS/Windows build compiled with the daemon-specific platform files excluded via build tags.
Common situations: Deploying cc-connect on a BSD server; cross-compiling with GOOS set to an unsupported value; building with exclusions that drop daemon/ files for the target platform.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- systemd is not active (state: %s). If running in a contain
- systemd check failed (state: %s). Use nohup as alternative
- systemd user session not available in WSL2. Add the follow
- taskkill failed: %w: %s
- taskkill failed: %w: %s; process kill fallback failed: %w
AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06).
Data as JSON: /api/errors/093d013d55601a39.
Report an issue: GitHub.