Releases: eclipse-hawkbit/hawkbit
1.0.3
1.0.2
1.0.1
1.0 🎉
Eclipse hawkBit™ 1.0 - The Open-Source Standard for IoT Software Updates Has Arrived
We are thrilled to announce the official 1.0 release of Eclipse hawkBit - the culmination of years of community-driven development, 84 contributors, nearly 4,000 commits, 20 releases, and a relentless focus on making over-the-air software updates for IoT devices reliable, scalable, and secure.
This is more than a version number. hawkBit 1.0 signals production readiness, API stability, and a platform you can confidently build your IoT update infrastructure on - today and for years to come.
The Journey
From its first public milestone to the 1.0 release, hawkBit was shaped by deliberate, careful engineering - 27 milestones, 2,442 pull requests, and a clear trajectory from experimental to enterprise-grade. hawkBit didn't just reach 1.0 - it accelerated into it.
hawkBit now holds Eclipse Mature project status - the highest maturity level in the Eclipse Foundation.
What hawkBit Delivers
hawkBit is a domain-independent back-end framework for rolling out software updates to constrained edge devices, powerful gateways, and everything in between. It is built for operators who need control, scale, and flexibility - whether in automotive, industrial automation, smart buildings, telecommunications, or consumer IoT.
- Three integration APIs - DDI (REST/HTTP) for direct device polling, DMF (AMQP/RabbitMQ) for federated device management through gateways, and a full Management REST API for orchestration and tooling.
- Enterprise-grade operations - multi-tenancy with full tenant isolation, cascading rollout groups with configurable success/error thresholds and emergency shutdown, approval workflows with third-party integration, and fine-grained role-based access control.
- Security at every layer - per-device security tokens, gateway tokens for fleet management, mTLS certificate authentication, OAuth 2.0/OIDC, and entity-level access control.
- Deployment flexibility - run as a monolith or split into microservices. Scale horizontally with Spring Cloud. Self-host with full sovereignty over your update infrastructure.
Helps you comply with legal obligations such as:
- Product Security and Telecommunications Infrastructure Bill(UK starting 2023/12)
- Radio Equipment Directive Cyber Security Commission Delegated Regulation (EU 2022/30)
- ETSI EN 303 645
The Ecosystem
hawkBit does not stand alone. It is the server at the center of a broad, proven ecosystem of device clients and platform integrations.
Commercial offerings like Bosch IoT Rollouts and Kynetics Update Factory build on top of hawkBit as their foundation - further validating its production maturity.
Device Integration
hawkBit's HTTP/JSON-based DDI API makes client integration straightforward, which is why it has attracted numerous integrations across a wide range of platforms:
- Eclipse Hara - hara-ddiclient Kotlin library
- SWUpdate - embedded Linux update agent
- rauc-hawkbit-updater - RAUC client in C
- rauc-hawkbit - RAUC client in Python
- hawkbit-rs - Rust crates for hawkBit clients
- Zephyr RTOS - embedded/IoT kernel
- ChirpStack - LoRaWAN Network Server
Thank You
hawkBit 1.0 exists because of a community that believed in building something durable.
- To the 84 contributors who shaped this project across 2,442 pull requests.
- To our committers - who have carried the torch across a decade of development.
- To Bosch, for sponsoring hawkBit's development from day one and believing in open-source IoT infrastructure.
- To the Eclipse Foundation, for providing the vendor-neutral governance that makes hawkBit a project the entire industry can trust.
You proved the value long before 1.0 made it official.
This release belongs to all of you.
Release 0.10.0 serves as the mandatory migration baseline for existing deployments, clearing the path for this moment.
0.10.0
IMPORTANT ❗
hawkBit 0.10.0 is a required migration step and establishes the baseline for the upcoming 1.0.0 release. Deploying 0.10.0 first is mandatory for existing setups and ensures database migrations and configuration changes are applied in the correct order.
🚀 New features
- New MCP (Model Context Protocol) server for hawkBit (#2871, #2923)
- Introduced target grouping support (#2538)
- Rollout Stop operation (#2595) with UI support (#2929)
- Pause success action for rollout groups (#2867, #2877)
- Action history cleanup/purge (#2728)
- Configurable polling time overrides (#2533)
- Introduced service-level events (#2588)
- Filter actions by createdAt and lastModifiedAt timestamps (#2546)
- Fine-grained permissions for targets, distribution sets, target types, distribution set types, software module types, and repository operations (#2535, #2545, #2562, #2649, #2660, #2676)
- JSON security context serializer (human-readable, smaller footprint) replacing Java serialization (#2652, #2677)
- Added EntityMatcher for in-memory RSQL evaluation (#2531)
- Deeper RSQL search support and shortcut fields (#2682, #2686, #2696)
- Pluggable QL for EntityManager (#2698)
- Support for action cancellation in DDI controller SDK (#2846)
- Group support in the create-target dialog in the UI (#2552)
- Metadata management in the UI (#2870)
- Target filter query view in the UI (#2892)
👍🏻 Improvements
- 429 (Too Many Requests) response on quota hit (#2834)
- REST APIs now return 204 No Content (without body) for successful delete/update operations (#2793)
- Schema unification across databases (MySQL, PostgreSQL, H2) (#2906, #2909, #2922, #2930)
- Migrated remote events from Spring Bus to Spring Cloud Stream (#2563, #2576)
- Extracted RSQL/QL into a separate top-level module (hawkbit-ql) (#2531, #2532, #2808)
- Software module completeness property (#2765)
- Distribution set locked flag fully governs functional modification (#2766)
- Caching improvements: cache eviction in microservice mode (#2503), caches for SM/DS/Target types (#2784), refactored cache infrastructure (#2775, #2777)
- Tenant configuration values changed from varchar to text for larger values (#2938)
- AutoAssign scheduler with tenant-level locking and configurable parallelism (#2843)
- Flyway callback support in DB init (#2764)
- Auditor-aware principal definition (#2654), username as auditor (#2661)
- Tenant added to security context for audit logging (#2885)
- AccessContext.asTenant convenience method (#2838)
- Refactored TenantAware — removed TenantRunner, uses standard Runnable/Callable (#2755)
- Optimized target retrieval via REST API (#2757)
- Optimized API responses (#2880)
- OAuth2 granted authorities refactoring (#2684)
- Abstracted repository management with common RepositoryManagement pattern for target tags (#2580), target types (#2581), target filter queries (#2587), distribution sets (#2591), software
modules (#2594), targets (#2599) - Abstract metatype implementation (#2575)
- EclipseLink static instrumentation fix (#2542)
- Customizable retry for SDK HTTP client (#2523)
- Renamed "Simple UI" to just "UI" (#2809)
- OIDC ID token refresh improvements in the UI (#2534)
- Various UX improvements: smoother item selection during creation (#2878), clearer target detail view (#2882), tag quoting for whitespace (#2890), and more (#2554, #2901)
🐞 Bugs fixed
- EclipseLink static instrumentation fix (#2542)
- Fix register target dialog — controller ID field (#2750)
- Fix complex attribute RSQL filters (#2564)
- Fix DS type update not to remove mandatory/optional module types (#2598)
- Fix getAllAuthorities (#2548)
- Fix Protostuff message converter (#2583)
- Fix limited DS complete filtering (#2780)
- Fix action delete access control — requires only target update (#2767)
- Fix EntityMatcher case sensitivity config (#2706)
- Fix EntityMatcher for Identifiable.getId (#2724)
- Fix auto cleanup actions configuration value on set (#2805)
- Fix tenant scope on retrieval of target groups (#2847)
- Fix file upload buffering in SDK (#2610)
- Fix target view when no last poll available (#2530)
- Fix Simple UI login (#2674)
⬆️ Version upgrades
- Docker base image bumps: 21.0.7 → 21.0.8 → 21.0.9 → 21.0.10 (#2592, #2795, #2908)
- Spring Boot upgrades: 3.5.3 → 3.5.4 → 3.5.5 → 3.5.6 → 3.5.7 → 3.5.8 → 3.5.9 → 3.5.10 → 3.5.11
- Spring Cloud upgrade to 2025.0.1 (#2862)
❗ Removed features/deprecations and non-backward compatible changes
- Multi-assignments removed — the feature and all related configuration have been removed (#2893)
- SYSTEM_ADMIN role removed (#2936)
- ROLE_CONTROLLER_ANONYMOUS removed (#2948)
- DOWNLOAD_REPOSITORY_ARTIFACT permission removed (deprecated) (#2709); renamed READ_SOFTWARE_MODULE_DOWNLOAD to READ_SOFTWARE_MODULE_ARTIFACT (#2710)
- typeName removed from distribution set RSQL filtering (#2570)
- System Management REST API removed (#2761)
- VirtualPropertyReplacer removed — replaced by new QL abstractions (#2701)
- VirtualPropertyReplacer and old Specification builders removed (#2697, #2701, #2801)
- Legacy RSQL-to-Specification builders removed (#2801)
- Java serialization of security context removed — JSON serializer is now the only option (#2677)
- Reverse proxy default headers changes to X-Controller-Id and X-Authority-%d, semantics of authority header changed. The config properties changed (#2954)
- Maven module restructuring (#2806, #2808) — module paths have changed
0.9.0
🚀 New features
- Audit Logging (#2314)
- Distributed Lock (#2333)
- CORS Support for DDI API (#2337)
- OAuth Support for Simple UI (#2400)
👍🏻 Improvements
- Unify Eclipselink & Hibernate Exception Translations (#2388)
- Improve dialogs in SimpleUI (#2401)
- Add Poll & Update Status and improve target filtering in SimpleUI (#2404)
- Unify Target Attributes and Metadata (#2408)
- Show Target Details in Side panel in SimpleUI (#2428)
🐞 Bugs fixed
- Fix AMQP retries when attribute characters are invalid (#2327)
⬆️ Version upgrades
- Vaadin version to 24.7.4 (#2402)
❗ Removed features/deprecations
0.8.0
0.7.0
🚀 New features
- EXPERIMENTAL: Hibernate support (#2147)
👍🏻 Improvements
- Refactoring of RepostioryManagement and extending classes (#2174)
- Docker images improvements (#2088)
⬆️ Version upgrades
- Spring Boot version to 3.4.1 (#2169)
🐞 Bugs fixed
- Fix typos in SpServerError.java (#1831) and (#2173) ❗
- Fix pause of rollout on error condition (#2161)
- Fix RSQL G2 visitor OR optimizaton (#2135)
❗ Removed features/deprecations
0.6.1
🚀 New features
- Add DMF support in hawkbit SDK (#1708)
- Introduce READ_TENANT_CONFIGURATION permission (#1713)
- Add docker configuration for Simple UI (#1719)
- Support for OAuth2 resource server with issuer URI (#1731)
- Add PollStatus to result of list targets via REST API (#1734)
- Add REST method for update rollout (#1749)
- Tests for dynamic rollouts (#1777)
👍🏻 Improvements
- Ignore isEmpty methods in MgmtTargetAttributes and MgmtDistributionSetAssignments in order to avoid invalid schematic (#1794)
- Involve all targets in dynamic rollout (#1795)
- Improve building of SQL from an RSQL query (#1766)
- Prevent deletion of Software Module of locked DS #1793 (#1793)
- Optimize RSQL Visitor G2 (#1828)
- Refactor RSQL search fields related classes (#1834)
⬆️ Version upgrades
- Spring version to 3.3.5 (#1914)
🐞 Bugs fixed
- Handle error when iterating over active rollouts (#1747)
- Fix lastModifiedBy on modification perfomed by the JpaRolloutExecutor (#1748)
❗ Removed features
- Remove download by downloadId functionality (#1820)
0.5.0
🚀 New features
- Add EXPERIMENTAL support for dynamic rollouts (#1533)
- Support for Software Module & Distribution Set lock (#1580)
- Distribution Set implicit lock: Support testing mode (#1651)
- Make Amqp Handler service conditional (#1567)
- Expose externalRef in Rest API (#1655)
- Add roles and hierarchies (#1673)
👍🏻 Improvements
- Fix missing information in rest doc (#1618)
⬆️ Version upgrades
- Spring version to 3.2.2 (#1584)
🐞 Bugs fixed
- Fix rollout and rollout group status in Simple UI (#1636)
❗ Removed features
- Vaadin 8 based UI is removed from hawkBit as announced in Vaadin 8 UI Discontinuation (#1510, see also #1376)
