No description
- start/stop/restart/status/logs/enable/disable/list/daemon - PID-file based state, no daemon, no root - config.toml with placeholders, restart policies, env vars - log tailing with -n/-f and stderr colorization - supervisor per service with SIGTERM handling |
||
|---|---|---|
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.example.toml | ||
| LICENSE | ||
| README.md | ||
rss — RuSt Supervisor
Lightweight, per-user process supervisor. No daemon, no root, no virtualization.
Philosophy
- KISS — one binary, one job. Each service gets its own supervisor process.
- UNIX way — PID files for state, no IPC, no sockets.
- User-space — everything under
~/.config/rss/and~/.local/share/rss/. - No root — runs entirely as your user.
Usage
rss start <name> Start a service
rss stop <name> Stop a service
rss restart <name> Restart a service
rss status [name] Show service status
rss logs <name> [-n N] [-f] View logs (last N, follow)
rss enable <name> [--now] Enable auto-start
rss disable <name> Disable auto-start
rss list List all services
rss daemon Start all enabled services
Configuration
Place config.toml in ~/.config/rss/config.toml.
[service.NAME]
workdir = "/path/to/project"
command = "your command here"
stop_command = "optional stop command"
timeout_start = 15
timeout_stop = 10
restart = "on-failure" # no, always, on-failure
restart_delay = 3
restart_max = 5 # 0 = unlimited
oneshot = false
stop_signal = "TERM"
env = { KEY = "value" }
Placeholders in command / stop_command: {name}, {workdir}, {pid}, {log_file}, plus any env var.
See config.example.toml for a full example.
Install
cargo install --path .
License
MIT