{"id":13546989,"url":"https://github.com/aregtech/areg-sdk","last_synced_at":"2026-01-19T17:03:21.841Z","repository":{"id":38844870,"uuid":"392349560","full_name":"aregtech/areg-sdk","owner":"aregtech","description":"AREG is an asynchronous Object RPC framework to simplify multitasking programming by blurring borders between processes and treating remote objects as if they coexist in the same thread.","archived":false,"fork":false,"pushed_at":"2024-10-29T11:16:44.000Z","size":23812,"stargazers_count":276,"open_issues_count":27,"forks_count":117,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-29T12:13:16.271Z","etag":null,"topics":["async","client-server","concurrency","cross-platform","distributed","embedded","event-driven","framework","functional-programming","iot","ipc","library","logging","multiprocessing","multithreading","parallel-computing","pubsub","realtime","rpc","sdk"],"latest_commit_sha":null,"homepage":"https://www.aregtech.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aregtech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-03T14:42:35.000Z","updated_at":"2024-10-29T10:59:28.000Z","dependencies_parsed_at":"2022-08-16T13:45:18.921Z","dependency_job_id":"f739c173-25c1-456e-a6a3-9b5c6c8b26a6","html_url":"https://github.com/aregtech/areg-sdk","commit_stats":{"total_commits":575,"total_committers":12,"mean_commits":"47.916666666666664","dds":"0.19478260869565223","last_synced_commit":"ec55db211edfee5b55a7553d20708de963d70a01"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aregtech%2Fareg-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aregtech%2Fareg-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aregtech%2Fareg-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aregtech%2Fareg-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aregtech","download_url":"https://codeload.github.com/aregtech/areg-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246599765,"owners_count":20803253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","client-server","concurrency","cross-platform","distributed","embedded","event-driven","framework","functional-programming","iot","ipc","library","logging","multiprocessing","multithreading","parallel-computing","pubsub","realtime","rpc","sdk"],"created_at":"2024-08-01T12:00:49.219Z","updated_at":"2026-01-19T17:03:21.833Z","avatar_url":"https://github.com/aregtech.png","language":"C++","funding_links":[],"categories":["Table of Contents","Framework","Engine","Examples","Packages, Libraries and RTOSes"],"sub_categories":["Software","Frameworks"],"readme":"\u003ch1 align=\"center\" style=\"font-size:2.5em; font-weight:bold; margin:1em 0;\"\u003e\n  \u003ca href=\"https://www.areg.tech\"\u003e\n    \u003cimg \n      src=\"./docs/img/areg-sdk-1280x360px-logo.png\" \n      alt=\"Areg SDK - C++ Middleware and Framework for RPC and IPC\"\n      title=\"Areg SDK - Lightweight Cross-Platform C++ Framework and Middleware for RPC, IPC, and Distributed Systems\"\n      style=\"width:100%;height:auto\" \n    /\u003e\n  \u003c/a\u003e\n\u003c/h1\u003e\n\n[![Latest release](https://img.shields.io/github/v/release/aregtech/areg-sdk?label=Latest%20release\u0026style=social)](https://github.com/aregtech/areg-sdk/releases/tag/v1.5.0)\n[![GitHub commits](https://img.shields.io/github/commits-since/aregtech/areg-sdk/v1.5.0.svg?style=social)](https://github.com/aregtech/areg-sdk/compare/v1.5.0...master)\n[![Stars](https://img.shields.io/github/stars/aregtech/areg-sdk?style=social)](https://github.com/aregtech/areg-sdk/stargazers)\n[![Fork](https://img.shields.io/github/forks/aregtech/areg-sdk?style=social)](https://github.com/aregtech/areg-sdk/network/members)\n[![Watchers](https://img.shields.io/github/watchers/aregtech/areg-sdk?style=social)](https://github.com/aregtech/areg-sdk/watchers)\n[![Wiki Pages](https://img.shields.io/badge/Areg%20Wiki%20Pages-8-brightgreen?style=social\u0026logo=wikipedia)](https://github.com/aregtech/areg-sdk/wiki/)\n\n⭐ **If you find Areg SDK useful, please give us a star. It helps the community grow!**\n\n---\n\nMost C++ projects don't fail on algorithms. They fail on **threads, IPC, and fragile wiring**. Unlike traditional frameworks, **Areg SDK uses Object RPC to automate communication**, unifying async RPC, Pub/Sub, and service discovery. Its self-managed service mesh enables scalable, fault-tolerant systems across threads, processes, and devices with no boilerplate and no fragile wiring.\n\n*Named after the ancient Armenian word for \"Sun\", Areg creates a star network where services orbit around a central router - enabling automatic discovery, fault tolerance, and seamless distributed computing.*\n\n---\n\n## Project Status[![](./docs/img/pin.svg)](#project-status)\n\n\u003ctable class=\"no-border\"\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/actions/workflows/cmake.yml\"\u003e\u003cimg src=\"https://github.com/aregtech/areg-sdk/actions/workflows/cmake.yml/badge.svg\" alt=\"CMake build\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/actions/workflows/msbuild.yml\"\u003e\u003cimg src=\"https://github.com/aregtech/areg-sdk/actions/workflows/msbuild.yml/badge.svg\" alt=\"MS Build\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/actions/workflows/codeql-analysis.yml\"\u003e\u003cimg src=\"https://github.com/aregtech/areg-sdk/actions/workflows/codeql-analysis.yml/badge.svg\" alt=\"CodeQL\"/\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"https://img.shields.io/badge/Solution-C++17-blue.svg?style=flat\u0026logo=c%2B%2B\u0026logoColor=b0c0c0\u0026labelColor=363D44\" alt=\"C++ solution\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://img.shields.io/badge/OS-linux%20%7C%20windows-blue?style=flat\u0026logo=Linux\u0026logoColor=b0c0c0\u0026labelColor=363D44\" alt=\"Operating systems\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://img.shields.io/badge/CPU-x86%20%7C%20x86__64%20%7C%20arm%20%7C%20aarch64-blue?style=flat\u0026logo=amd\u0026logoColor=b0c0c0\u0026labelColor=363D44\" alt=\"CPU Architectures\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Table of Contents[![](./docs/img/pin.svg)](#table-of-contents)\n\n- [Why Areg SDK: Benefits and Comparison](#why-areg-sdk-benefits-and-comparison)\n- [What is Areg SDK](#what-is-areg-sdk)\n- [Getting Started: Build and Integration](#getting-started-build-and-integration)\n- [Core Modules and Architecture](#core-modules-and-architecture)\n- [Use Cases: Distributed, RPC and IPC](#use-cases-distributed-rpc-and-ipc)\n- [Roadmap](#roadmap)\n- [Documentation](#documentation)\n- [License](#license)\n- [Community and Contribution](#community-and-contribution)\n\n\u003e [!IMPORTANT]\n\u003e Full technical guidance for building, using, and integrating Areg SDK is available in the [documentation](./docs/wiki/ \"Areg SDK documentation\").\n\n---\n\n## Why Areg SDK: Benefits and Comparison[![](./docs/img/pin.svg)](#why-areg-sdk-benefits-and-comparison \"Why Areg SDK Lightweight C++ Framework\")\n\n### Is Areg Right for Your Project?\n\nAnswer these 5 questions to evaluate fit:\n\n- [ ] Do **threading** and **synchronization** issues slow your progress?\n- [ ] Does **debugging** across **threads, processes, or components** take excessive time?\n- [ ] Is setting up **communication** across **processes or nodes** complex and error-prone?\n- [ ] Do **remote failures** and **reconnections** create delays and extra work?\n- [ ] Would a **unified communication model** across **threads, processes, and devices** simplify development?\n\n💡 **If you answer Yes to 3+ questions**, Areg SDK is likely a strong fit for your project.\n\n---\n\n### Top 5 Benefits\n\n**Areg SDK** is a **Software Development Kit** built around the **Areg Framework** - a **runtime with built-in middleware that automates threading, service discovery, and inter-node messaging**. Unlike gRPC, DDS, or ZeroMQ, it provides a self-managed mesh and a unified API across threads, processes, and devices.  \n**Result:** scalable, fault-tolerant systems that are faster, simpler, and safer.\n\n1. **No manual threading**  \n   Threads, components, and watchdogs are auto-created, preventing subtle concurrency bugs and saving development time.\n\n2. **Unified API**  \n   Services are called the same way locally or remotely. Everything is async, non-blocking, and consistent across all scopes.\n\n3. **Self-managed mesh**  \n   Automatic service discovery and routing across threads, processes, and devices. No manual wiring, no brittle integration code.\n\n4. **Resilient by design**  \n   Components can join or leave dynamically. Watchdogs restart failed threads automatically for fault-tolerant systems.\n\n5. **Built-in observability**  \n   Integrated logging with visual analysis tools. Per-method duration measurement enables performance monitoring and optimization.\n\n💡 **When to use:** Linux and Windows, C++ apps, scaling from prototype to multi-node production systems.  \n⚠️ **When not to use:** RTOS (planned for future), web services, or non-C++ applications.\n\n---\n\n### Compared to Alternatives\n\n| Feature          | Areg SDK                        | Competitors (gRPC, DDS, ZeroMQ)                      |\n| ---------------- | ------------------------------- | ---------------------------------------------------- |\n| Ease of Use      | ✅ Automated setup              | ⚠️ Manual, boilerplate, [complex](https://www.innoq.com/en/blog/2024/06/grpc/#whataresomechallengesofworkingwithgrpc) |\n| Threading Model  | ✅ Automated threading          | ⚠️ Manual threading and sync |\n| Automation       | ✅ Codegen, modeling, dispatch  | ⚠️ Limited, [stubs only](https://grpc.io/docs/what-is-grpc/introduction/#overview) |\n| Auto-Discovery   | ✅ Self-organizing service mesh | ✅ DDS: [built-in](https://opendds.readthedocs.io/en/latest-release/devguide/introduction_to_dds.html#discovery-matching-and-association), ⚠️ gRPC/ZeroMQ: [external](https://stackoverflow.com/questions/59398556/grpc-equivalent-of-wcf-service-discovery) |\n| Fault Tolerance  | ✅ Watchdog \u0026 auto-restart      | ✅ DDS: [QoS](https://opendds.readthedocs.io/en/latest-release/devguide/quality_of_service.html), ⚠️ gRPC/ZeroMQ: [Retries](https://grpc.io/docs/guides/retry/)/Manual |\n| Request-Reply    | ✅ Native, built-in Object RPC  | ✅ gRPC: [RPC](https://grpc.io/docs/what-is-grpc/core-concepts/#overview), ⚠️ DDS/ZeroMQ: Over topics/[patterns](https://zguide.zeromq.org/docs/chapter3/) |\n| Pub/Sub          | ✅ Native, built-in Attributes  | ✅ DDS: [Topics](https://opendds.readthedocs.io/en/latest-release/devguide/built_in_topics.html), ⚠️ Add-ons/Manual |\n| Unified API      | ✅ Same, multithreads and IPC   | ⚠️ Different APIs for multithreads and IPC |\n| Built-in Logging | ✅ Integrated, dynamic + viewer | ⚠️ [Vendor-specific](https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/addon_products/observability/telemetry_data/logs.html) (DDS) or External |\n| Dev Speed        | ✅ Faster, via automation       | ⚠️ Slower, more manual work                |\n\n🔹**Key Differentiators:**\n- **Complete Automation**: Areg automates threading, dispatch, and lifecycle - not just transport\n- **True Location Transparency**: Same interface whether services are in thread, process, or network\n- **Zero Configuration**: Services discover each other automatically - no registry, no broker setup\n- **Integrated Stack**: Framework + Router + Tools + Logging in one cohesive SDK\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## What is Areg SDK[![](./docs/img/pin.svg)](#what-is-areg-sdk)\n\n**Areg SDK** is a **Software Development Kit** built around the **Areg Framework** - a C++17 framework with built-in middleware that automates distributed system development. Areg uses an **interface-centric Object RPC (ORPC)** model where services are represented as objects with methods, attributes (pub/sub), and events - rather than simple function calls like many other traditional RPC solutions.\n\nThis enables:\n- **Location transparency:** Same code works locally and remotely\n- **Built-in pub/sub:** Attributes automatically broadcast updates\n- **Stateful services:** Objects maintain state across calls\n- **Lifecycle management:** Automatic registration, discovery, and cleanup\n\n### What's Included\n\nThe SDK provides a complete toolkit for distributed C++ development:\n\n🔹**Core Runtime:**\n- Areg Framework (`areg`) + Multitarget Router (`mtrouter`) - The engine that automates threading, IPC, and service mesh\n\n🔹**Design and Development Tools:**\n- Code Generator (`codegen.jar`) - Eliminates boilerplate with automated code generation\n- [Lusan GUI](https://github.com/aregtech/areg-sdk-tools) - Visual service designer and distributed log viewer\n\n🔹**Monitoring \u0026 Debug:**\n- Log Collector (`logcollector`) + Observer (`logobserver`) - Distributed logging and real-time analysis\n- Areg Extend - Additional utilities and extensions\n\n\u003e 📦 **All components** work together seamlessly - no integration glue needed.\n\n### How It Works\n\nAreg uses an **interface-centric Object RPC (ORPC)** model where:\n1. You define service interfaces (methods, attributes, events)\n2. Code generator creates service provider and consumer base classes\n3. Services automatically discover each other through `mtrouter`\n4. Communication works identically whether local (thread) or remote (process/network)\n\nThis **location transparency** means you can:\n- Develop as multithreaded application\n- Deploy as multiprocess system\n- Scale to multi-device network\n- **All without changing service code** (example: [`03_helloservice`](./examples/03_helloservice))\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## Getting Started: Build and Integration[![](./docs/img/pin.svg)](#getting-started-build-and-integration)\n\n### Prerequisites\n\n- **C++17 compiler**: GCC, Clang/LLVM, MSVC, or MinGW\n- **CMake \u003e= 3.20**\n- **Java \u003e= 17** (required for code generation tools)\n- **Supported OS:** Linux, Windows  \n- **Supported Hardware:** x86, x86_64, ARM, AArch64\n\nSee the [CMake Configuration Guide](./docs/wiki/02a-cmake-config.md) for detailed setup, compiler options, and troubleshooting tips.\n\n---\n\n### Build Areg SDK\n\nClone the repository and build the SDK:\n\n```bash\ngit clone https://github.com/aregtech/areg-sdk.git\ncd areg-sdk\ncmake -B build\ncmake --build build -j20\n```\n\n\u003e [!TIP]\n\u003e Copy-paste these commands directly in **Linux Terminal, Windows CMD, or PowerShell**.\n\n---\n\n### Run Your First Example\n\nThe [minimal RPC example](./examples/01_minimalrpc/) demonstrates **multithreaded RPC** in a single process:\n\n**Example location after build:**\n```bash\n# Linux example path:\n.product/build/gnu-g++/linux-64-x86_64-release-shared/bin/01_minimalrpc\n\n# Windows example path (adjust for your compiler):\n.\\product\\build\\msvc-cl\\windows-64-amd64-release-shared\\bin\\01_minimalrpc.exe\n```\n\n**What this example demonstrates:**\n- **Service Consumer** runs in one thread\n- **Service Provider** runs in another thread  \n- Consumer calls the method of remote Provider asynchronously\n- Communication is fully automated - no manual wiring\n\n**Message Flow:**\n```text\n🟢 main() → 🏗 load model → 🔗 auto-connect → 📤 Consumer request → 🖨 Provider prints → ✅ application exits\n```\n\n1️⃣ **Implementation of Service Provider:**\n```cpp\nclass ServiceProvider : public Component, protected HelloServiceStub {\npublic:\n  ServiceProvider(const NERegistry::ComponentEntry\u0026 entry, ComponentThread\u0026 owner)\n    : Component(entry, owner), HelloServiceStub(static_cast\u003cComponent\u0026\u003e(*this))\n  {   }\n\n  void requestHelloService() override {\n    std::cout \u003c\u003c \"\\'Hello Service!\\'\" \u003c\u003c std::endl;\n    Application::signalAppQuit(); // quit application is if received response\n  }\n};\n```\n\n2️⃣ **Implementation of Service Consumer:**\n```cpp\nclass ServiceConsumer : public Component, protected HelloServiceClientBase {\npublic:\n  ServiceConsumer(const NERegistry::ComponentEntry \u0026 entry, ComponentThread \u0026 owner)\n\t\t: Component(entry, owner)\n        , HelloServiceClientBase(entry.mDependencyServices[0].mRoleName, owner)\n\t{   }\n\n  bool serviceConnected(NEService::eServiceConnection status, ProxyBase\u0026 proxy) override {\n    HelloServiceClientBase::serviceConnected(status, proxy);\n    if (NEService::isServiceConnected(status))\n      requestHelloService();  // Call of method of remote \"ServiceProvider\" object.\n    return true;\n  }\n};\n```\n\n3️⃣ **Define a model - automates threading, automates creating objects, automates service discovery:**\n```cpp\nBEGIN_MODEL(\"ServiceModel\")\n  BEGIN_REGISTER_THREAD(\"Thread1\")\n    BEGIN_REGISTER_COMPONENT(\"ServiceProvider\", ServiceProvider)\n      REGISTER_IMPLEMENT_SERVICE(NEHelloService::ServiceName, NEHelloService::InterfaceVersion)\n    END_REGISTER_COMPONENT(\"ServiceProvider\")\n  END_REGISTER_THREAD(\"Thread1\")\n\n  BEGIN_REGISTER_THREAD(\"Thread2\")\n    BEGIN_REGISTER_COMPONENT(\"ServiceClient\", ServiceConsumer)\n      REGISTER_DEPENDENCY(\"ServiceProvider\") /* dependency reference to the remote service*/\n    END_REGISTER_COMPONENT(\"ServiceClient\")\n  END_REGISTER_THREAD(\"Thread2\")\nEND_MODEL(\"ServiceModel\")\n```\n\n4️⃣ **Full version of `main()` function:**\n```cpp\nint main() {\n  Application::initApplication();\n  Application::loadModel(\"ServiceModel\"); // Start threads, create objects, establish connections\n  Application::waitAppQuit(NECommon::WAIT_INFINITE);\n  Application::releaseApplication();\n  return 0;\n}\n```\n\n📄 **Full source code:** [examples/01_minimalrpc/src/main.cpp](./examples/01_minimalrpc/src/main.cpp)\n\n---\n\n### Learning Path\n\nFollow this progressive path to master Areg SDK:\n\n1. **[01_minimalrpc](examples/01_minimalrpc/)** - Minimal RPC between two components (start here)\n2. **[02_minimalipc](examples/02_minimalipc/)** - IPC across processes (**requires `mtrouter`**)\n3. **[03_helloservice](examples/03_helloservice/)** - Multithreaded RPC + IPC combined\n4. **[23_pubdatarate](examples/23_pubdatarate/)** - High-throughput data benchmark (test your system)\n5. **[More Examples](examples/README.md)** - Advanced SDK features and usage patterns\n6. **[Areg and Edge AI](https://github.com/aregtech/areg-edgeai)** - Practical use cases with Edge AI inference\n\n\u003e [!IMPORTANT]\n\u003e **For _IPC_ examples:** Ensure **`mtrouter` is running**. See [mtrouter documentation](./docs/wiki/05a-mtrouter.md).\n\n---\n\n### Integration \u0026 Extensions\n\n- **CMake FetchContent integration:** [Integration Guide](./docs/wiki/02c-cmake-integrate.md)\n- **Demo Project:** [areg-sdk-demo](https://github.com/aregtech/areg-sdk-demo)\n- **Qt Integration \u0026 Tools (Lusan):** [areg-sdk-tools](https://github.com/aregtech/areg-sdk-tools)\n- **Edge AI Cases:** [areg-edgeai](https://github.com/aregtech/areg-edgeai)\n\n\u003e 💡 **Advanced builds** (IDE setup, cross-compilation, disabling tests/examples) → consult the [Wiki](./docs/wiki/)\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## Core Modules and Architecture[![](./docs/img/pin.svg)](#core-modules-and-architecture)\n\n**Areg SDK** combines the Areg Framework, Multitarget Router, logging utilities, and development tools into a cohesive development kit.\n\n### Modules Overview\n\n| Module                                                                       | Role \u0026 Purpose                                                                                              | Required     |\n|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|--------------|\n| [Areg Library\u003c/br\u003e(`areg`)](./docs/HelloService.md)                          | **Core framework + middleware.** Automates Object RPC (ORPC), IPC,\u003cbr/\u003ethreading, routing, and fault recovery.  | ✅ Always    |\n| [Code Generator\u003c/br\u003e(`codegen.jar`)](./docs/wiki/03a-code-generator.md)      | **Build-time tool.** Generates code from service APIs to eliminate\u003cbr/\u003emanual coding and automate RPC.          | ✅ Buildtime |\n| [Multitarget Router\u003c/br\u003e(`mtrouter`)](./docs/wiki/05a-mtrouter.md)           | **Required for IPC.** Routes messages across processes and devices\u003cbr/\u003eto form a servicemesh.                  | ⚠️ IPC only  |\n| [Log Collector\u003c/br\u003e(`logcollector`)](./docs/wiki/04d-logcollector.md)        | **Optional developer tool.** Aggregates logs from distributed apps\u003cbr/\u003efor monitoring, debugging, and analysis. | ❌ Optional  |\n| [Lusan (GUI Tool)\u003c/br\u003e(`lusan`)](https://github.com/aregtech/areg-sdk-tools) | **Optional developer tool.** Provides visual API design, log inspection,\u003cbr/\u003eandperformance visualization.     | ❌ Optional  |\n| [Examples](./examples/README.md)                                             | **Learning \u0026 validation.** Sample projects that demonstrate Areg SDK\u003cbr/\u003ein action.                             | ❌ Optional  |\n\n---\n\n### Architecture\n\nAreg uses an **interface-centric Object RPC (ORPC)** model. Applications expose **Service Providers** and interact via **Service Consumers** using generated code and the **Multitarget Router** for inter-process communication. Services act as logical micro-servers independent of physical locations, enabling true **service-oriented architecture (SOA)**.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/blob/master/docs/img/interface-centric.png\"\u003e\u003cimg src=\"./docs/img/interface-centric.png\" alt=\"Interface-centric communication diagram\" style=\"width:50%;height:50%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\nAreg supports both **Client-Server (Request-Reply)** and **Publish-Subscribe (Pub/Sub)** patterns, optimized for **multithreading**, **multiprocessing**, and **distributed systems** with low-latency requirements.\n\n---\n\n### Lusan Application\n\n**Lusan** is a graphical development and diagnostics tool built on the Areg Framework. It streamlines the design, configuration, and monitoring of distributed Areg systems. The [open-source version](https://github.com/aregtech/areg-sdk-tools) focuses on core developer workflows: visual service interface design and centralized log collection.\n\n#### Service Interface Design\n\nLusan's visual **Service Interface Designer** lets developers define, inspect, and maintain service interfaces with clarity and consistency. The integrated code generator produces ready-to-use code for Service Providers and Consumers, reducing manual errors and speeding up development.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"./docs/img/lusan-service-if-general.png\"\u003e\u003cimg src=\"./docs/img/lusan-service-if-general.png\" alt=\"Lusan Service Interface\" style=\"width:80%;height:80%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\nFor more details, see the 📄 [Service Interface Design Guide](./docs/wiki/09c-use-lusan.md).\n\n#### Live and Offline Log Viewer\n\nLusan's **log viewer** aggregates logs from multiple instances, supporting both real-time monitoring and offline analysis. It helps multiprocess application monitoring, system behavior analysis, and debugging of distributed interactions with features like:\n\n- **Real-time log aggregation** across distributed systems\n- **Dynamic scope filtering** and priority control at runtime\n- **Offline analysis** of recorded sessions for post-mortem debugging\n- **Performance analysis** with per-method execution timing\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"./docs/img/lusan-live-log-scope-prio.png\"\u003e\u003cimg src=\"./docs/img/lusan-live-log-scope-prio.png\" alt=\"Lusan Log Scope Priority change\" style=\"width:80%;height:80%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\nFor more details, see:\n- 📄 [Live Log Viewer Guide](./docs/wiki/09e-use-live-logging.md) - Real-time monitoring and debugging\n- 📄 [Offline Log Viewer Guide](./docs/wiki/09f-use-offline-logging.md) - Post-mortem analysis and collaboration\n\n**In summary**, Lusan unifies service design and runtime observability in one tool, shortening development cycles and enabling faster, safer testing and debugging of distributed applications.\n\n---\n\n### ✅ Quick Summary\n\n- **`areg` + `codegen.jar`** - Build services and projects with automated code generation\n- **`mtrouter`** - Enable IPC and distributed communication across processes and devices\n- **`logcollector` + `Lusan`** - Monitor and debug with integrated logging and visual analysis\n- **Key strengths** - Automates service communication, manages threading \u0026 IPC, enables scalable distributed apps\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## Use Cases: Distributed, RPC and IPC[![](./docs/img/pin.svg)](#use-cases-distributed-rpc-and-ipc)\n\n### Embedded and Distributed Edge AI\n\nIntegrating AI into embedded and edge systems requires managing concurrency, communication, and synchronization across multiple modules - data collection, preprocessing, inference, decision-making, monitoring, and connectivity. **Areg SDK** simplifies this by letting each AI stage run as an **independent service** in its own thread or process, with built-in event-driven communication.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/blob/master/docs/img/areg-for-embedded-ai.png\"\u003e\u003cimg src=\"./docs/img/areg-for-embedded-ai.png\" alt=\"Embedded AI modular service architecture diagram\" style=\"width:40%;height:40%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\n🔹**Benefits:**\n- **Modular AI pipelines** - Each stage (capture, preprocess, inference, decision) is an independent service\n- **No manual threading** - Automatic concurrency management and event-driven communication\n- **Real-time responsiveness** - Non-blocking architecture enables fast control loop reactions\n- **Scalable orchestration** - Distribute AI workloads across multiple devices seamlessly\n\n\u003e [!TIP]\n\u003e **Featured Project:** [areg-edgeai](https://github.com/aregtech/areg-edgeai) - Practical examples of using Areg SDK with Edge AI systems, demonstrating real-world AI inference integration patterns.\n\n---\n\n### IoT: Mist-to-Cloud\n\nEdge devices often stream raw data to central servers, increasing latency, network load, and privacy risks. With **Areg SDK**, services run on devices, forming a **mist network of micro-servers** that process and aggregate data locally before sending refined results to the cloud.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/blob/master/docs/img/mist-network.png\"\u003e\u003cimg src=\"./docs/img/mist-network.png\" alt=\"IoT Mist-to-Cloud network diagram\" style=\"width:70%;height:70%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\n🔹**Benefits:**\n- **Low-latency processing** - Data processed at the edge, not in distant cloud\n- **Autonomous operation** - Edge mesh continues working during network outages\n- **Enhanced privacy** - Sensitive data stays on-device, only insights sent to cloud\n- **Reduced cloud costs** - Less data transmission and cloud computing needed\n\n---\n\n### Simulation \u0026 Testing\n\nValidating distributed systems is expensive and hardware-dependent. **Areg SDK** allows simulation of **Data Layer services** in external applications, providing realistic environments to test behavior, performance, and fault-tolerance. Services appear **location-transparent** to higher layers, enabling comprehensive testing without physical hardware.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/blob/master/docs/img/software-layers.png\"\u003e\u003cimg src=\"./docs/img/software-layers.png\" alt=\"Software 4 Layer Architecture: Simulate Data Layer\" style=\"width:70%;height:70%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\n🔹**Benefits:**\n- **Hardware-independent testing** - Test higher-layer logic without physical devices\n- **Continuous integration** - Automated testing without hardware dependencies\n- **Fault injection** - Simulate failures and test recovery mechanisms safely\n- **Cost reduction** - Reduce need for expensive test hardware and lab time\n\n---\n\n### Beyond Embedded\n\nMany small devices lack scalable infrastructure for complex applications. **Areg SDK** transforms embedded applications into **distributed modules** that scale seamlessly across remote nodes and platforms, orchestrating **multithreaded and multiprocess C++ services**.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/blob/master/docs/img/areg-services.png\"\u003e\u003cimg src=\"./docs/img/areg-services.png\" alt=\"Service types and message handling diagram\" style=\"width:70%;height:70%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\n- **Local Services** - Multithreading within a single device or application\n- **Public Services** - Accessible across processes, applications, and devices\n\n🔹**Benefits:**\n- **Seamless scaling** - Start with local services, expose as public without code changes\n- **Location transparency** - Services work identically whether local or remote\n- **Platform independence** - Same code runs on embedded, desktop, and server platforms\n\n---\n\n### Driverless Devices\n\nTraditional device drivers are **slow to develop, complex to maintain, and platform-specific**. **Areg SDK** enables you to **expose hardware as portable, service-enabled components**, making devices platform-independent and network-accessible.\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/aregtech/areg-sdk/blob/master/docs/img/driverless-solution.png\"\u003e\u003cimg src=\"./docs/img/driverless-solution.png\" alt=\"Areg driverless service-enabled diagram\" style=\"width:70%;height:70%\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\n🔹**Benefits:**\n- **Faster development** - Accelerates prototyping, testing, and iteration cycles\n- **Platform independence** - Hardware abstracted as services, not platform-specific drivers\n- **Network accessibility** - Devices accessible from anywhere on the network\n- **Early bug detection** - Test hardware integration before full driver implementation\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## Roadmap[![](./docs/img/pin.svg)](#roadmap)\n\nAreg SDK continues to evolve for Desktop and Embedded platforms. The focus is on automation, reliability, platform expansion, and developer experience.\n\n🔹**2026 Priorities:**  \n- **Multi-channel support** - Multiplexed communications for higher throughput and efficiency\n- **Enhanced security** - encryption, authentication, and authorization mechanisms\n- **RTOS support (Zephyr OS)** - Bring Areg SDK into real-time embedded environments\n- **Lusan application improvements** - Enhanced performance, stability, and usability ([Areg SDK Tools](https://github.com/aregtech/areg-sdk-tools))\n- **Expanded documentation** - More tutorials, guides, and real-world examples\n- **Performance optimization** - Profiling tools and benchmark suite\n\n🔹**Future Vision:**\n- Cross-language bindings (Python, Rust, etc.) for polyglot systems\n- Cloud integration patterns and deployment guides\n- Container orchestration support (Kubernetes, Docker Compose)\n- Advanced debugging and profiling tools\n\n\u003e [!TIP]\n\u003e Want to influence the roadmap? Join [discussions](https://github.com/aregtech/areg-sdk/discussions) or contribute via [issues](https://github.com/aregtech/areg-sdk/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## Documentation[![](./docs/img/pin.svg)](#documentation)\n\n- **[Installation and Build](./docs/wiki/README.md#1-installation-and-build)** - Cross-platform builds, toolchains, CMake integration for embedded and desktop targets\n- **[Build Options and Integrations](./docs/wiki/README.md#2-build-options-and-integrations)** - FetchContent, packaging, and embedding Areg SDK as a library\n- **[Networking and Communication](./docs/wiki/README.md#3-networking-and-communication)** - Multitarget router for IPC and low-latency \n- **[Logging and Monitoring](./docs/wiki/README.md#4-logging-and-monitoring)** - Log collector and observer usage for distributed systems\nmessaging\n- **[Persistence](./docs/wiki/README.md#5-persistence)** - Local data storage in text files\n- **[Development and Testing Tools](./docs/wiki/README.md#6-development-and-testing-tools)** - Core and optional tools that accelerate development and enforce architectural consistency\n- **[Troubleshooting](./docs/wiki/README.md#7-troubleshooting)** - Common issues and recommended solutions\n- **[Examples and Tests](./docs/wiki/README.md#8-examples-and-tests)** - Catalog of sample projects (RPC, IPC, Pub/Sub, FSM, and more)\n- **[HOWTO Guide](docs/HOWTO.md)** - Practical reference for common development tasks\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## License[![](./docs/img/pin.svg)](#license)\n\nAreg SDK is released under the **[Apache License 2.0](LICENSE.txt)**. This permissive license is suitable for both open-source and commercial use.\n\n**Commercial licensing \u0026 services:** Dedicated support, training, and tailored licensing options are available for enterprise customers. Visit **[areg.tech](https://www.areg.tech/)** or email **info[at]areg[dot]tech** for more details.\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n## Community and Contribution[![](./docs/img/pin.svg)](#community-and-contribution)\n\n🚀 **Join the Areg SDK community** and help shape the future of distributed C++ development:\n\n- 🛠️ [Contribute to open issues](https://github.com/aregtech/areg-sdk/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - Review the **[contribution guidelines](CONTRIBUTING.md)** before submitting\n- 💡 Share ideas or request features via [issues](https://github.com/aregtech/areg-sdk/issues) or [discussions](https://github.com/aregtech/areg-sdk/discussions)\n- 🔀 Submit pull requests following the [contribution guidelines](CONTRIBUTING.md)\n- ⭐ **Give us a star** if you like Areg SDK - it helps others discover the project\n- 🌍 **Show your project** - We're collecting early adopters. [Share your work](https://github.com/aregtech/areg-sdk/discussions/new?category=show-and-tell)!\n\n\u003cdiv align=\"right\"\u003e\u003ckbd\u003e\u003ca href=\"#table-of-contents\"\u003e↑ Back to top ↑\u003c/a\u003e\u003c/kbd\u003e\u003c/div\u003e\n\n---\n\n**Used by**  \n[![Contact us](https://img.shields.io/badge/Projects%20Using%20Areg-Contact%20Us%20to%20be%20listed-blue)](mailto:info@areg.tech)\n\n**Follow Us**  \n[![X Follow](https://img.shields.io/twitter/follow/aregtech)](https://x.com/aregtech?lang=en)\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-Aregtech-blue?style=flat\u0026logo=linkedin\\\u0026logoColor=b0c0c0\\\u0026labelColor=363D44)](https://www.linkedin.com/company/aregtech)\n[![Gitter](https://badges.gitter.im/areg-sdk/community.svg)](https://gitter.im/areg-sdk/community)\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faregtech%2Fareg-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faregtech%2Fareg-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faregtech%2Fareg-sdk/lists"}