← News
/DISPATCH · 2026-09-16

Rheinmetall Open-Sources Battlesuite Onboard and Tactical APIs

In September 2026 Rheinmetall open-sourced the first Battlesuite core interface specifications, the Onboard API and the Tactical API, under github.com/Rheinmetall. Documentation 9.10.0 describes onboardapi as DDS-based middleware on ddkit 4.4.1 and CycloneDDS 11.0.0, with interface text under EPL 2.0 and the runtime under EULA-RME-SDK-1.0.

September 2026 release

Rheinmetall, based in Dusseldorf, Germany, and founded in 1889, is a European defense technology group covering land, sea, air, and space systems. Hardware programs include the RH-120 120 mm smoothbore tank gun used on Leopard 2 and U.S. M1 series tanks, the Lynx infantry fighting vehicle, the KF51 Panther tank, the Skynex air-defense system, the BK27 aircraft cannon, large-caliber and programmable ammunition, and high-energy laser engineering. The firm also builds battlefield software and combat systems and supplies the German Bundeswehr.

In September 2026 Rheinmetall said it had open-sourced the first core interface specifications of its Battlesuite digital platform: the Onboard API and the Tactical API. Coverage also drew on official documentation 9.10.0 and reporting by Defence Industry Europe.

Repositories named in the announcement:

github.com/Rheinmetall/onboardapi

github.com/Rheinmetall/tacticalapi

The stated goal is to cut integration work when connecting software, sensors, and weapons from different vendors. Timo Haas, chief executive of Rheinmetall Digital Systems, said Battlesuite is the software base for the company's digital, networked combat strategy. Standardized interfaces are meant to integrate platforms, sensors, effectors, and command-and-control applications and to support modular, interoperable, extensible defense systems. The approach matches software-defined military equipment, where functions can be added without a full redesign.

Battlesuite is described as a vendor-neutral digital hub for sensors, cameras, unmanned aircraft, and other military and civil devices. Named civil uses include civil protection, disaster management, and critical-infrastructure protection.

Ervin Kolenovic, Battlesuite project lead, said the interface set simplifies combining components regardless of manufacturer, allows software modules to be reused across projects, and supports ongoing upgrades. The September release is interface specifications. Developers can write compatible components without the full Battlesuite internal implementation.

Onboard API covers communication among hardware and software components inside a single combat platform. Tactical API covers tactical data exchange among platforms. Together they are intended to let tanks, unmanned aircraft, and radars from different vendors exchange battlefield data.

Battlesuite interface architecture

Onboard API middleware

Official documentation 9.10.0 defines onboardapi as an interface library and middleware for communication between sensor systems and software components.

rheinmetall.github.io/onboardapi-documentation/9.10.0/index.html

Rheinmetall onboardapi documentation mark

The library sits on Rheinmetall's ddkit software development kit. Transport uses the Object Management Group Data Distribution Service (DDS), a data-centric publish-subscribe model. Participants discover each other on the network without preconfigured peer addresses.

Client calling a service

Service pushing data to multiple clients

Each interface is a Service (provider that owns a resource such as a sensor, database, or device) or a Client (consumer that subscribes for updates or sends commands). In the documented example, a Speedometer Service reads a sensor; Dashboard and Data Logger implement the client interface and receive speed updates; a client can call a calibration method on the service.

IService operations: Cmd (client commands the service, reliable, no late-joiner), Config (client configures the service, reliable, late-joiner), Notify (client updates the service, reliable, no late-joiner), Request (client request, reliable, no late-joiner). IClient operations: Report (state to all clients, reliable, late-joiner), Event (broadcast, reliable, no late-joiner), Response (reply to a request, reliable, no late-joiner), Stream (best-effort stream, no late-joiner).

IService four operation types

IClient four operation types

Default delivery is guaranteed with retransmission. Stream() uses best-effort for high-rate data such as video. Late-joiner support stores the last Report and Config values so a component that starts later receives current state. An IsRemoved flag marks a message as no longer valid and is set true when a service shuts down. Parameters whose names start with Key are keyed topics; each unique key is handled as separate data with its own lifecycle.

Version coexistence uses DDS XTypes and XCDR2 encoding so different software versions on the same platform can communicate as data models change. The core library is C++. Wrappers cover Java, C#/.NET, and Python.

Modules, versions, and licenses

Documentation groups about 50 domain modules, including M_Alert, M_Camera, M_Sensor, M_CoordinateFrame, M_Mount, M_ObjectManager, M_VideoTracker, M_LaserRangeFinder, M_RecordingCtrl, M_ReplayCtrl, M_ScanCtrl, M_Teleoperation, and M_MissionCtrl.

Alert service startup sequence by crew role

Alert startup reports static configuration and initial state, loads historical alerts, notifies by crew role (driver, gunner, commander), then updates the active alert count. Camera sequences report static settings and state, accept commands such as CmdSetZoomLevel, report updated state, and set IsRemoved true on shutdown.

Developers implement IClient or IService, override callbacks, then call Service::create and Client::create with domainId, serviceName, and a callback object. Lambda callbacks are supported. CMake uses find_package(onboardapi) and target_link_libraries with onboardapi::onboardapi. ddkit adds Optional wrappers, a GlobalHandler, and CallbackInfo.

Runtime uses Eclipse CycloneDDS. CYCLONEDDS_URI points to cyclone.xml. Documentation recommends localhost (127.0.0.1) for local development, a specific NIC address on wired networks, multicast limited to participant discovery (SPDP) with unicast for data and endpoint discovery (SEDP) on Wi-Fi, and a unicast Peers list when multicast is blocked. Logging uses a JSON file named after the executable or DDKIT_CFG, with levels from trace to off.

Current documentation is 9.10.0 on ddkit 4.4.1 and CycloneDDS 11.0.0, with Python 3.13 and 3.14 support. 9.9.0 was the initial version. Interface descriptions use Eclipse Public License 2.0. The runtime library uses Rheinmetall EULA-RME-SDK-1.0.