{"id":22779272,"url":"https://github.com/rwestlund/paladin","last_synced_at":"2025-04-15T14:22:06.365Z","repository":{"id":57540340,"uuid":"67681915","full_name":"rwestlund/paladin","owner":"rwestlund","description":"A simple process supervisor written in Go","archived":false,"fork":false,"pushed_at":"2023-03-10T01:21:03.000Z","size":1444,"stargazers_count":5,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T21:11:26.315Z","etag":null,"topics":["go","launcher","process-supervisor","supervisor","toml"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rwestlund.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-08T08:00:50.000Z","updated_at":"2023-03-10T01:21:07.000Z","dependencies_parsed_at":"2024-06-20T17:16:40.101Z","dependency_job_id":"f1a3554e-953b-47ca-aba3-46766c2ec537","html_url":"https://github.com/rwestlund/paladin","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwestlund%2Fpaladin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwestlund%2Fpaladin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwestlund%2Fpaladin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwestlund%2Fpaladin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rwestlund","download_url":"https://codeload.github.com/rwestlund/paladin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249085578,"owners_count":21210306,"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":["go","launcher","process-supervisor","supervisor","toml"],"created_at":"2024-12-11T20:08:19.659Z","updated_at":"2025-04-15T14:22:06.336Z","avatar_url":"https://github.com/rwestlund.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paladin\n\nA simple process supervisor written in Go.\n\n## Description\n\nPaladin is a simple way to launch and maintain services. It provides the\nfollowing features:\n- Simple TOML configuration.\n- Automatically restart failed processes.\n- Log each process to a different file, even separating stdout and stderr.\n- Specify process dependencies, so things start in the right order.\n- Launch processes under different users and groups.\n\n## Installation\n\n- Clone this repo in your `$GOPATH`.\n- Copy `etc/paladin.conf.sample` to `/etc/paladin.conf` and set your values.\n- Run `go build`.\n- Put `paldin` in your path.\n\nCompile with something like `-ldflags=\"-X main.localbase=/usr/local\"` on\nsystems where the config file will not live under `/etc`, such as FreeBSD.\n\n## License\n\nThis code is under the BSD-2-Clause license.  See the LICENSE file for the full\ntext.\n\n## Configuration\n\nThe config file uses TOML format. It consists of general options, and several\n`[[process]]` blocks that define each process that paladin is responsible for.\n\n### General Options\n\nThe following general options do not go inside a TOML block:\n\n|Name      | Required | Description\n|----------|---|-----------------------------------------------------\n|`log_file`| N | File path for main output. An empty string means stderr.\n\n### Process-specific Options\n\nThe following options are per-process, and go in a `[[process]]` block:\n\n|Name            | Required | Description\n|----------------|---|-------------------------------------------------------\n|`name`          | Y | Used to identify the process.  Must be unique.\n|`path`          | Y | The full path to the program to be run.\n|`args`          | N | An array of string arguments for the process.\n|`cwd`           | N | The current working directory for the process.\n|`stdout`        | N | The file path for logging stdout.\n|`stderr`        | N | The file path for logging stderr. Follows stdout if unset.\n|`user`          | N | Run the process as this user.\n|`group`         | N | Run the process as this group.\n|`restart_delay` | N | Milliseconds to wait before restarting.\n|`ignore_failure`| N | Boolean. Set to `true` to disable restarting on failure.\n|`min_runtime`   | N | Don't restart if it fails in fewer than this many milliseconds.\n|`soft_depends`  | N | List of processes that must be started before this one.\n\n### Example Configuration\n\n```\nlog_file = \"/var/log/paladin.log\"\n\n[[process]]\nname = \"my-program\"\npath = \"/path/to/my-program\"\nargs = []\ncwd = \"/path/to\"\nrestart_delay = 1000\nmin_runtime = 100\nstdout = \"/tmp/my-program-stdout\"\nuser = \"myuser\"\ngroup = \"mygroup\"\n\n[[process]]\nname = \"my-other-program\"\npath = \"/path/to/my-other-program\"\nargs = [\"-a\", \"-d\"]\nmin_runtime = 100\nsoft_depends = [ \"my-program\" ]\nrestart_delay = 1000\n```\n\n### Command-line Options\n\n| Name | Required | Description\n|------|----------|------------\n|`-f`  | N | The config file to use. Defaults to /etc/paladin.conf (unless localbase is set).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwestlund%2Fpaladin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frwestlund%2Fpaladin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwestlund%2Fpaladin/lists"}