Third-Party Component Licences

Last updated: 30 August 2026

ThreadWare is built on open-source and third-party components. This page lists them, and the licence each one is used under. It is reviewed and republished at every ThreadWare release.

ThreadWare itself is licensed, not sold. The components below carry their own licences and nothing here grants any right to ThreadWare’s own source code. Equally, nothing in any Lomapax agreement restricts your rights under these licences in respect of those components alone. The full open-source notices file — the complete text of every licence listed here — is supplied with the software as THIRD_PARTY_NOTICES.md, and is available on request.

Why we publish this

Most of these components are permissively licensed — MIT, Apache-2.0, BSD, the PostgreSQL licence — and those licences ask for very little: essentially that the copyright and permission notice travels with the software. Publishing this register is how we meet that obligation.

There is a second reason, which matters more to our customers. Component licences change. In 2025 a charting library we used moved from MIT to a revenue-gated commercial licence; we removed it and replaced it with an MIT alternative. A component that is free today can become chargeable at the next version, and the only defence is to know exactly what is in the product and to check before upgrading. We review every component licence at every release, and we will not adopt a version that introduces a charge or a restriction for a customer without telling them first.

Platform and runtime

ComponentRole in ThreadWareLicence
.NET / ASP.NET CoreRuntime, web API, hostingMIT
.NET MAUI, Microsoft.Maui.ControlsAndroid and iOS applicationsMIT
Microsoft.AspNetCore.* (Identity, Components, WebAssembly, JwtBearer)Authentication, Blazor, WebAssembly hostingMIT
Microsoft.Extensions.* (Hosting, Configuration, Logging)Host, configuration, Windows servicesMIT
Microsoft.IdentityModel.*, System.IdentityModel.Tokens.JwtToken issue and validationMIT
System.Device.Gpio, IoT.Device.BindingsEdge device I/OMIT
Xamarin.AndroidX.BiometricBiometric sign-in on AndroidMIT binding over AndroidX (Apache-2.0)
CommunityToolkit.MauiMobile application helpersMIT
SixLabors.ImageSharpImage handling on the Raspberry Pi collector, via IoT.Device.BindingsApache-2.0

Database and data access

ComponentRole in ThreadWareLicence
PostgreSQLPrimary databasePostgreSQL Licence
TimescaleDBTime-series tag dataApache-2.0 (core) / Timescale Community
pgvectorVector search for the AI assistantPostgreSQL Licence / MIT (.NET client)
pg_cronIn-database schedulingPostgreSQL Licence
Npgsql, Npgsql.EntityFrameworkCore.PostgreSQLPostgreSQL data accessPostgreSQL Licence
Microsoft.EntityFrameworkCoreObject-relational mapping and migrationsMIT
Microsoft.Data.SqlClientSQL Server secondary databaseMIT

User interface

ComponentRole in ThreadWareLicence
MudBlazorPrimary UI component libraryMIT
Plotly.Blazor and plotly.jsCharts and trendsMIT
BlazorDateRangePickerDate range selectionMIT
Blazored.LocalStorage / SessionStorageClient-side storageMIT
LeafletForBlazor and LeafletMapsMIT wrapper over Leaflet (BSD-2-Clause)
NetcodeHub.Packages.Components.FileUploadFile uploadMIT
IBM Plex Sans / IBM Plex MonoTypefacesSIL Open Font Licence 1.1

AI, documents, logging and integration

ComponentRole in ThreadWareLicence
Microsoft.SemanticKernelAI orchestration and agentsMIT
Serilog and its sinksStructured loggingApache-2.0
Hangfire.CoreBackground jobs and schedulesLGPL-3.0 — the free core library, used unmodified. Hangfire Pro and Ace are commercial and are not used.
Newtonsoft.JsonJSON serialisationMIT
Swashbuckle.AspNetCoreOpenAPI documentationMIT
NWebsec.AspNetCore.MiddlewareSecurity headersBSD-3-Clause
ClosedXML, ClosedXML.ReportSpreadsheet generationMIT
DocumentFormat.OpenXmlWord and Excel documentsMIT
PDFsharp-MigraDocPDF generationMIT
QRCoderQR codes on visitor passesMIT
ZXing.Net.Maui, ZXing.NetCamera scanning of visitor passes (phone app)MIT; ZXing.Net Apache-2.0
Xamarin.AndroidX.Camera (CameraX)Android camera for pass scanningMIT AND Apache-2.0
UglyToad.PdfPigPDF text extraction for the AI assistantApache-2.0
PDFtoImagePDF page renderingMIT, bundling PDFium (BSD-3-Clause)
NModbusModbus device communicationMIT
OPCFoundation.NetStandard.Opc.UaOPC-UA client for plant device dataOPC Foundation MIT License 1.00 (MIT)
Smtp2Go.ApiClientTransactional e-mailMIT (client); the service under its own terms
AWSSDK.S3Optional object storageApache-2.0 — only where enabled
Azure.IdentityOptional identityMIT — only where enabled
System.IO.Packaging, System.Data.OleDb, System.Runtime.Serialization.FormattersLegacy document and data interopMIT

The AI provider

The AI assistant uses a commercial AI provider — currently OpenAI — under that provider’s API terms and price list. This is a usage-based service rather than a licensed component: it is charged per use, the provider may change its prices and retire models, and we may substitute a provider of equivalent capability on notice.

Licences the customer holds

These are not ours to grant. Where they apply, the customer holds them directly.

ItemNote
Any SCADA system, data historian and data access component for a clients' dataRequired for any third-party application to read data programmatically. A prerequisite, not something we can supply.
Windows Server, and SQL Server or CALs where applicableThe customer’s own operating environment
OCR software for scanned image-only documentsOnly where scanned documents are in scope
An AI provider account, where the customer holds its ownUsage-based and billed by the provider
Google Play and the Apple App StoreThe mobile applications are distributed under the stores’ own terms

Accuracy, and which document prevails

This page is compiled by hand from the licence files and package metadata that each component ships. It is published in good faith and reviewed at every ThreadWare release, but it is a reproduction offered for convenience — not a definitive statement of any third party’s licence terms — and it may contain errors or omissions.

Where anything on this page differs from the licence as published by the copyright holder, that publisher’s own licence prevails. Nothing here varies, extends or limits the rights and obligations those licences create, and nothing here reduces what they require of us. Components also change between releases, so the notices file shipped with your version of the software is the one that describes that version.

If you find an error, a missing component, or any conflict between this page and a publisher’s own licence, please tell our administrator at admin@threadware.co.za rather than assume it is deliberate. Corrections are made at the source and republished everywhere the register appears.

Questions

Lomapax (Pty) Ltd — admin@threadware.co.za. A dated copy of this register, or of the full notices file carrying each licence in its entirety, is available on request for your records. See also our Terms of Use and Privacy Policy.