The Things Stack follows a API driven microservice architecture, well suited for high availability and reliability.
The Things Stack has the following main components.
||Maintains connections with gateways supporting the Basic Station, UDP, MQTT and gRPC protocols. It forwards uplink traffic to Network Servers directly or indirectly, and schedules downlink traffic on gateways.|
||Handles the LoRaWAN® network layer, including MAC commands, regional parameters and adaptive data rate (ADR).|
||Handles the LoRaWAN application layer, including uplink data decryption and decoding, downlink queuing and downlink data encoding and encryption.|
||Provides the registries that store entities such as applications with their end devices, gateways, users, organizations, OAuth clients and authentication providers. It also manages access control through memberships and API keys.|
||Handles the LoRaWAN join flow, including Network and Application Server authentication and session key generation.|
|Device Claiming Server||
||Allows users to claim devices and gateways in a secure manner.|
|Gateway Configuration Server||
||Generates configuration files for UDP gateways and manages gateway configuration and firmware updates for Basic Station and The Things Kickstarter gateways.|
|Packet Broker Agent||
||Connects The Things Stack with Packet Broker for exchanging traffic with other networks.|
|Network Operations Center||
||Provides aggregated insight in a network operated with The Things Stack.|
|Console||NA||Is the web application used to interact with The Things Stack.|
The Things Stack also has the following additional/supporting components.
|Tenant Billing Server||
||Manages the creation, suspension and billing of tenants using different payment backends (only for The Things Stack cloud).|
||Generates QR codes for devices in various formats. These QR codes can be used for various purposes, including identification and device claiming to transfer ownership..|
|Device Template Converter||
||Converts data to device templates for migrating networks and importing vendor-specific data.|
If you want more detailed information on each component, check the components reference section.
Now that the architecture is introduced, let’s take a look at the various methods to interact with The Things Stack.