IoTHubby 0.9.0
dotnet add package IoTHubby --version 0.9.0
NuGet\Install-Package IoTHubby -Version 0.9.0
<PackageReference Include="IoTHubby" Version="0.9.0" />
<PackageVersion Include="IoTHubby" Version="0.9.0" />
<PackageReference Include="IoTHubby" />
paket add IoTHubby --version 0.9.0
#r "nuget: IoTHubby, 0.9.0"
#:package IoTHubby@0.9.0
#addin nuget:?package=IoTHubby&version=0.9.0
#tool nuget:?package=IoTHubby&version=0.9.0
IoTHubby
A high-performance, NativeAOT-friendly and trimmable .NET SDK for the device and module side of Azure IoT Hub and Azure IoT Edge, speaking MQTT only (built on the Mqtt.Client library). Sorry, no AMQP, no HTTP transport.
IoTHubby is a clean-room implementation with wire/byte-compatibility to the official Azure IoT Hub SDK (topic strings, username format, SAS token format, property-bag encoding, api-version) — the public API is designed for more modern and simpler ergonomics.
Design goals 🎯
- You don't manage plumbing. Connect once; auto-reconnect, automatic re-subscription, SAS token auto-renewal, and rotation-triggered reconnect are handled for you.
- Modern, ergonomic API.
IAsyncEnumerable<T>streams for cloud-to-device messages, direct-method requests, and desired-property updates; optional zero-copy inline handlers. - Opt-in DI seams. Bring your own reconnect policy, SAS/token provider,
TimeProvider, or logger — every seam has a sensible built-in default. - Maximum performance.
Span<T>,BinaryPrimitives, UTF-8 transcoding,ArrayPool<T>, andIBufferWriter<byte>on the hot paths (topic building, property-bag codec, SAS signing); pooled inbound payloads fromMqtt.Client. - AOT + trim clean on net8.0/net9.0/net10.0; JSON handled through a source-generated
System.Text.Jsoncontext.
Packages 📦
| Package | Contents |
|---|---|
IoTHubby |
Device & module client, telemetry (D2C), C2D, direct methods, twin, DPS provisioning. |
IoTHubby.Edge |
IoT Edge module bootstrap from environment, Edge Workload API (SAS signing + trust bundle), module-to-module input/output routing. |
Documentation 📚
| Guide | Contents |
|---|---|
| API usage guide | Installation, device and module clients, telemetry, C2D, direct methods, twins, Edge bootstrap, DPS, options, lifecycle, errors, and AOT notes. |
| MQTT wire mapping | Exact Azure IoT Hub MQTT topics, username/password shapes, property bag encoding, DPS topics, and wire limits. |
Samples
See samples/README.md for runnable quickstarts covering telemetry, cloud-to-device messages, direct methods, twins, module routes, and IoT Edge environment bootstrap.
Target frameworks
netstandard2.0, netstandard2.1, net8.0, net9.0, net10.0. On netstandard2.0/2.1 some advanced, platform-specific features (e.g. the Edge Workload API over a Unix-domain socket / named pipe) degrade gracefully; net8.0+ is fully featured.
Wire compatibility & limitations
IoTHubby follows the documented Azure IoT Hub MQTT conventions. Note the MQTT wire limits of IoT Hub:
- Only QoS 0 and 1 are supported (no QoS 2), and retain is not honored by the hub.
- Cloud-to-device messages are completed implicitly via the QoS 1
PUBACK; abandon/reject are not available over MQTT. - File upload (which requires HTTPS + Blob storage) is out of scope.
Status
Early development (0.9.x). API is approaching stable but may still change before 1.0.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Mqtt.Client (>= 1.1.0)
- System.IO.Pipelines (>= 9.0.0)
- System.Memory (>= 4.6.3)
- System.Text.Json (>= 9.0.0)
- System.Threading.Channels (>= 9.0.0)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
.NETStandard 2.1
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Mqtt.Client (>= 1.1.0)
- System.IO.Pipelines (>= 9.0.0)
- System.Text.Json (>= 9.0.0)
- System.Threading.Channels (>= 9.0.0)
-
net10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Mqtt.Client (>= 1.1.0)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Mqtt.Client (>= 1.1.0)
- System.IO.Pipelines (>= 9.0.0)
- System.Text.Json (>= 9.0.0)
- System.Threading.Channels (>= 9.0.0)
-
net9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Mqtt.Client (>= 1.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on IoTHubby:
| Package | Downloads |
|---|---|
|
IoTHubby.Edge
IoT Edge extensions for IoTHubby: bootstrap a module client from the IoT Edge runtime environment, the Edge Workload API (SAS signing and CA trust bundle over a Unix-domain socket / named pipe), and module-to-module input/output routing. On netstandard2.0/2.1 the Workload API degrades gracefully; net8.0+ is fully featured. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.9.0 | 32 | 7/9/2026 |