Server Software

The IoT Gateway server is a hosting environment for IoT applications using .NET Core.


The IoT Gateway provides:

You can use the Simple IoT Client to interact and administer devices published using the IoT Gateway in a secure fashion. If the gateway is connected to an IoT Broker or similar broker, the gateway and its devices can be provisioned in an interoperable and secure manner by their corresponding owners.

The IoT Gateway is available for download under the following license terms.


You should carefully read the following terms and conditions before using this software. Your use of this software indicates your acceptance of this license agreement and warranty. If you do not agree with the terms of this license, or if the terms of this license contradict with your local laws, you must remove any files from the IoT Gateway from your storage devices and cease to use it. The terms of this license are subjects of changes in future versions of the IoT Gateway.

You may not use, copy, emulate, clone, rent, lease, sell, modify, decompile, disassemble, otherwise reverse engineer, or transfer the licensed program, or any subset of the licensed program, except as provided for in this agreement. Any such unauthorised use shall result in immediate and automatic termination of this license and may result in criminal and/or civil prosecution.

The source code and libraries provided in this repository is provided open for the following uses:

Commercial use of the code, in part or in full, in compiled binary form, or its source code, requires a Commercial License. Contact the author for details.

All rights to the source code are reserved and exclusively owned by Waher Data AB. Any contributions made to the IoT Gateway repository become the intellectual property of Waher Data AB. If you’re interested in using the source code, as a whole, or in part, you need a license agreement with the author. You can contact him through LinkedIn.

This software is provided by the copyright holder and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

The IoT Gateway is © Waher Data AB 2016-2018. All rights reserved.

Top of page


Select the download that best suits your needs:

File Description
Windows installer This setup application will install the IoT Gateway on Windows machines. The IoT Gateway will be run as a Windows Service by default. It can also be run using the command prompt. Source code for the setup application is available on GitHub to make it customizable, and is based on the Wix framework.
MSI package If you are creating custom setup applications, you can embed the IoT Gateway using this MSI package. Source code for the MSI package is available on GitHub to make it customizable, and is based on the Wix framework.
App Bundle Package The IoT Gateway is also available as a Windows 10 IoT (or Universal Windows Platform) App Bundle Package. You can download this package to your local machine, and then install it on your devices using the device portal published by the corresponding devices.
Top of page

Executable applications

The installation folder holds all executable applications hosted by the IoT Gateway. Hosted applications are Dynamic Link Library* (*.dll) files that the gateway loads during startup. The folder also contains the following executable files.


This is the IoT Gateway service. It can also be run from the command prompt. This way, it can be used to debug applications developed for the gateway.

Command-line parameters:

Switch Description
-? Brings this help.
-install Installs service in operating system
-uninstall Uninstalls service from operating system.
-displayname Name Sets the display name of the service. Default is “IoT Gateway Service”.
-description Desc Sets the textual description of the service. Default is “Windows Service hosting the Waher IoT Gateway.”.
-start Mode Sets the default starting mode of the service. Default is Disabled. Available options are StartOnBoot, StartOnSystemStart, AutoStart, StartOnDemand and Disabled
-immediate If the service should be started immediately.
-console Run the service as a console application.
-localsystem Installed service will run using the Local System account.
-localservice Installed service will run using the Local Service account (default).
-networkservice Installed service will run using the Network Service account.
Top of page


Use this executable command to install an application into the IoT Gateway. The application must be properly described using an Application Manifest File. This is an XML file complying with the Application Manifest XML Schema. The executable accepts the following command-line arguments:

Switch Description
-m MANIFEST_FILE Points to the manifest file describing the files in the module.
-d APP_DATA_FOLDER Points to the application data folder.
-s SERVER_EXE Points to the executable file of the IoT Gateway.
-v Verbose mode.
-i Install. This is the default. Switch not required.
-u Uninstall. Add this switch if the module is being uninstalled.
-r Remove files. Add this switch if you want files removed during uninstallation. Default is to not remove files.
-? Help.
Top of page

Application Data

Any application data read or written by the IoT Gateway or any of its applications, reside in the Program Data Folder. On normal Windows operating systems, this is typically C:\ProgramData\IoT Gateway. If running the UWP IoT Gateway App, a link to the folder will be displayed on the screen.

The principle file for configuring the gateway is Gateway.config. It must conform to the GatewayConfiguration.xsd schema file. The Gateway.config defines:

The program data folder also contains a set of subfolders with the following contents:

Subfolder Description
Backup Backups will be placed in this folder by default.
Data The object database stores its files in this folder.
Events Events are stored in this folder, and kept for up to seven days.
Graphics Common graphics elements such as emojis are stored here.
HTTP If sniffers have been enabled, logs of HTTP communication are stored here, and kept fo rup to seven days.
Language Localized text strings are stored in this folder.
Root Represents the root folder of the web server. Any files put in this folder or its subfolders will be published by the web server.
Transforms Contains XSL Transforms of common XML files output by the gateway to HTML files viewable in a browser.
UPnP If sniffers have been enabled, logs of UPnP communication are stored here, and kept fo rup to seven days.
XMPP If sniffers have been enabled, logs of XMPP Client to Server (c2s) communication are stored here, and kept fo rup to seven days.
Top of page

Mastering Internet of Things

The IoT Gateway is presented in more detail in the book Mastering Internet of Things. Source code examples are available on GitHub. The book is available on Amazon, Packt, Bokus (2), or other online book stores.

Mastering Internet of Things
Mastering Internet of Things
Top of page


If you have any questions or comments, if you would like to request added features, or if you would like to license the software, please go to the Feedback page.

Top of page