# rss — RuSt Supervisor Lightweight, per-user process supervisor. No root, no virtualization. ## Architecture - **Single daemon** (`rss daemon`) manages all services in-process - **CLI** (`rss start`, `rss stop`, etc.) talks to the daemon via Unix socket - **No PID files** for services — state lives in daemon memory - **Config hot-reload** — rename/add/remove services live, daemon detects changes - **Logs** written to `~/.local/share/rss/logs/.log` — readable by CLI directly ## Usage First start the daemon (via systemd or terminal): ``` rss daemon ``` Then manage services: ``` rss start Start a service rss stop Stop a service rss restart Restart a service rss status [name] Show service status rss logs [-n N] [-f] View logs (last N, follow) rss enable [--now] Enable auto-start rss disable Disable auto-start rss list List all services ``` ## Configuration Place `config.toml` in `~/.config/rss/config.toml`. ```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, unless-stopped, 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. Edit `config.toml` any time — the daemon picks up changes live. ## systemd (user mode) ```sh mkdir -p ~/.config/systemd/user cp contrib/rss.service ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable rss systemctl --user start rss ``` Requires `linger` for headless users: ```sh sudo loginctl enable-linger $USER ``` ## Install ```sh cargo install --path . ``` ## License MIT