{"id":24079991,"url":"https://github.com/lukateras/triggerd","last_synced_at":"2025-06-15T20:36:11.462Z","repository":{"id":137034793,"uuid":"200541795","full_name":"lukateras/triggerd","owner":"lukateras","description":"UDP-based process scheduler with a single slot queue","archived":false,"fork":false,"pushed_at":"2024-12-27T03:05:50.000Z","size":43,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"trunk","last_synced_at":"2025-06-08T23:49:36.163Z","etag":null,"topics":["c","glib","meson","networking","queue","scheduler","triggerd","udp"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukateras.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2019-08-04T21:08:46.000Z","updated_at":"2025-01-02T07:19:55.000Z","dependencies_parsed_at":"2023-04-28T07:27:42.751Z","dependency_job_id":null,"html_url":"https://github.com/lukateras/triggerd","commit_stats":null,"previous_names":["lukateras/triggerd"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lukateras/triggerd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukateras%2Ftriggerd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukateras%2Ftriggerd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukateras%2Ftriggerd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukateras%2Ftriggerd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukateras","download_url":"https://codeload.github.com/lukateras/triggerd/tar.gz/refs/heads/trunk","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukateras%2Ftriggerd/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260046239,"owners_count":22950819,"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":["c","glib","meson","networking","queue","scheduler","triggerd","udp"],"created_at":"2025-01-09T22:40:22.078Z","updated_at":"2025-06-15T20:36:11.439Z","avatar_url":"https://github.com/lukateras.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![trigger + triggerd](logo.svg)\n\nSimplistic UDP-based scheduler with a single slot queue.\n\nI hope that you find `trigger` + `triggerd` useful 💚💜\n\n## Installation\n\n- Arch Linux: [`triggerd`]() (AUR)\n- macOS: [`yanalunaterra/triggerd`]() (Homebrew tap)\n\n## Example\n\n```sh\n$ triggerd make \u0026\n\n$ trigger # Schedule a build\n$ trigger # Schedule another build\n          # (Make will be restarted upon completion)\n$ trigger # Attempt to schedule yet another build\n          # (has no effect if Make is still running)\n```\n\n## Overview\n\n`triggerd` listens on IPv6 loopback UDP port 51161 (overridable by setting\n`TRIGGERD_PORT` environment variable).\n\nWhen `triggerd` receives a packet, it executes a program from its command-line\narguments. While this program keeps running, there is a single slot that can\ntake another packet. If the slot is taken by the time the program exits, it will\nbe immediately restarted. Once the slot is taken, additional received packets\nhave no effect until the program is restarted and the slot is emptied.\n\n`trigger` sends a packet to `triggerd`.\n\nFor details, consult `trigger(1)` and `triggerd(8)` man pages.\n\n## Attribution\n\nPrototype sponsored by [Serokell][].\n\n[Clone Rounded PE][] logo font by Lasko Džurovski from [Rosetta Type Foundry][].\n\nOn/off switch logo icon by [Tanya Nevskaya][].\n\nSocial preview background pattern by Steve Schoger from [Hero Patterns][],\nlicensed under [CC BY 4.0][].\n\n[Serokell]: https://serokell.io\n[Clone Rounded PE]: https://rosettatype.com/CloneRoundedPE\n[Tanya Nevskaya]: https://unparalloser.com\n[Rosetta Type Foundry]: https://rosettatype.com\n[Hero Patterns]: https://heropatterns.com\n[CC BY 4.0]: https://creativecommons.org/licenses/by/4.0/\n\n---\n\n`trigger` + `triggerd` were designed for continuous deployment on [NixOS][]:\n`triggerd nixos-rebuild switch` rebuilds the system on request while\ndeduplicating consecutive rebuild requests; `trigger` requests a system\nrebuild.\n\nOne caveat to be aware of: all users on a system typically have access to UDP.\nDo not use `triggerd` with anything that can lead to privilege escalation. If\ninternal denial-of-service is a concern for you, set up a firewall policy that\nlimits `triggerd` port access to a trusted group.\n\n[NixOS]: https://nixos.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukateras%2Ftriggerd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukateras%2Ftriggerd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukateras%2Ftriggerd/lists"}