Skip to content
Vinod Sathyaseelan edited this page Aug 17, 2025 · 17 revisions

Ripple (Firebolt App Gateway) - WIP

Open‑source, Rust‑based application gateway for RDK video devices — discover, launch, and manage apps via the Firebolt API, with a modular extension model.

Repo: https://github.com/rdkcentral/Ripple
Docs (RDK Wiki): https://wiki.rdkcentral.com/display/RDK/Ripple


Quick links


What is Ripple?

Ripple is a modular Firebolt® gateway designed to serve as the primary access point for Firebolt Apps to utilize Firebolt APIs and services. Built in Rust, it provides a consistent API layer for applications, and offers a range of additional features described below.

Core Features

  • Accept and manage connections and sessions from Apps
  • Request validation: Ripple automaticall validate all incoming requests against the OpenRPC Schema
  • Permission verification : Ripple check app-level API permissions before any requests get forwarded
  • UserGrants: Privacy-aware API surface that respects user consent
  • App Session Management: Ripple handles the complete lifecyle of app connections/sessions
  • Facilitate service discovery, accept service registration, and manage the lifecycle of service layer connections
  • Perform handshaking with services and optionally exchange service rules
  • Accept dynamic service registration requests from services and bind routing dynamically
  • Dynamically route API calls to service layers using the Ripple Service Registry and Service Brokers (agents)
  • Endpoint Broker and Rule Engine route calls and transform requests, responses and events for specific providers

These features are configurable at build time, allowing operators to enable or disable specific functionality based on their requirements

Services are independently deployable, systemd-based components that provide specific Firebolt public or private API functionalities. The gateway routes requests to providers (Thunder plugins, HTTP/WS services) through pluggable brokers.

Highlights

  • Rust: Memory Safety, Concurrency without data races using async/await, Developer productivity, Deterministic behavior and Better long-term maintainability. No "mystery crashes"
  • Extensible: load device/operator‑specific extensions/services
  • Brokers: Thunder (default), WebSocket, HTTP
  • Config‑driven: device/app/extension manifests
  • Capabilities & grants: privacy‑aware API surface

Clone this wiki locally