RDK8 introduces several significant architectural improvements:
A quick architecture overview of RDK8 to help associate the capabilities with the software stack is given below.
The architecture consists of three main layers:
Applications & Runtime (supporting components for DAC and application management)
RDK Core Middleware Layer (core functionality and orchestration)
Vendor Layer (hardware-specific implementations)
Applications & Runtime connects to the Middleware Layer, which connects to the Vendor Layer, creating a clear separation of concerns with independent development and update cycles.
The objective of the vendor layer is to minimize the amount of code required per hardware platform, thereby reducing development time to support scalability. All vendor layer implementations must be fully compliant with the HAL specification to ensure compatibility with a common middleware build and provide standardized interfaces to the middleware layer, abstracting hardware differences.
The vendor layer contains hardware-specific drivers, BSPs, and platform-specific adaptations. Responsibility for build systems, updates, and security identification related to deliverables lies with the vendor implementer. To support management and cross-layer compatibility, a minimal subset of component implementations is specified, such as the Linux Kernel version, core libraries, and patches.
Reference open-source software is provided to enable reuse of common components; however, usage of these components is not mandatory for the vendor implementer. Manufacturing and serialization requirements and processes are defined in the Entertainment OS device specifications and must be followed accordingly. The vendor layer can be updated independently without affecting other layers.
The middleware layer provides a single, consistent implementation of core entertainment device functionality. It is designed to be simple, robust, and cooperative, enabling rapid innovation through common tooling and patterns.
Middleware components utilize the Thunder Framework to implement functionality in a standardized manner with unified orchestration, providing consistent APIs for applications to access device capabilities. The layer includes Thunder Framework for core orchestration and plugin infrastructure, ENT Services for entertainment-specific services, RDK App Manager for containerized application lifecycle, Media Framework for media playback, DRM Systems for digital rights management, App Gateway for application orchestration, and Device Management for platform configuration and control. Reference open-source software is provided to allow reuse of common components, but the middleware is not obligated to use any of them.
RDK App Manager is a collection of Thunder plugins responsible for the complete lifecycle of containerized applications. It downloads applications from servers, stores them on the device, launches them in isolated Linux containers, and manages their lifecycle and resources. Every application runs inside an OCI-compliant Linux container managed by Dobby, the RDK container runtime. The App Managers control container contents, start and stop behavior, hardware resource usage, and system communication. Working alongside it, App Gateway supports Lifecycle Management 2.0 and provides higher-level application orchestration capabilities. On the services side, ENT Services deliver entertainment-specific platform services. The Media Framework is based on Rialto, a community media playback framework that replaces AAMP
In RDK8, the traditional Application Layer has been removed entirely, all applications and their runtimes are delivered as containerized packages — platform-agnostic, OCI-artifact-based packages that are fully decoupled from the firmware image.
Applications are organized into three logical package types:
The primary runtime packages are WPE WebKit and Libcobalt, both now shipped as runtime container packages rather than being embedded in the middleware layer. These runtimes are consumed by application container packages such as Reference UI, YouTube, YouTube Kids, and other HTML5/Lightning/web-based applications.
Each component — base, runtime, and app — can be upgraded independently without rebuilding or reflashing the firmware. Applications can be downloaded at runtime, sideloaded, or preloaded at the image assembler stage and installed at first boot.
To support an out-of-box user experience, RDK8 introduces the concept of Factory Apps, which bundle the Reference UI (App package), WPE WebKit (Runtime package), and Base packages together. These are preloaded on the device, installed automatically during initial boot, and available immediately after first boot.
SceneSet is the default factory app that handles system UI lifecycle and installation. It launches at device startup, checks for factory apps availability, copies them to the preinstall folder if needed, triggers PreInstall Manager to install packages, starts the default application (e.g., RefUI), and monitors for application updates.
DAC 2.0 is one of the container based technologies for app delivery, and is used for RDK8 release. DAC 2.0 provides a solution for platform-agnostic, binary-exchangeable native applications that can run across all RDK platforms without compile-time modifications. It also introduces multi-layer support with Base layer (core system dependencies), Runtime layer (application runtime environment), App layer (application-specific code), and GPU layer (vendor GPU libraries). Using these layers, OCI rootfs is created on-the-fly using overlayfs. The key improvement from DAC 1.0 is that app container bundle generation now happens on the CPE itself rather than on a cloud bundle generator. This architecture enables flexible application deployment and updates, reduced image size, independent application lifecycle management, and better isolation and security through containerization.
The typical flow of a request through the RDK8 stack:
The system follows a standardized request-response flow where the Application sends request to Firebolt Framework → Firebolt Framework translates request for ENT Services → ENT Services processes request and sends to Thunder Framework → Thunder Framework processes request and sends to Hardware Abstraction Layer → HAL executes command on Hardware → Hardware returns result to HAL → HAL processes result and sends to Thunder Framework → Thunder Framework formats response and sends to ENT Services → ENT Services translates response for Firebolt Framework → Firebolt Framework returns result to Application. This standardized flow ensures consistent behavior across different hardware platforms and enables rapid innovation through common patterns.
RDK8 build systems has evolved from the layered build system approach introduced in RDK7. In RDK8, the open source software ( OSS ) components were built and delivered as IPKs, which were consumed by the RDK layers. To make this model more flexible - thereby allowing to configure an OSS component for a particular platform - a new OSS consumption model is introduced in RDK8. In RDK8, the OSS layer is built from source in the vendor and middleware layers using the OSS reference distribution layer meta-rdk-oss-reference. Building the vendor and middleware layers now produces two IPK feeds, one for the layer and one for the OSS components
For a detailed build system overview, please refer this section
Consider the use case of a user accessing a streaming application like YouTube on an RDK8 supported device.
This standardized request-response flow ensures consistent behavior across different hardware platforms while enabling rapid innovation through common patterns, modular component design, and the flexibility of downloadable containerized applications. The architecture provides a seamless and secure YouTube streaming experience with enhanced isolation through containerization, independent application lifecycle management through RDK App Manager, and clear separation of concerns across the three-layer architecture