Overview
systemg is a general-purpose process orchestrator built around a single YAML configuration and one binary. It is designed to run a graph of related services without requiring an additional daemon.
A configuration can describe commands, dependencies, scheduled work, and lifecycle hooks. This gives developers one place to coordinate applications that depend on databases, caches, workers, or other local processes.
Key Features
- Starts independent service branches in parallel while holding dependent services until health checks pass.
- Restarts unsuccessful processes with a doubling backoff and resets that delay after the process remains healthy.
- Prefixes service output and sends it to one stream, preserving the ordering of logs across processes.
- Supports cron expressions, time zones, and hooks for start and error events.
- Keeps service definitions in a single YAML file and runs them through one binary.
How It Works
Services declare their commands and dependency relationships in the configuration. systemg uses those relationships to construct the startup order, allowing ready branches to launch concurrently instead of starting every service one at a time.
The documented example combines PostgreSQL, Redis, an API, and a background worker. The API waits for PostgreSQL and Redis, while the worker depends only on Redis; a separate scheduled backup illustrates cron configuration and event hooks.
Use Cases
systemg can coordinate multi-process development and production layouts where startup order, readiness, recovery, and unified observation matter. Its published examples include a minimal service, a FastAPI CRUD application, command-based units, and multi-agent task execution with Redis coordination and DAG scheduling.
It is particularly suited to service graphs that would otherwise require several terminals and manual startup sequencing. The included examples provide complete configurations, application code, setup instructions, and expected behavior.