{"id":25930399,"url":"https://github.com/ra0x3/systemg","last_synced_at":"2026-06-13T05:01:24.492Z","repository":{"id":280043174,"uuid":"940827484","full_name":"ra0x3/systemg","owner":"ra0x3","description":"A general-purpose program orchestrator.","archived":false,"fork":false,"pushed_at":"2026-06-11T01:14:55.000Z","size":2480,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-11T02:22:23.537Z","etag":null,"topics":["agent","agentic","ai","orchestrator","process-management","process-manager","process-orchestration","process-orchestrator","rust","service-manager"],"latest_commit_sha":null,"homepage":"https://sysg.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ra0x3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.mdx","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-28T21:41:31.000Z","updated_at":"2026-06-11T01:10:02.000Z","dependencies_parsed_at":"2025-12-30T04:08:14.894Z","dependency_job_id":null,"html_url":"https://github.com/ra0x3/systemg","commit_stats":null,"previous_names":["ra0x3/systemg"],"tags_count":91,"template":false,"template_full_name":null,"purl":"pkg:github/ra0x3/systemg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra0x3%2Fsystemg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra0x3%2Fsystemg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra0x3%2Fsystemg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra0x3%2Fsystemg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ra0x3","download_url":"https://codeload.github.com/ra0x3/systemg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ra0x3%2Fsystemg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34272603,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agentic","ai","orchestrator","process-management","process-manager","process-orchestration","process-orchestrator","rust","service-manager"],"created_at":"2025-03-03T23:02:04.668Z","updated_at":"2026-06-13T05:01:24.446Z","avatar_url":"https://github.com/ra0x3.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# systemg\n\nA general-purpose program orchestrator.\n\n\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cdiv align=\"center\" \u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://i.imgur.com/lkKPMoX.png\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://i.imgur.com/13cCBze.png\" /\u003e\n    \u003cimg src=\"https://i.imgur.com/13cCBze.png\" alt=\"systemg\" width=\"320\" /\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![CI](https://img.shields.io/github/actions/workflow/status/ra0x3/systemg/ci.yaml?branch=main\u0026style=flat-square\u0026logo=github\u0026label=CI)](https://github.com/ra0x3/systemg/actions/workflows/ci.yaml)\n[![GitHub branch status](https://img.shields.io/github/checks-status/ra0x3/systemg/main?style=flat-square\u0026label=checks)](https://github.com/ra0x3/systemg/actions)\n\n[![docs.rs (with version)](https://img.shields.io/docsrs/systemg/latest)](https://docs.rs/systemg)\n[![GitHub tag](https://img.shields.io/github/v/tag/ra0x3/systemg?style=flat-square\u0026logo=github\u0026label=version)](https://github.com/ra0x3/systemg/releases)\n[![Crate size](https://img.shields.io/crates/size/systemg?style=flat-square\u0026logo=rust\u0026label=size)](https://crates.io/crates/systemg)\n![Crates.io Total Downloads](https://img.shields.io/crates/d/systemg)\n\n[![Deps.rs Crate Dependencies (specific version)](https://img.shields.io/deps-rs/systemg/latest)](https://deps.rs/crate/systemg)\n[![License](https://img.shields.io/crates/l/systemg?style=flat-square)](LICENSE)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Rust-000000?style=for-the-badge\u0026logo=rust\u0026logoColor=white\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/ts--node-3178C6?style=for-the-badge\u0026logo=ts-node\u0026logoColor=white\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Vite-B73BFE?style=for-the-badge\u0026logo=vite\u0026logoColor=FFD62E\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/mac%20os-000000?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/OpenAI-412991?style=for-the-badge\u0026logo=openai\u0026logoColor=white\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Anthropic-D97757?style=for-the-badge\u0026logo=anthropic\u0026logoColor=white\" /\u003e\n\u003c/div\u003e\n\n[//]: # (\u003cimg height=\"500px\" src=\"https://i.imgur.com/MHXfe9T.png\" /\u003e)\n\n## Table of Contents\n\n1. [Read the Docs](https://sysg.dev)\n2. [Getting Started](#getting-started)\n   - 2.1 [Installation](#installation)\n   - 2.2 [Usage](#usage)\n3. [Why systemg](#why-systemg)\n   - 3.1 [Features](#features)\n4. [How systemg Compares](#how-systemg-compares)\n\n## Getting Started\n\n### Installation\n\n![Installation](https://i.imgur.com/6d2aq0U.gif)\n\n```sh\n$ curl --proto '=https' --tlsv1.2 -fsSL https://sh.sysg.dev/ | sh\n```\n\nSystem deployments: `scripts/install-systemg.sh` sets up `/usr/bin/sysg`, `/etc/systemg`, `/var/lib/systemg`. See [security guide](docs/docs/security.md).\n\n### Usage\n\n| Command | Description |\n|---------|-------------|\n| `sysg start` | Start the default `systemg.yaml` in the foreground. |\n| `sysg start --config my.yaml` | Start a specific config file. |\n| `sysg start --daemonize` | Launch the supervisor in the background. |\n| `sysg status` | Check the running supervisor's service state. |\n| `sysg logs --service api` | View logs for a specific service. |\n| `sysg restart --service api` | Restart one service without restarting everything. |\n\n\u003e **Tip:** `--stderr` redirects stderr from supervised processes to stdout with a `[service_name:stderr]` prefix, which is useful for debugging and CI pipelines.\n\nBy default, systemg captures service stdout/stderr through pipes and persists a local copy under its log directory. For high-output services, configure logging explicitly:\n\n```yaml\nlogs:\n  sink: file\n  max_bytes: 10485760\n  max_files: 5\nstatus:\n  snapshot_mode: summary\n  snapshot_interval_secs: 5\nservices:\n  noisy_worker:\n    command: \"worker --verbose\"\n    logs:\n      sink: none\n```\n\n`sink: none` discards service output without creating systemg log-writer threads or files, which is useful when another production logging pipeline already collects process output.\n\n`status.snapshot_mode: summary` keeps `sysg status` and `sysg inspect`\ninexpensive while still reading current persisted state such as cron history.\nUse `detailed` only when you need process tree and runtime command details for\ndiagnostics. Add `--live` to `sysg status` or `sysg inspect` when a single\nrequest should force immediate runtime collection instead of the configured\nsnapshot mode.\n\n---\n\n## Why systemg\n\nCompose programs into systems with explicit dependencies and health checks.\n\n### Features\n\n- **Dependencies** - Topological startup order with health-aware cascading\n- **Rolling Deployments** - Blue-green swaps with health validation\n- **Environment** - `.env` file propagation\n- **Webhooks** - Event notifications ([docs](docs/docs/webhooks.md))\n- **Cron** - Scheduled tasks with overlap detection\n- **Spawning** - Dynamic child process tracking\n- **OS Integration** - systemd/cgroups when available\n- **Single Binary** - No runtime dependencies\n\n## How systemg Compares\n\n| Feature | systemg | systemd | Supervisor | Docker Compose |\n|---------|---------|---------|------------|----------------|\n| **Focus** | Program composition | System management | Process supervision | Container orchestration |\n| **Configuration** | Declarative YAML | Unit files | INI files | YAML |\n| **Dependencies** | Topological with health checks | Complex unit chains | Manual ordering | Service links |\n| **Deployments** | Built-in rolling workflows | External tooling | Manual restarts | Recreate/rolling |\n| **Runtime deps** | None | DBus, journal | Python | Docker daemon |\n| **OS integration** | Optional | Required | None | Container runtime |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fra0x3%2Fsystemg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fra0x3%2Fsystemg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fra0x3%2Fsystemg/lists"}