s6 is an init replacement and service manager, similar to runit. The overview is good: https://skarnet.org/software/s6/overview.html
For every service/daemon controlled by s6, an sv-supervise process watches it.
s6-svscan is a supervisor of supervisors — it watches a flock of s6-supervise processes.
Configuration of a daemon is handled by its controlling sv-supervise process, based out of a “service directory”.
All service directories controlled by s6-svscan are collected under a “scan directory”.
The s6-svc command controls a sv-supervise process, and lets us signal its daemon.
The s6-svscanctl command controls a set of sv-supervise processes, and start or stop entire process trees.
The scan directory is typically ‘/service/’ (or /var/svc.d/ on Alpine). The service directories might be under ‘/etc/service’ or ‘/var/service’ or ‘/etc/sv’.
Note that the “scan directory” is set as the argument to s6-svscan or (if not supplied) its current directory.
A service directory generally contains at least a run script, which may be as simple as:
#!/command/execlineb -P
fdmove -c 2 1
myservice myarg
run files are written in a shell-ish language called execline.
http://skarnet.org/software/execline/
(Maybe the service scripts can be just sh scripts too?)
A service directory typically also contains a finish script.