The Things Stack is composed of a number of components. The core components Network Server, Application Server and Join Server follow the LoRaWAN Network Reference Model. The Things Stack also contains an Identity Server, Gateway Server, Console and Command-line Interface.
The Identity Server provides the registries that store entities such as applications with their end devices, gateways, users, organizations and OAuth clients. It also manages access control through memberships and API keys.
The Gateway Server maintains connections with gateways supporting the UDP, MQTT, gRPC and Basic Station protocols. It forwards uplink traffic to Network Servers, and schedules downlink traffic on gateways.
The Network Server handles the LoRaWAN network layer, including MAC commands, regional parameters and adaptive data rate (ADR).
The Application Server handles the LoRaWAN application layer, including uplink data decryption and decoding, downlink queuing and downlink data encoding and encryption.
It hosts an MQTT server for streaming application data and manages HTTP webhooks and pub/sub integrations.
The Join Server handles the LoRaWAN join flow, including Network and Application Server authentication and session key generation.
The Console is the official management application of The Things Stack for LoRaWAN. It is a web application which can be used to register applications, end devices or gateways, monitor network traffic, or configure network related options, among other things. The console uses an OAuth access token to communicate with The Things Stack.
The Command-line Interface (CLI) provides a cross-platform interface for managing components through the command-line.
The Crypto Server can handle cryptographic operations when working with hardware secure modules (HSMs).
The Device Template Converter converts data to device templates for migrating networks and importing vendor-specific data.
The Device Claiming Server is used to transfer end devices to a new owner’s application using a claim authentication code or QR code.