AstuteDDS Documentation
AstuteDDS delivers real-time, secure data distribution for mission-critical systems — from military land vehicles and unmanned platforms to robotics and industrial automation. It provides a standards-compliant DDS implementation that connects every subsystem in your platform over a single, reliable data bus, with no runtime dependencies and no vendor lock-in.
Astute Inspect: See Your DDS System Live
Astute Inspect is AstuteDDS's visual diagnostics and topology workspace for DDS domains. It helps teams detect QoS mismatches, validate endpoint connectivity, and monitor live traffic quickly during integration and interoperability testing.

Learn more in the Astute Inspect documentation.
What is AstuteDDS?
AstuteDDS is a C++20 static library (libastutedds.a) that brings together everything you need to build and deploy DDS-based systems:
- Proven interoperability — wire-compatible with OpenDDS, Fast DDS, Cyclone DDS, and RTI Connext via DDSI-RTPS 2.5
- Complete type system — DDS-XTypes 1.3 with TypeObject, assignability, and dynamic types for seamless cross-vendor data exchange
- Standards-compliant serialisation — XCDR1/XCDR2 with delimited headers and mutable types
- IDL 4.2 compiler — generate ready-to-use C++ from your data model in one step
- GVA profile — built-in support for UK Def Stan 23-009 Generic Vehicle Architecture
- Durability & persistence — TRANSIENT and PERSISTENT modes for late-joining readers and survivable data stores
- Recording & replay — capture live DDS streams to disk and replay with original timing for test and analysis
- Optional DDS Security — authentication, access control, and AES-GCM encryption when your programme requires it
Features & Capabilities
AstuteDDS is production-complete. All OMG DDS 1.4, DDSI-RTPS 2.5, DDS-XTypes 1.3, and DDS Security 1.1/1.2 features are implemented and interoperability-verified.
| Category | Capabilities |
|---|---|
| Standards Compliance | DDS 1.4 · DDSI-RTPS 2.5 · DDS-XTypes 1.3 · DDS Security 1.1/1.2 · OMG IDL 4.2 |
| Wire Protocol | SPDP · SEDP · UDP unicast & multicast · TCP · Shared memory · DATA_FRAG / NACK_FRAG |
| Reliability | HEARTBEAT / ACKNACK · History cache · Resource limits · All 22 OMG QoS policies |
| Serialisation | XCDR1 · XCDR2 with DHEADER and EMHEADER · DDS-XML QoS profile loader |
| IDL Compiler | IDL 4.2 → C++ · @key · @optional · @data_representation · full annotation support |
| X-Types | TypeObject · TypeIdentifier · Assignability · DynamicData · TypeLookup Service |
| DCPS API | All core entities · Content-Filtered Topics · Writer-side filtering · ROS 2 bridge helpers |
| Persistence | TRANSIENT and PERSISTENT durability · Persistence Service for late-joining readers |
| Recording & Replay | Capture DDS payload streams to disk · replay with original timing (DataLogTool) |
| Security | Authentication · Access Control · AES-GCM Crypto SPIs · certificate-based identity |
| Domain Routing | Bridge topics and traffic between DDS domains with type compatibility checking |
| Deployment | Modern C++20 · single static library (libastutedds.a) · no runtime dependencies |
| Tools | IDL compiler · Astute Inspect GUI · Qt6 Shapes Demo · JSON discovery config |
| Interoperability | Verified against OpenDDS, Fast DDS, Cyclone DDS, and RTI Connext |
Supported Operating Systems
- Windows
- RHEL Family: RHEL, Rocky Linux, AlmaLinux
- Debian Family: Debian, Ubuntu, and compatible clones
Quick Links
- Getting Started - Learn the basics
- Shapes Demo - Run the interactive shapes demo
- QoS Guide - Configure Quality of Service
- DDS Security - Authentication, encryption, and access control
- Domain Router - Bridge DDS domains
- AstuteDDS Inspector - Visual topology and monitoring
- XML QoS Profiles - Load QoS from XML files
- Persistence Service - Durable data for late joiners
- Recording and Replay - Capture and replay DDS streams
- IDL Compiler - Generate C++ from IDL
- API Reference - Detailed API documentation
Example: Hello World
#include "HelloWorld.hpp"
#include <astutedds/dcps/CorePolicy.hpp>
#include <astutedds/dcps/dcps.hpp>
#include <astutedds/dcps/qos.hpp>
int main()
{
dds::domain::DomainParticipant participant(0, 0);
dds::topic::Topic<Demo::HelloWorld> topic(participant, "HelloWorldTopic");
dds::pub::Publisher publisher(participant);
astutedds::dcps::DataWriterQos wqos{};
wqos.reliability.kind = astutedds::dcps::ReliabilityQosPolicyKind::RELIABLE_RELIABILITY_QOS;
dds::pub::DataWriter<Demo::HelloWorld> writer(publisher, topic, wqos);
Demo::HelloWorld msg;
msg.id(1);
msg.message("Hello, DDS World!");
writer.write(msg);
return 0;
}
Documentation Structure
This documentation is organized into several sections:
- Getting Started: Installation, building, and basic concepts
- DDS Concepts: Core DDS principles and terminology
- Guides: Step-by-step tutorials for common tasks
- API Reference: Detailed API documentation
- Examples: Code examples and use cases
- About: Architecture, specifications, and project information
Need Help?
- Browse the Examples
- Read the Getting Started Guide
- Open an issue on GitHub
License
AstuteDDS is open source software. See the License page for details.