{"id":19053726,"url":"https://github.com/idanrosenzweig/daemond","last_synced_at":"2026-05-10T07:32:49.379Z","repository":{"id":247355013,"uuid":"825210088","full_name":"IdanRosenzweig/Daemond","owner":"IdanRosenzweig","description":"Infrastructure for managing daemons, services, and systems. Suitable for development environments, servers, cloud services, IoT devices, and more. Offers greater flexibility and convenience compared to other daemon managers.","archived":false,"fork":false,"pushed_at":"2024-07-08T12:35:36.000Z","size":46,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-22T01:17:19.149Z","etag":null,"topics":["c","cpp","daemon-manager","design-patterns","inter-process-communication","linux","serialization","service-manager"],"latest_commit_sha":null,"homepage":"","language":"C++","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/IdanRosenzweig.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-07-07T05:59:35.000Z","updated_at":"2024-07-08T12:37:10.000Z","dependencies_parsed_at":"2024-07-08T09:53:31.192Z","dependency_job_id":"b08dc3b9-451d-4473-bb05-61c0cb414fb5","html_url":"https://github.com/IdanRosenzweig/Daemond","commit_stats":null,"previous_names":["idanrosenzweig/daemond"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IdanRosenzweig/Daemond","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdanRosenzweig%2FDaemond","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdanRosenzweig%2FDaemond/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdanRosenzweig%2FDaemond/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdanRosenzweig%2FDaemond/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IdanRosenzweig","download_url":"https://codeload.github.com/IdanRosenzweig/Daemond/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdanRosenzweig%2FDaemond/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283990376,"owners_count":26928670,"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","status":"online","status_checked_at":"2025-11-12T02:00:06.336Z","response_time":59,"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":["c","cpp","daemon-manager","design-patterns","inter-process-communication","linux","serialization","service-manager"],"created_at":"2024-11-08T23:33:39.728Z","updated_at":"2025-11-12T07:04:24.590Z","avatar_url":"https://github.com/IdanRosenzweig.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Daemond\n\n## overview\nDaemond is an infrastructure for managing daemons, services, and systems. It can be utilized for overseeing development environments, servers, cloud services, IoT devices, container orchestration, and more.\n\nDaemond operates using the concept of units, representing any daemon, service, or system that it can control and manage, similar to systemctl units.\n\nSupporting modern C++ for specifying units, Daemond offers greater flexibility and convenience compared to other popular daemon managers that rely on their own text file syntax.\n\n## architecture\n\nDaemond is composed out of two components:\n* the main `daemond` program, which internally manages units\n* `daemond_ctl`, a companion program providing easy access and querying of the main `daemond` program. this combination is similar to the way `systemd` and `systemctl` interact.\n\nin order to use Daemond:\n1. run the main `daemond` program on the machine (in the background or separate process etc...)\n2. specify various units in any file you want\n3. run the `daemond_ctl` program which will interact with the `daemond` program (via various communication channels like).\n\n## usage\nDaemond supports the following operations on units:\n* load a unit (preparing it)\n* start a loaded unit\n* stop a loaded unit\n* query the status of a unit\n* unload a unit\n\nall of these operations can be done using the `daemond_ctl` program.\n\n## unit specification\nlook at the struct under `src/abstract/unit/data/unit_data.h`. to specify a unit that can be manged by `daemond`, write any valid C++ source file that contain a `unit_data` struct named `unit`, with your own values in it.\n\nyou can look at sample units under `samples`.\n\n## build\nto build the daemond program, execute `./build.sh daemond`. the `daemond` program will be found under `build` directory.\n\nto build the daemond_ctl side program, execute `./build.sh daemond_ctl`. the `daemond_ctl` program will be found under `build` directory.\n\nto clean all builds, execute `./build.sh clean`.\n\n## samples\nthe project contains sample units found under `samples`.\n\nto start one of these units:\n1. build `daemond` and `daemond_ctl`\n2. execute `daemond` in the background\n3. to load the unit, execute `daemond_ctl -c load -p samples/unit_name`\n4. to start the unit, execute `daemond_ctl -c start -p samples/unit_name`\n\n## dependencies\nDaemond uses the `libboost` library for serialization of data and for command line parsing. make sure you have libboost when compiling the project.\n\n## future TODOs\n* add support for unit dependencies\n* add netlink IPC channel to integrate with kernel level code\n* add external network IPC channel to integrate with remote systems\n* add support for Windows","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidanrosenzweig%2Fdaemond","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidanrosenzweig%2Fdaemond","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidanrosenzweig%2Fdaemond/lists"}