Supervisor (supervisord) Config Generator
Generate a Supervisor [program:x] section from a form. Set the command and working directory, the user to run as, how many processes to fork, the autostart/autorestart behaviour, environment variables, stop signal and log file settings — and get a correctly-formatted block to drop into /etc/supervisor/conf.d/. It generates live and runs entirely in your browser.
How to use the Supervisor (supervisord) Config Generator
Give the program a name (it becomes [program:name] and the label you'll use with supervisorctl) and the full command to run — always an absolute path, since Supervisor does not use a login shell. Set the working directory and the user to drop privileges to. If you need several identical workers, set numprocs above one and the generator adds the process_name template Supervisor requires so each gets a distinct name like worker_00, worker_01.
The restart settings control supervision. autostart launches the program when Supervisor starts; autorestart=true restarts it whenever it exits, while unexpected restarts only on exit codes you didn't declare as normal. startsecs is how long the process must stay up to count as successfully started, and stopwaitsecs is how long to wait after the stop signal before sending SIGKILL — raise it for workers that need to finish in-flight jobs. Add environment variables one per line. Save the block as /etc/supervisor/conf.d/name.conf, then run supervisorctl reread and supervisorctl update to load it.
What Supervisor is and when to reach for it
Supervisor is a process control system: a long-running daemon (supervisord) that starts your programs, keeps them running, restarts them when they crash, and gives you a single command-line and web interface (supervisorctl) to start, stop and tail them. It predates systemd's ubiquity and remains popular because its per-program configuration is simple, portable across distributions, and runs comfortably inside containers and minimal images where a full init system is awkward.
A program is declared in an INI-style [program:name] section. The essential fields are command (what to run, as an absolute path — Supervisor execs it directly, not through a shell, so shell features like pipes or globbing won't work unless you invoke a shell explicitly), directory, user, and the start/restart policy. Because Supervisor manages the process directly rather than daemonising it, your program must run in the foreground and not fork into the background; a program that double-forks will appear to exit immediately and Supervisor will keep restarting it.
Supervisor shines for running multiple application workers — Celery queues, queue consumers, websocket servers, cron-like loops — under one supervisor, each with its own log files, environment and restart behaviour, and for the common container pattern of running one or two foreground processes with automatic restart. The trade-offs versus systemd are real: Supervisor has no socket activation, no cgroup resource control, and no dependency ordering beyond priority, so for full host-level service management systemd is usually the better fit. This generator emits a conventional program section with sensible logging and restart defaults so the block you deploy is well-formed from the start.
Common use cases
- Background workers. Run Celery, Sidekiq-style, or custom queue consumers with automatic restart and multiple processes.
- Containers. Supervise one or two foreground processes in an image where a full init system is overkill.
- App servers. Keep a Gunicorn, uWSGI or Node process running and restart it on crash.
- Scheduled loops. Manage a long-running script that polls or processes work continuously.