{"id":44364786,"url":"https://github.com/edgehog-device-manager/edgehog-device-runtime","last_synced_at":"2026-04-07T12:02:10.733Z","repository":{"id":37743923,"uuid":"462416874","full_name":"edgehog-device-manager/edgehog-device-runtime","owner":"edgehog-device-manager","description":"Edgehog Device Runtime is a portable middleware written in Rust, that enables remote device management on Linux-based systems.","archived":false,"fork":false,"pushed_at":"2026-04-07T06:38:29.000Z","size":3141,"stargazers_count":15,"open_issues_count":23,"forks_count":11,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-07T08:23:53.503Z","etag":null,"topics":["device-management","edge","edgehog","edgehog-device","hacktoberfest","iot","iot-device","linux","ota-update","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edgehog-device-manager.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"2022-02-22T18:04:48.000Z","updated_at":"2026-04-07T06:38:28.000Z","dependencies_parsed_at":"2023-10-04T21:01:07.584Z","dependency_job_id":"0a9e92a1-7c57-49a2-be77-98228d06a51b","html_url":"https://github.com/edgehog-device-manager/edgehog-device-runtime","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/edgehog-device-manager/edgehog-device-runtime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgehog-device-manager%2Fedgehog-device-runtime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgehog-device-manager%2Fedgehog-device-runtime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgehog-device-manager%2Fedgehog-device-runtime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgehog-device-manager%2Fedgehog-device-runtime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edgehog-device-manager","download_url":"https://codeload.github.com/edgehog-device-manager/edgehog-device-runtime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgehog-device-manager%2Fedgehog-device-runtime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31509941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["device-management","edge","edgehog","edgehog-device","hacktoberfest","iot","iot-device","linux","ota-update","rust"],"created_at":"2026-02-11T18:18:30.396Z","updated_at":"2026-04-07T12:02:10.227Z","avatar_url":"https://github.com/edgehog-device-manager.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nThis file is part of Edgehog.\n\nCopyright 2022 - 2025 SECO Mind Srl\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nSPDX-License-Identifier: Apache-2.0\n--\u003e\n\n# Edgehog Device Runtime\n\n[![CI](https://github.com/edgehog-device-manager/edgehog-device-runtime/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/edgehog-device-manager/edgehog-device-runtime/actions/workflows/ci.yaml?branch=main)\n[![codecov](https://codecov.io/gh/edgehog-device-manager/edgehog-device-runtime/branch/main/graph/badge.svg)](https://app.codecov.io/gh/edgehog-device-manager)\n\nEdgehog Device Runtime is a portable middleware written in [Rust](https://www.rust-lang.org/), that\nenables remote device management using [Edgehog](https://github.com/edgehog-device-manager/edgehog).\n\n## Supported Operating System\n\nAt the moment only Linux-based systems are supported.\n\nSee also [OS requirements](doc/os_requirements.md) for further information.\n\n## Implemented Features\n\nThe following information are sent to remote Edgehog instance:\n\n- OS info (data is read from `/etc/os-release`)\n- Hardware info\n- System status (data is read from proc filesystem)\n- Runtime info and compiler version\n- OTA update using RAUC\n- `Edgehog Device Runtime` status changes via systemd.\n- Network interface info\n- Base image (data is read from `/etc/os-release`)\n- Battery status data\n- Remote Terminal\n- Container service\n\n## How it Works\n\nEdgehog Device Runtime relies on [Astarte](https://github.com/astarte-platform/astarte) in order to\ncommunicate with the remote Edgehog instance.\n\nEdgehog Device Runtime is a reference implementation of\n[Edgehog Astarte Interfaces](https://github.com/edgehog-device-manager/edgehog-astarte-interfaces).\nAstarte interfaces describe how data are exchanged with the remote instance, and what kind of\nfeatures are implemented.\n\n## Configuration\n\nEdgehog Device Runtime can be configured using a [TOML](https://en.wikipedia.org/wiki/TOML) file\nlocated either in $PWD/edgehog-config.toml or /etc/edgehog/config.toml, or in a custom path, run\n`cargo run -- --help` for more information.\n\n### Supported Astarte transport libraries\n\nEdgehog Device Runtime supports the following libraries to communicate with the remote Edgehog\ninstance:\n\n1. `astarte-device-sdk`\n2. `astarte-message-hub`\n\n#### 1. [Astarte Device SDK Rust](https://github.com/astarte-platform/astarte-device-sdk-rust)\n\nThe Astarte Device SDK for Rust is a ready to use library that provides communication and pairing\nprimitives to an Astarte Cluster.\n\nExample configuration:\n\n```toml\nastarte_library = \"astarte-device-sdk\"\ninterfaces_directory = \"/usr/share/edgehog/astarte-interfaces/\"\nstore_directory = \"/var/lib/edgehog/\"\ndownload_directory = \"/var/tmp/edgehog-updates/\"\n[astarte_device_sdk]\ncredentials_secret = \"YOUR_CREDENTIAL_SECRET\"\ndevice_id = \"YOUR_UNIQUE_DEVICE_ID\"\npairing_url = \"https://api.astarte.EXAMPLE.COM/pairing\"\nrealm = \"examplerealm\"\n[[telemetry_config]]\ninterface_name = \"io.edgehog.devicemanager.SystemStatus\"\nenabled = true\nperiod = 60\n```\n\n#### [Astarte Message Hub](https://github.com/astarte-platform/astarte-message-hub)\n\nA central service that runs on (Linux) devices for collecting and delivering messages from N apps\nusing 1 MQTT connection to Astarte.\n\n**N.B.** When using this option, the Astarte Message Hub should already be installed and running on\nyour system.\n\nExample configuration:\n\n```toml\nastarte_library = \"astarte-message-hub\"\ninterfaces_directory = \"/usr/share/edgehog/astarte-interfaces/\"\nstore_directory = \"/var/lib/edgehog/\"\ndownload_directory = \"/var/tmp/edgehog-updates/\"\n[astarte_message_hub]\nendpoint = \"http://[::1]:50051\"\n[[telemetry_config]]\ninterface_name = \"io.edgehog.devicemanager.SystemStatus\"\nenabled = true\nperiod = 60\n```\n\n## Telemetry\n\nEdgehog Device Runtime sends telemetry data from interfaces defined in the\n[edgehog-astarte-interfaces](https://github.com/edgehog-device-manager/edgehog-astarte-interfaces)\nrepository. Here's how to configure some key values.\n\n### Image ID and Version\n\nThe device runtime extracts the image name and version from the `/etc/os-release` file. Example:\n\n```sh\n# /etc/os-release\nIMAGE_ID=\"...\"\nIMAGE_VERSION=\"...\"\n```\n\n### Serial and Part Number\n\nSet the model and part number as environment variables:\n\n- `EDGEHOG_SYSTEM_SERIAL_NUMBER`\n- `EDGEHOG_SYSTEM_PART_NUMBER`\n\nFor example, in a systemd service file, refer to\n[this buildroot package](https://github.com/edgehog-device-manager/edgehog-buildroot-packages/blob/d3fdb188b7c683d3951c255d32ee2781be416e83/package/edgehog-device-runtime/edgehog-device-runtime.service#L17-L18).\n\n## Containers\n\nEdgehog Device Runtime can manage containerized applications when compiled with the features\n`containers`.\n\nThe container service can be configured in the main `config.toml`, by adding the following map:\n\n```toml\n[containers]\n# If the container service cannot be initialized it will exit the device runtime with an error\nrequired = false\n# Maximum number of retries if the service is require.\nmax_retires = 10\n```\n\n## Contributing\n\nWe are open to any contribution:\n[pull requests](https://github.com/edgehog-device-manager/edgehog-device-runtime/pulls),\n[bug reports and feature requests](https://github.com/edgehog-device-manager/edgehog-device-runtime/issues)\nare welcome.\n\n## License\n\nEdgehog Device Runtime source code is released under the Apache 2.0 License.\n\nCheck the [LICENSE](LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgehog-device-manager%2Fedgehog-device-runtime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedgehog-device-manager%2Fedgehog-device-runtime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgehog-device-manager%2Fedgehog-device-runtime/lists"}