{"id":21455461,"url":"https://github.com/updatehub/updatehub","last_synced_at":"2025-05-16T02:07:22.629Z","repository":{"id":18930590,"uuid":"85603248","full_name":"UpdateHub/updatehub","owner":"UpdateHub","description":"A generic and safe Firmware Over-The-Air (FOTA) agent for Embedded and Industrial Linux-based devices","archived":false,"fork":false,"pushed_at":"2025-04-14T16:21:47.000Z","size":2656,"stargazers_count":124,"open_issues_count":7,"forks_count":22,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-16T02:07:18.794Z","etag":null,"topics":["embedded-linux","firmware-updater","firmware-updates","industrial-linux","over-the-air","update-service","updatehub","updatehub-linux-agent","yocto"],"latest_commit_sha":null,"homepage":"https://updatehub.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UpdateHub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2017-03-20T16:59:06.000Z","updated_at":"2025-05-11T15:40:25.000Z","dependencies_parsed_at":"2024-03-07T19:28:11.358Z","dependency_job_id":"b5c3bea7-3ba1-4d80-9bae-e45c581b0323","html_url":"https://github.com/UpdateHub/updatehub","commit_stats":{"total_commits":784,"total_committers":13,"mean_commits":60.30769230769231,"dds":0.5433673469387755,"last_synced_commit":"004317f48e396921c1bd0439ccfe1a862a418e05"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpdateHub%2Fupdatehub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpdateHub%2Fupdatehub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpdateHub%2Fupdatehub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpdateHub%2Fupdatehub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UpdateHub","download_url":"https://codeload.github.com/UpdateHub/updatehub/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453652,"owners_count":22073617,"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":["embedded-linux","firmware-updater","firmware-updates","industrial-linux","over-the-air","update-service","updatehub","updatehub-linux-agent","yocto"],"created_at":"2024-11-23T05:12:14.494Z","updated_at":"2025-05-16T02:07:22.602Z","avatar_url":"https://github.com/UpdateHub.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"doc/logo.png\"\u003e\u003c/p\u003e\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FUpdateHub%2Fupdatehub.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FUpdateHub%2Fupdatehub?ref=badge_shield)\n[![Coverage Status](https://coveralls.io/repos/github/Updatehub/updatehub/badge.svg?branch=master)](https://coveralls.io/github/Updatehub/updatehub?branch=master)\n\n| Platform | Build Status |\n| -------- | ------------ |\n| Linux - x86_64 | [![build status](https://github.com/Updatehub/updatehub/workflows/CI%20-%20Linux%20-%20x86_64/badge.svg)](https://github.com/Updatehub/updatehub/actions) |\n| Linux - AArch64 | [![build status](https://github.com/Updatehub/updatehub/workflows/CI%20-%20Linux%20-%20AArch64/badge.svg)](https://github.com/Updatehub/updatehub/actions) |\n| Linux - ARMv7 | [![build status](https://github.com/Updatehub/updatehub/workflows/CI%20-%20Linux%20-%20ARMv7/badge.svg)](https://github.com/Updatehub/updatehub/actions) |\n\n---\n\n**UpdateHub** is an enterprise-grade solution which makes simple to remotely\nupdate all your embedded devices in the field. It handles all aspects related to\nsending Firmware Over-the-Air (FOTA) updates with maximum security and\nefficiency, making your project the center of your attention.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"doc/workflow.png\"\u003e\u003c/p\u003e\n\nThis repository provides the **UpdateHub** agent for Embedded and Industrial\nLinux-based devices.\n\n## Getting started\n\nTo start using **UpdateHub**, it is suggested that you follow the [Getting\nstarted](https://docs.updatehub.io/quick-starting-with-raspberrypi3/) guide in\nthe **UpdateHub** documentation.\n\n## Features\n\nThe support provided by the **UpdateHub** for the device includes:\n\n- Bootloader upgrade support (U-Boot and GRUB)\n- Flash support (NAND, NOR)\n- UBIFS support\n- Update package signature validation for security\n- Automated rollback in case of update fail\n- Conditional installation (content, version and custom pattern support)\n- Callback support for every update step\n- HTTP API to control and inquiry the local agent\n\nTo learn more about UpdateHub, check out our [documentation](https://docs.updatehub.io).\n\n## Building and testing\n\nThe **UpdateHub** agent is developed using Rust programing language due its\nfocus in safety and system level integration. In case you wish to build it, you\ncan:\n\n```bash\ncargo build --release\n```\n\nSome tests are marked as ignored because they require user previleges. There's a\nVagrant file that can be used to run them. To run tests on the virtual machine\nrun:\n\n```bash\nvagrant up\nvagrant ssh\n```\n\nand inside the SSH session, run:\n\n```bash\nsudo -i\ncd /vagrant\ncargo test\ncargo test -- --ignored\n```\n\n## License\n\nLicensed under Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0).\n\n## Contributing\n\n**UpdateHub** is an open source project and we love to receive contributions\nfrom our community. If you would like to contribute, please read our\n[contributing guide](CONTRIBUTING.md).\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupdatehub%2Fupdatehub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fupdatehub%2Fupdatehub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupdatehub%2Fupdatehub/lists"}