Bolt applications in the RDK ecosystem are of two types:
To build a Bolt‑based web application, you will need the following:
Install and set up bolt-tools on your system by following the instructions in the repository:
https://github.com/rdkcentral/bolt-tools/tree/main
Bolt Tools provides the utilities required to package and sign your Bolt applications.
The app package configuration defines the entry point, dependencies, permissions, and other metadata required for building the Bolt package.
Example: "--url=https://lightningjs.io/tmdb/#splash"
Example: "com.rdkcentral.wpe-rdk": "0.1.0"
{
"id": "com.rdkcentral.appName",
"version": "0.1.0",
"versionName": "develop",
"name": "tmdb",
"packageType": "application",
"entryPoint": "--url=https://lightningjs.io/tmdb/#splash",
"dependencies": {
"com.rdkcentral.wpe-rdk": "0.1.0"
},
"permissions": [
"urn:rdk:permission:internet",
"urn:rdk:permission:firebolt",
"urn:rdk:permission:thunder",
"urn:rdk:permission:rialto"
],
"configuration": {}
}
Testing on Beta Apps
For testing the beta wpe browser bolt (wpe+0.2.0) , the entry point configurations need to be set a bit differently :
--lightning starts as a LightningApp (HtmlApp is default)--dev starts inspector on port 12345--verbose enables a set of webkit logs & webkit related gstreamer logs"entryPoint": "--dev https://mvt.rdkcentral.com""entryPoint": "--lightning --dev file://usr/share/refui/index.html""entryPoint": "https://www.bunsoft.dev/webgl3d.html"
More Info on Beta App Release can be found here: RDK8 - Beta Apps Release
To package an HTML/Lightning app into a Bolt bundle, you need:
com.rdkcentral.app_name.json).tgz formatFor HTML/Lightning applications, the rootfs layer can be an empty .tgz file, since the app is launched via a browser using a URL.
.tgz file, e.g.:empty.tgz
bolt pack com.rdkcentral.app_name.json empty.tgz
com.rdkcentral.app_name+<version>.bolt
This is the Bolt package to be installed on the platform.Every Bolt app must be digitally signed before installation.
Follow the signing instructions here:
https://wiki.rdkcentral.com/spaces/RDKM/pages/447124247/Bolt+package+-+signing+and+verification
.bolt package to the device, for example:/tmp/com.rdkcentral.app_name+0.1.0.bolt
curl -X POST http://127.0.0.1:9998/jsonrpc -d '{"jsonrpc":2.0,"id":1,"method":"org.rdk.PackageManagerRDKEMS.install","params":{"packageId":"com.rdkcentral.app_name+0.1.0.bolt","version":"0.1.0","fileLocator":"/tmp/com.rdkcentral.app_name+0.1.0.bolt"}}' -H "Content-Type: application/json"
curl -s -X POST http://127.0.0.1:9998/jsonrpc -d '{"jsonrpc": "2.0","id": 1013, "method": "org.rdk.AppManager.1.launchApp", "params":{"appId":"com.rdkcentral.app_name"}}'
This page describes the process for creating and building native Bolt applications within the RDK ecosystem. The meta-bolt-youtube repository serves as the canonical reference implementation throughout this article.
See also: meta-bolt-distro | bolt-tools
A native Bolt application is a self-contained, application packaged as `.bolt` . Each application is maintained in its own Yocto meta-layer repository and follows a shared set of conventions across all RDK Bolt projects.
The overall workflow is:
All RDK Bolt application repositories follow this naming pattern:
meta-bolt-<app_name>
Examples:
A new meta-bolt repository is expected to contain the following top-level layout:
meta-bolt-<app_name>/ ├── README.md ├── CONTRIBUTING.md ├── LICENSE ├── COPYING ├── CHANGELOG.md ├── NOTICE ├── manifests/ # dependency declarations (see Section 3) ├── package-configs/ # Bolt package configuration JSON files (see Section 6) ├── recipes-core/ # image recipes (see Section 4) ├── recipes-devtools/ # host-tool recipes ├── recipes-extended/ # native app recipes and bbappend files (see Section 5) ├── conf/ # Yocto layer configuration └── setup-environment # reusable environment setup script (see Section 7)
Note
The conf/layer.conf file is critical for layer discovery and recipe resolution.
At minimum, verify the following:
If your team uses the term "BBTPath", treat it as the layer search path concept and align it with standard Yocto BBPATH/BBLAYERS configuration.
Also confirm package-config consistency:
Reference:
The manifests folder is the central location for declaring all components that the build system must fetch and integrate before building the native application.
The deps.xml file inside the manifests folder acts as a dependency resolver for the Bolt application build. It declares:
Typical entries in deps.xml cover:
Reference: deps.xml
An image recipe is a BitBake (.bb) file placed under recipes-core/images/. It defines the full contents of the root filesystem that will be assembled into the final Bolt package, including which packages, binaries, libraries, and supporting components are installed.
The image recipe should declare all runtime dependencies of the native application so that the resulting Bolt package is complete and self-contained.
The following image recipes in meta-bolt-youtube can be used as templates:
Native application recipes are BitBake recipes that build the application binaries and libraries included in the final package. They can be sourced in one of two ways:
If an existing recipe for the native application already exists in one of the meta-layers declared in manifests/deps.xml, that recipe can be consumed directly without duplication.
When a suitable recipe does not exist upstream, new .bb recipe files or .bbappend overlay files can be added under the local recipes-extended tree:
recipes-extended/<app_or_component>/
Keeping customisations in recipes-extended isolates them from upstream changes and makes future maintenance easier.
The package-configs directory holds JSON configuration files that the Bolt tool reads to determine how to build a target image and assemble the final Bolt package.
There are two distinct config file types for each application:
This file is the primary Bolt build configuration. It instructs the Bolt tool on:
Reference examples in meta-bolt-youtube:
This file contains the native application package metadata that is shipped inside the Bolt package. At runtime, the on-device application management service reads this file to determine:
Reference examples in meta-bolt-youtube:
Info
The setup-environment and repo-sync scripts provided in meta-bolt-youtube are intentionally generic and designed to be reused in new Bolt application repositories with little to no
modification.
To adapt them for a new repository:
Reusing these scripts keeps the bootstrap and workspace initialization process consistent across all native Bolt application projects.
source setup-environment mkdir bolts/ # inside your build folder cp <copy your dependent bolt package for eg. base.bolt> bolts/ bitbake bolt-env && hash bolt #build bolt tools for your build setup bolt make <app_name>