Changelog¶
0.1.0 (Unreleased)¶
Initial release.
Features¶
Async process supervision built on Python
asyncioZero external dependencies — pure Python stdlib
INI-based configuration compatible with Supervisor conventions
Process lifecycle management with state machine (STOPPED, STARTING, RUNNING, BACKOFF, STOPPING, EXITED, FATAL, UNHEALTHY)
Multiple process instances via
numprocsProcess groups with batch start/stop operations
TCP and script-based health checks with configurable intervals, timeouts, and retries
Auto-restart on process exit and health check failure
Configurable start retries with FATAL state on exhaustion
Hot configuration reload (add/remove programs without restart)
Unix socket RPC with length-prefixed JSON protocol
CLI control tool (
supervicectl) with status, start, stop, restart, reload commandsGraceful and forced restart (
--forceflag for SIGKILL)Process group kill (kills entire process tree, not just main PID)
Double-fork daemonization with PID file locking (
fcntl.flock)Log rotation via
RotatingFileHandlerPer-process uptime tracking and display
User switching with
setuid/setgid(requires root)Linux orphan prevention via
prctl(PR_SET_PDEATHSIG)Log file path substitution with
%(process_num)sQuote-aware environment variable parsing
SIGHUP handling (logged and ignored)
Bounded event queue with backpressure (prevents memory exhaustion)
Restrictive Unix socket permissions (
0o600)Full
mypy --strictcomplianceComprehensive test suite (63 tests)