{"id":18781428,"url":"https://github.com/andrewchambers/orderly","last_synced_at":"2025-04-13T11:52:44.742Z","repository":{"id":147602489,"uuid":"178105573","full_name":"andrewchambers/orderly","owner":"andrewchambers","description":"Ordered process (re)start, shutdown, and supervision.","archived":false,"fork":false,"pushed_at":"2020-10-01T00:38:26.000Z","size":107,"stargazers_count":161,"open_issues_count":6,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-06T13:52:38.603Z","etag":null,"topics":["init-system","server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewchambers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"custom":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=5VEH9S9PN7RQU\u0026source=url"}},"created_at":"2019-03-28T01:52:41.000Z","updated_at":"2025-02-24T06:40:49.000Z","dependencies_parsed_at":"2023-06-17T15:15:29.630Z","dependency_job_id":null,"html_url":"https://github.com/andrewchambers/orderly","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchambers%2Forderly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchambers%2Forderly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchambers%2Forderly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchambers%2Forderly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewchambers","download_url":"https://codeload.github.com/andrewchambers/orderly/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248710439,"owners_count":21149188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["init-system","server"],"created_at":"2024-11-07T20:31:44.297Z","updated_at":"2025-04-13T11:52:44.710Z","avatar_url":"https://github.com/andrewchambers.png","language":"Rust","readme":"# Orderly\n\n**orderly** is a tool that provides ordered and controlled start, stop,\nrestart and cleanup of a group of processes. It aims to be a building\nblock for reliable servers/services/containers/dev-environments.\n\norderly draws inspiration from erlang supervisor trees, It provides\nmechanisms to build a tree of supervised processes, and failure can\npropagrate when process restarts rate exceeds a specified limit.\n\norderly does actions via external hooks written in any programming\nlanguage you prefer. orderly does not make assumptions about your\napplication or the setup/teardown that must be done to run it correctly\nand reliably.\n\nIf this interests you, you can read the manual [here](man/orderly.1.md).\n\n## Rationale\n\n**orderly** was originally made to support reliable recovery of\ninter-dependant services after failure on a runit based linux system. In\nthis configuration orderly runs beneath runit, providing grouping, left\nto right start and right to left cleanup that runit lacks. This allows\nfor things like crashed fuse file systems to be cleanly unmounted and\nrecreated, where the unordered restarts of runit cause problems.\n\n**orderly** also addresses some quality of life problems when developing\na group of servers. Generally when developing 'microservice' style\nprojects you are stopping and starting many processes that depend on\neachother. **orderly** makes this work easier, as a single terminal\nwindow + ctrl+c is all that is needed to reliably kill/restart all your\nservices.\n\nMore complicated init systems like systemd support some of this\nfunctionality, but not for these use cases, and only for systems that go\n'all-in' with systemd. The project author is a fan of the openbsd\noperating system for example, which does not even support systemd.\n\n## Example\n\n``` \n$ orderly -max-start-tokens 2 -start-tokens-per-second 0.1 -- \\\n  -name redis   -run ./run-redis -wait-started ./wait-redis  -- \\\n  -name website -run ./run-website -check ./health-check-website -cleanup ./website-cleanup \n```\n\nFor a full featured example with code, check the example directory.\n\n## Implementation status\n\nThe software works, but the interface is not stable and still being\ntweaked. Expect breaking changes between releases until version 1.0.0 is\nreleased.\n\n## Building from source\n\n[![builds.sr.ht\nstatus](https://builds.sr.ht/~ach/orderly.svg)](https://builds.sr.ht/~ach/orderly?)\n\nOrderly is a rust project, so running `cargo build` is sufficient for\nmost people after cloning the git repository.\n\n## Installation\n\nBinary packages are not yet provided.\n\nThe program can be installed from cargo with `cargo install orderly`\n\n## Contact\n\nTry the [mailing list](https://lists.sr.ht/~ach/orderly-dev)\n\nOr create a [github\nissue](https://github.com/andrewchambers/orderly/issues)\n\n## Sponsor Messages\n\nThis project was sponsored by [backupbox.io](https://backupbox.io)\n\n## Sponsoring\n\nThis project took time and effort to make, please sponsor the project\nvia this [paypal donation\nlink](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=5VEH9S9PN7RQU\u0026source=url).\n\nAdd a markdown message shorter than 70 characters total to your donation\nit will be added to the sponsor section. Note that sponsor messages may\nbe rejected at the project authors judgement.\n\n## Authors\n\n[Andrew Chambers](https://acha.ninja)\n","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=5VEH9S9PN7RQU\u0026source=url"],"categories":["Other"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewchambers%2Forderly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewchambers%2Forderly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewchambers%2Forderly/lists"}