top of page



Download AREG SDK

AREG SDK is a free and open source project. It consists of AREG engine and tools. The source codes of the AREG engine and framework can be cloned from the repository at GitHub.

Follow us at GitHub to track the updates.


Traditionally, IoT devices are connected clients of cloud or fog servers to stream data from sensors for further processing.
Since data is generated at collected devices level, it makes sense to provide network accessible (public) services directly on things. Such a concept changes not only the role of connected devices, but also primarily solves the following challenges:
● It significantly increases data privacy, which is a very important factor for sensitive data.
● It decreases data streaming, which is a fundamental condition for optimizing network communications that has a direct impact on energy consumption.
● It renders devices more autonomous and more intelligent by providing network services directly in the environment of data origin.


The benefits of service-enabled devices are described in the mist computing section of this paper. AREG IoT SDK (or AREG SDK) is the suggestion of AREGtech. AREG IoT SDK is an asynchronous communication framework that is based on a multicasting communication model and helps to develop a service network mesh being distributed to any application at any node. The framework helps to create applications to run on embedded systems and high-end machines with 32- or 64-bit multitasking operating system.
AREG SDK consists of two main component parts: a middleware framework and a message multicast router, which is a service running in the network (can run on gateway hardware) to route ORPC messages between applications in real-time communication mode. Applications can connect to one or more routers, where every connection is a communication channel with high or normal priority. Channels may differ by priority, protocol, and network. Applications
based on AREG IoT SDK automatically create a mesh of services without additional programming effort.


Unlike many other frameworks, the messages in AREG SDK are not dispatched in centralized points. The servicing components are instantiated, and the messages are dispatched in thread context so that the ORPC messages are personalized and they are delivered to an exact application, exact thread, and exact target object to raise the method. Thereby, AREG SDK is thread safe and it is guaranteed that all messages are executed in the thread context of service. There is no need to manually serialize, deserialize, and dispatch messages, and these procedures are automated in generated codes created from the service interface document. The service interface document can 
be created in a graphical tool, provided that a service interface code generator can generate the following objects (Fig. 9):
● a client-proxy to cache automatically updated data and provide client-server communication;
● a server stub, which contains rules for controlling requests and subscriptions from clients, as well as providing skeletons of request services for implementation;
● client base objects to extent and overwrite appropriate response, multicast information, data update or request fail notifications;
● service-specific events for personalized messaging;

Screenshot 2020-08-13 at 00.25.44.png


Multicast routing is a communication model where nodes are connected to each other logically and can communicate through one or more physical message routers. One application can have more than one node, where every node is a software component. One node can be connected to several message routers, but two nodes communicate through one router. Each connection with a message router defines the communication channel. There can be several channels and channels can differ by priority, protocol, and physical network.
Physically, the message router is a server and every application is a physical connected client. Two or more applications communicate via the message router without awareness of the IP-address of each other. Applications in such a model provide services as logical servers and the network can have an unlimited number of logical servers. An application at the same time can be a server and a client without setting up any physical connection except with the message router.
Similar to a traditional client-server connection, the client’s logical connection is authorised on a logical server. Based on these characteristics, the multicast routing model allows any application to use and provide multiple services as well as create a mesh of authorised client-server logical connections. This allows to create a mesh of services, applications scale dynamically, and messages are distributed in the network and routed directly from the source to multiple targets without knowing the physical location of each target(s). 
The benefits of using multicast routing are connection abstraction, connection authorisation, a higher degree of privacy, network mesh, application scalability, fault tolerance, dynamic connection, message distribution, and optimised message streaming due to databus absence and streaming by request. Communications via message router is not the fastest, since unlike other client-server direct peer-to-peer connections, messages are passed through additional routing nodes.

Man Working


AREG IoT SDK contains an integrated logging module to trace the logs to file system or remote logging service. The device should have enough space if logging to file is selected. Otherwise, all logs can be sent to a remote service, which can run on a higher class machine. The logging module allows logs dynamically to switch on or off. Each logging message is related with a scope, which can be dynamically activated or deactivated. It is possible to log only certain scopes or certain priorities of logs.



AREG IoT SDK generates codes that work for you! In the design tool with a graphical user interface, architects and developers define services, components, subsystems, models and state-machines to include in the projects. To escape repetitive and tedious jobs, to minimize risk of producing bugs, to keep codes structured, the code generators create sources where part is unchanged and well integrated in the communication system, and the other part is extended by developers to provide business logic of components. This saves time and allows developers to focus more on business logic

bottom of page