MCPcopy Index your code
hub / github.com/UpdateHub/updatehub

github.com/UpdateHub/updatehub @2.1.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.1.5 ↗ · + Follow
646 symbols 1,653 edges 100 files 22 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FOSSA Status Coverage Status

Platform Build Status
Linux - x86_64 build status
Linux - AArch64 build status
Linux - ARMv7 build status

UpdateHub is an enterprise-grade solution which makes simple to remotely update all your embedded devices in the field. It handles all aspects related to sending Firmware Over-the-Air (FOTA) updates with maximum security and efficiency, making your project the center of your attention.

This repository provides the UpdateHub agent for Embedded and Industrial Linux-based devices.

Getting started

To start using UpdateHub, it is suggested that you follow the Getting started guide in the UpdateHub documentation.

Features

The support provided by the UpdateHub for the device includes:

  • Bootloader upgrade support (U-Boot and GRUB)
  • Flash support (NAND, NOR)
  • UBIFS support
  • Update package signature validation for security
  • Automated rollback in case of update fail
  • Conditional installation (content, version and custom pattern support)
  • Callback support for every update step
  • HTTP API to control and inquiry the local agent

To learn more about UpdateHub, check out our documentation.

Building and testing

The UpdateHub agent is developed using Rust programing language due its focus in safety and system level integration. In case you wish to build it, you can:

cargo build --release

Some tests are marked as ignored because they require user previleges. There's a Vagrant file that can be used to run them. To run tests on the virtual machine run:

vagrant up
vagrant ssh

and inside the SSH session, run:

sudo -i
cd /vagrant
cargo test
cargo test -- --ignored

License

Licensed under Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0).

Contributing

UpdateHub is an open source project and we love to receive contributions from our community. If you would like to contribute, please read our contributing guide.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Extension points exported contracts — how you extend this code

StateChangeImpl (Interface)
(no doc) [12 implementers]
updatehub/src/states/mod.rs
CallbackReporter (Interface)
(no doc) [6 implementers]
updatehub/src/states/mod.rs
Installer (Interface)
(no doc) [12 implementers]
updatehub/src/object/installer/mod.rs
IdExt (Interface)
Utility functions for [Gid](pkg_schema::definitions::target_permissions::Gid) and [Uid](pkg_schema::definitions::target_ [2 …
updatehub/src/utils/definitions.rs
TargetTypeExt (Interface)
Utility functions for [TargetType](pkg_schema::definitions::TargetType) [1 implementers]
updatehub/src/utils/definitions.rs

Core symbols most depended-on inside this repo

to_string
called by 62
updatehub/src/mem_drain.rs
run
called by 20
updatehub/src/states/mod.rs
len
called by 20
updatehub-sdk/src/api/info/firmware.rs
move_to_next_state
called by 18
updatehub/src/states/mod.rs
create_echo_bins
called by 16
updatehub/src/object/installer/mod.rs
status
called by 12
updatehub/src/object/info.rs
get_target
called by 11
updatehub/src/utils/definitions.rs
handle
called by 8
updatehub/src/states/mod.rs

Shape

Function 251
Method 239
Class 101
Enum 44
Interface 11

Languages

Rust100%

Modules by API surface

updatehub/src/runtime_settings.rs31 symbols
updatehub/tests/common.rs26 symbols
updatehub/src/states/mod.rs21 symbols
updatehub/src/firmware/tests.rs18 symbols
updatehub-sdk/tests/openapi_integration.rs18 symbols
updatehub/src/states/machine/mod.rs16 symbols
updatehub/src/settings.rs16 symbols
updatehub/src/tests.rs15 symbols
updatehub/src/mem_drain.rs14 symbols
updatehub/src/main.rs14 symbols
updatehub-sdk/src/api/info/firmware.rs14 symbols
updatehub-cloud-sdk/tests/integration_test.rs14 symbols

For agents

$ claude mcp add updatehub \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact