Welcome to the Areg SDK Technical Documentation. This wiki provides comprehensive guides, tutorials, and reference materials for building distributed, service-oriented C++ applications with the Areg Framework.
Areg Framework is an interface-centric C++ framework for building real-time, asynchronous, and distributed systems in embedded, desktop, cloud, and mist-computing environments.
Never used Areg SDK? Start here:
- Quick Project Setup ⭐ Create a working project in 30 seconds
- Build Areg SDK - Build from source (5-10 minutes)
- Install with vcpkg - Use package manager (fastest)
- Examples and Tests - Run sample applications
- Performance Benchmarks - Measured latency, throughput, and data rate across platforms
Already familiar? Jump to: Documentation by Topic | Search by Task | Search by Role
Areg SDK is a lightweight framework for building distributed micro-services in C++. Applications expose and consume services across process and network boundaries with automatic message routing, type-safe interfaces, and zero manual synchronization.
- ✅ Service-Oriented Architecture: Define services, implement providers, connect consumers
- ✅ Automatic Message Routing: Built-in IPC and network communication
- ✅ Type-Safe Interfaces: Compile-time verified service contracts
- ✅ Zero Manual Threading: Framework handles all synchronization
- ✅ Cross-Platform: Linux, Windows, macOS, embedded systems
- ✅ Real-Time Logging: Centralized monitoring and diagnostics
Traditional Approach:
// Manual threading, locks, networking code
std::mutex mtx;
void handleRequest() {
std::lock_guard<std::mutex> lock(mtx);
// Complex synchronization logic...
}With Areg SDK:
// Define interface, framework handles everything
virtual void request_greeting(const String& name) override {
response_greeting("Hello, " + name + "!");
}No locks. No threads. No networking code. Just business logic.
Get Areg SDK running on your system:
| Guide | Platform | Method | Time |
|---|---|---|---|
| Quick Project Setup ⭐ | All | Interactive tool | 30 sec |
| vcpkg Installation | All | Package manager | 5 min |
| CMake Build | Linux, Windows, macOS | Source build | 10 min |
| MSVC Build | Windows | Visual Studio | 5 min |
| WSL Build | Windows | Linux on Windows | 10 min |
Integrate Areg SDK into your projects:
CMake Projects:
- CMake Integration Guide - FetchContent, find_package, submodules
- CMake Configuration Options - 22 configuration variables explained
- CMake Functions Reference - Helper functions and macros
Visual Studio Projects:
- MSVC Integration Guide - Integrate with Visual Studio solutions
Advanced Configuration:
- Preprocessor Definitions - Compile-time feature control
Configure distributed communication:
- Message Router (mtrouter) - IPC backbone and network routing
Centralized logging for distributed systems:
Configuration:
- Logging Configuration - Setup scopes, priorities, outputs
Development:
- Logging Development Guide - Instrument applications with logging
Runtime Tools:
- Log Observer - Console-based log monitoring
- Log Collector - Centralized log aggregation service
Recorded Logs:
- Log Database Format (
.sqlog) - Schema of the recorded log files and ready made SQL queries
Configuration and data persistence:
- Key-Value Persistence Syntax - File syntax, storage model, and the
ConfigManagerAPI for persisting data - Areg Configuration Reference (
areg.init) - Complete reference of everyareg.initsection and property
Tools that accelerate development:
Core Tools:
- Areg SDK Tools Overview - Complete toolchain guide
- Code Generator - Generate service interfaces from
.simlfiles
Lusan - Visual Development Tool:
- Building Lusan - Build the GUI tool
- Setup and Using Lusan - Initial configuration
- Service Interface Design - Visual interface editor
- Live Log Monitoring - Real-time distributed logging
- Offline Log Analysis - Post-mortem debugging
Solutions for common issues:
Platform-Specific:
- WSL Troubleshooting - Windows Subsystem for Linux
- CMake Linux Builds - Linux build problems
Integration:
- Integration Troubleshooting - SDK integration issues
Networking:
- Low-Latency TCP Network Tuning - Guide for High-Performance Networking
Hands-on learning resources:
Official Examples:
- Building and Running Examples - 32 example projects
- Examples Source Code - The
examplesdirectory of this repository
Benchmark Examples:
- 30_publatency – Latency benchmark: ping-pong RTT and broadcast OWT across all payload sizes. → View measured results
- 23_pubdatarate – Throughput benchmark: data rate and message rate at scale. → View measured results
- 31_loclatency – In-process latency benchmark: the local counterpart of
30_publatency, needs no router. - 32_pubmixed – Mixed traffic: what a bulk stream costs the latency of small messages sharing the same connection.
Demo Projects:
- Areg SDK Demo - Real-world project examples
- Edge AI Demo - LLM service provider/consumer
- Lusan (Qt Integration) - Professional GUI tool
Areg SDK is built on a performance mandate: latency, throughput, stability, and security are primary design constraints – not secondary concerns. Every IPC path is measured on production code – service discovery, routing, dispatch, and serialization all active. Nothing is stripped for the benchmark.
Run the benchmarks on your own hardware and share results. Community measurements from diverse hardware help the project and may be published here. If you find a performance regression, open a GitHub issue – regressions are treated as bugs.
Measured results:
- areg-sdk Performance Benchmarks – Full latency and throughput data across Linux, Windows, and macOS. Includes methodology, timestamp placement, and reproduction instructions.
- areg-sdk vs ZMQ / NanoMsg / NNG – Direct TCP comparison against the Hitachi Energy Research benchmark (arXiv:2508.07934v1), using raw CSV data.
- areg-sdk Framework Rankings – Competitive position across latency, message rate, and data rate versus all known frameworks with cited sources.
📁 Prefix note: These files use the
08prefix alongside examples, since benchmarks run via examples 23 and 30. If additional benchmark documents are added, a dedicated09prefix is recommended.
Reproduce the results:
- 30_publatency – Run latency measurements on your machine
- 23_pubdatarate – Run throughput measurements on your machine
I want to...
→ Quick Project Setup (30 seconds)
→ Build Areg SDK (10 minutes)
→ Run First Example
→ vcpkg Installation (package manager)
→ CMake Build (from source)
→ MSVC Build (Visual Studio)
→ CMake Integration (CMake projects)
→ MSVC Integration (Visual Studio projects)
→ CMake Functions (helper functions)
→ Service Interface Design (visual editor)
→ Code Generator (automated code generation)
→ Live Log Monitoring (Lusan GUI)
→ Log Observer (command-line tool)
→ Log Analysis (offline logs)
→ Log Database Format (query recorded logs with SQL)
→ Troubleshooting Guides (common issues)
→ Logging Configuration (scopes and priorities)
→ Areg Configuration Reference (areg.init file)
→ CMake Cross-Compilation (ARM, etc.)
→ CMake Troubleshooting (build issues)
→ Low-Latency TCP Tuning (GBytes data and 1M messages per second)
→ Performance Benchmarks – latency and throughput data with methodology
→ vs ZMQ / NanoMsg / NNG – direct TCP comparison (Hitachi paper)
→ Framework Rankings – competitive position table
→ Run 30_publatency – reproduce latency measurements
→ Run 23_pubdatarate – reproduce throughput measurements
Getting Started:
- Quick Project Setup - Create your first project
- Examples - Learn from working code
- Service Interface Design - Create service contracts
Development:
- CMake Integration - Add Areg to existing projects
- Code Generator - Generate service code
- Logging Development - Add logging to apps
Debugging:
- Live Logging - Monitor running applications
- Offline Analysis - Debug production issues
Architecture:
- Message Router - IPC and network communication
- Service Interface Concepts - Design patterns
- Persistence - Configuration management
Integration:
- CMake Configuration - Build system setup
- CMake Functions - Advanced integration
- Preprocessor Definitions - Feature control
Tools:
- Areg SDK Tools - Complete toolchain overview
- Lusan - Visual development environment
Build and Deploy:
- CMake Build - CI/CD integration
- MSVC Build - Windows automation
- CMake Configuration - Build customization
Monitoring:
- Log Collector - Centralized logging service
- Log Observer - Runtime log control
- Logging Configuration - Production settings
Troubleshooting:
- WSL Issues - Windows/Linux integration
- CMake Issues - Build problems
- Integration Issues - SDK integration
- Low-Latency TCP Network Tuning - Guide for High-Performance Networking
Testing:
- Examples and Tests - Unit tests and examples
- Build from Source - Test environments
Log Analysis:
- Live Logging - Real-time monitoring
- Offline Logging - Test result analysis
- Log Configuration - Test logging setup
Tools:
- Log Observer - Automated log inspection
- Lusan - Visual test monitoring
Areg SDK implements a Service Provider-Consumer model:
- Service Interface: Contract defined in
.simlfiles - Service Provider: Implements the service (server)
- Service Consumer: Uses the service (client)
- Message Router: Handles automatic routing and synchronization
Local Services (Multithreading):
- Communication between threads in the same process
- Zero-copy optimization
- Automatic synchronization
IPC Services (Multiprocessing):
- Communication between processes
- Automatic serialization/deserialization
- Network-transparent
Remote Services (Networking):
- Communication across network boundaries
- Same API as local/IPC services
- Automatic message routing
Your Application
↓ uses
Service Interface (.siml)
↓ generates (codegen.jar)
Service Provider/Consumer Code
↓ links
Areg Framework (libareg)
↓ communicates via
Message Router (mtrouter)
↓ monitored by
Log Collector (logcollector)
↓ visualized in
Lusan GUI
| Platform | Status | Compilers | Architectures |
|---|---|---|---|
| Linux | ✅ Fully Supported | GCC, Clang | x86, x86_64, ARM, ARM64 |
| Windows | ✅ Fully Supported | MSVC, MinGW, Clang | x86, x86_64 |
| macOS | ✅ Fully Supported | Clang, GCC | x86_64, ARM64 |
| WSL | ✅ Fully Supported | GCC, Clang | x86_64, ARM64 |
| Embedded Linux | ✅ Supported | GCC (cross-compile) | ARM, ARM64, MIPS |
- GitHub Discussions: Ask questions
- GitHub Issues: Report bugs
- Email: info[at]areg.tech
- Website: www.areg.tech
Help improve the documentation:
Found an issue?
- Submit a pull request
- Open a discussion
- Create an issue
Want to contribute?
- Improve existing documentation
- Add missing examples
- Translate documentation
- Share your use cases
- GitHub: github.com/aregtech/areg-sdk
- LinkedIn: Aregtech (Artak Avetyan)
- Releases: GitHub Releases
- Areg SDK Examples - 17+ examples from basic to advanced
- Areg SDK Demo - Real-world project templates
- Edge AI Demo - LLM inference with Areg SDK
- Lusan (areg-sdk-tools) - Professional GUI tool
- vcpkg Package - Package manager support
- API Reference - Doxygen-generated API docs
- Release Notes - Version history
- License - Apache License 2.0
- ✅ Quick Project Setup - Create working project (30 sec)
- ✅ Run Examples - See Areg SDK in action (5 min)
- ✅ Design Services - Create your first service (10 min)
- ✅ Build Edge AI Demo - Real-world application (20 min)
- ✅ CMake Integration - Integrate into existing projects
- ✅ CMake Functions - Advanced build configuration
- ✅ Log Monitoring - Setup production logging
- ✅ Cross-Compilation - Build for embedded systems
- ✅ Architecture Overview - Understand service model
- ✅ Toolchain Overview - Complete development tools
- ✅ CI/CD Setup - Automated builds
- ✅ Troubleshooting - Common issues
- ✅ Low-Latency TCP Network Tuning - Guide for High-Performance Networking
- ✅ Performance Benchmarks - Reference results and methodology
- ✅ Run 30_publatency - Reproduce latency on your hardware
- ✅ Run 23_pubdatarate - Reproduce throughput on your hardware
Ready to build distributed applications?
Start with Quick Project Setup or explore Examples!
Copyright © 2023–2026 Aregtech (Artak Avetyan)
https://www.areg.tech
Contact: info[at]areg.tech
