Skip to content
ra0x3Public

About

An agent-friendly general-purpose program orchestrator for busy people.

Topics

Resources

Contributing

Stars

13 stars

Watchers

2 watching

Forks

Latest commit

 

History

757 Commits

Folders and files

Repository files navigation

systemg

An agent-friendly general-purpose program orchestrator for busy people.



systemg



Live CI GitHub branch status

docs.rs (with version) GitHub tag Crate size Crates.io Total Downloads

Deps.rs Crate Dependencies (specific version) License

Table of Contents

  1. Read the Docs
  2. Getting Started
  3. Why systemg
  4. How systemg compares

Getting Started

Installation

Installation

$ curl --proto '=https' --tlsv1.2 -fsSL https://sh.sysg.dev/ | sh

Or with Homebrew, on macOS and Linux:

$ brew install ra0x3/tap/sysg

For system-wide deployments, scripts/install-systemg.sh sets up /usr/bin/sysg, /etc/systemg, and /var/lib/systemg — see the security guide.

Nothing supervises the supervisor, so a reboot leaves the machine bare until a service manager starts one. sysg install-boot writes that unit — a systemd unit or a launchd daemon, for the machine or for your own account:

$ sysg install-boot --config /opts/app/sysg.prod.yaml --write --enable

Why systemg

You declare your processes, their dependencies, and their health checks in one file. systemg starts them in topological order, restarts them according to policy, and won't call a rolling deploy done until the new process passes its health check.

It sits in the gap between systemd and Docker Compose. systemd wants to own the whole machine. Compose has the right composition model but makes you adopt containers to get it. Supervisor is close, but has no dependency graph and needs a Python runtime. systemg is one static binary that runs the same in a VM, a container, or on a Raspberry Pi — and everything it knows is readable back out through sysg status and sysg inspect, so scripts and coding agents can drive it as easily as you can.

Features

  • Dependency-ordered startup, gated on health checks
  • One resident supervisor for many isolated projects
  • Rolling deployments: blue-green process swap, health-validated
  • Restart policies with backoff
  • Cron jobs with overlap detection
  • Foreground multiplexed logs with per-service prefixes
  • Same-PID live upgrades within a compatible release line
  • Process hooks on successful starts and unsuccessful exits
  • .env file propagation
  • Tracks child processes your services spawn
  • CPU/RSS metrics built into status and inspect
  • Privileged mode: per-service user/group, capabilities, rlimits, namespaces
  • Uses systemd/cgroups when present; needs neither

How systemg compares

systemg systemd Supervisor Docker Compose
Focus Program composition System management Process supervision Container orchestration
Config YAML Unit files INI YAML
Dependencies Topological, health-aware Unit chains Manual ordering Service links
Deployments Built-in rolling External tooling Manual restarts Recreate/rolling
Runtime deps No interpreter or VM; command: uses a POSIX shell DBus, journal Python Docker daemon

Measured

systemg systemd Supervisor Docker Compose
Install to first service 1.49s — 5.53s 15.85s+ (package only)
Pulled over network 6.8 MB — 48.0 MB 172.5 MB
Installed on disk 19.5 MB 14.6 MB 26.8 MB 278.6 MB
Ten-service graph 6.91s — n/a 8.31s
Overhead at ten services 12.4 MB — 18.1 MB ~354 MB
Added per service 0.035 MB — 0.020 MB 7.26 MB
Expresses a dependency graph ✓ ✓ ✗ ✓
Gates on a probe, not a timer ✓ ✓ ✗ ✓
Leaves nothing behind on stop ✓ — ✗ ✓
Workload survives its crash ✓ — ✓ ✗
Starts no duplicate after ✓ — ✗ ✓
Recovers without an operator ✓ — ✓ ✗
Runs without a separate runtime ✓ ✓ ✗ ✗
Installs without root ✓ ✗ ✓ ✗

Full documentation lives at sysg.dev. Maintainers and agents investigating supervisor behavior should begin with DEBUGGING.md.

About

An agent-friendly general-purpose program orchestrator for busy people.

Topics

Resources

Contributing

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages