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

  1. 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
  2. Run cc-connect under a container orchestrator (Docker restart policy, Kubernetes) instead of a local daemon
  3. If the OS should be supported, build for a supported target (linux/darwin/windows) or contribute a daemon/<os>.go Manager implementation
  4. 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

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


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/093d013d55601a39. Report an issue: GitHub.