ApplicationLauncher Cluster
Cluster ID: 0x050C |
Endpoint: Media endpoint (smart TV, set-top box, streaming device, etc.)
ApplicationLauncher handles launching, stopping, and hiding content apps on media devices — it is the underlying implementation for voice assistant commands like "Open Netflix" and "Close the current app". It manages the app lifecycle (launch/stop/hide), not in-app content playback. Typically deployed on the media endpoint of smart TVs or set-top boxes, used in conjunction with ApplicationBasic (app information queries).
ApplicationBasic (0x050D) handles read-only information queries — tells the Controller "what this app is and its current status". ApplicationLauncher (0x050C) handles operations — launching, stopping, and hiding apps. Both are typically deployed on the same Endpoint: first use ApplicationBasic to get app info, then use ApplicationLauncher to control the app lifecycle.
Commands
The ApplicationLauncher Cluster has 3 request commands and 1 response command. LaunchApp launches an app, StopApp stops it, HideApp hides it (moves to background), and all three return LauncherResponse with the operation result. Click a command ID in the table below to jump to its detailed description.
| ID | Name | Direction | Description | Required Feature |
|---|---|---|---|---|
0x00 |
LaunchApp | Request | Launch the specified app | None |
0x01 |
StopApp | Request | Stop the specified app | None |
0x02 |
HideApp | Request | Hide the specified app (move to background) | None |
0x03 |
LauncherResponse | Response | Operation result (shared by all three commands) | None |
LaunchApp — Launch App (0x00)
Launches the specified app on the device. If the app is already running, it is brought to the foreground. The target app is uniquely identified via ApplicationStruct, and can carry application-specific data (e.g., DeepLink, launch parameters).
| Parameter | Type | Required | Description |
|---|---|---|---|
| Application | ApplicationStruct | No | App identifier to launch. Omit to launch the app on the current Endpoint |
| Data | octstr | No | Application-specific additional data (e.g., DeepLink, launch parameters), parsed by the app |
// LaunchApp command example
// Launch the StreamCo Player app from the CSA catalog
{
"Application": {
"CatalogVendorID": 24742,
"ApplicationID": "com.streamco.player"
},
"Data": "source=voice&deeplink=/home"
}
Usage Scenarios
The user tells the voice assistant "Open Netflix". The assistant finds Netflix's ApplicationStruct (CatalogVendorID + ApplicationID) and sends the LaunchApp command. The TV launches Netflix and switches it to the foreground. If Data is included (e.g., DeepLink), Netflix can navigate directly to the specified page.
StopApp — Stop App (0x01)
Stops the specified app on the device. The app's runtime status changes to Stopped. If the app is playing content, playback is also terminated.
| Parameter | Type | Required | Description |
|---|---|---|---|
| Application | ApplicationStruct | No | App identifier to stop. Omit to stop the app on the current Endpoint |
// StopApp command example
// Stop the currently running StreamCo Player app
{
"Application": {
"CatalogVendorID": 24742,
"ApplicationID": "com.streamco.player"
}
}
Usage Scenarios
The user says "Close Netflix", or an automation rule automatically stops all running entertainment apps after 11 PM. StopApp completely terminates the app process and releases system resources. Unlike HideApp, a stopped app needs to be relaunched to use.
HideApp — Hide App (0x02)
Moves the app to the background without terminating its process. The app status changes to ActiveHidden, and it can still perform background tasks (e.g., continue playing music).
| Parameter | Type | Required | Description |
|---|---|---|---|
| Application | ApplicationStruct | No | App identifier to hide. Omit to hide the app on the current Endpoint |
// HideApp command example
// Hide app (move to background, process not terminated)
{
"Application": {
"CatalogVendorID": 24742,
"ApplicationID": "com.streamco.player"
}
}
Usage Scenarios
When the user receives a call while watching a video, the system sends HideApp to move the video app to the background and display the call screen. After the call ends, LaunchApp brings the video app back to the foreground, and it can resume playback from where it was interrupted. Difference from StopApp: HideApp preserves app state, suitable for temporary switching; StopApp completely closes the app, suitable for releasing resources when no longer in use.
LauncherResponse — Operation Result (0x03)
Unified response for LaunchApp, StopApp, and HideApp. Contains a status code and optional additional data. Controllers determine success based on Status; on failure, Data may contain error details.
| Field | Type | Description |
|---|---|---|
| Status | StatusEnum | Operation result status code (see enum below) |
| Data | octstr | Optional additional data; may return session info on success or error description on failure |
// LauncherResponse example
// Launch successful
{
"Status": 0,
"Data": "session-id=xyz789"
}
// App not available (not installed or not in catalog)
{
"Status": 1,
"Data": "Application not found in catalog"
}
// Waiting for user approval (e.g., first launch requires agreeing to terms)
{
"Status": 3,
"Data": "User approval required for first launch"
}
Attributes
The ApplicationLauncher Cluster has 2 attributes. Click an attribute ID in the summary table below to jump to its detailed description.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
CatalogList | list<uint16> | List of app catalog vendor IDs supported by the device |
0x0001 |
CurrentApp | nullable ApplicationEPStruct | Currently foreground-running app |
App Management (0x0000, 0x0001)
Describes the app catalog scope supported by the device and the current foreground app status.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
CatalogList (Catalog List) | list<uint16> | List of app catalog vendor IDs (CatalogVendorID) supported by the device. When a Controller sends LaunchApp, the CatalogVendorID in the Application parameter must be in this list; otherwise the device cannot recognize the app identifier. Requires AP feature |
0x0001 |
CurrentApp (Current App) | nullable ApplicationEPStruct |
Information about the currently foreground app, including app identifier and its Endpoint.
null when no app is in the foreground.
Requires AP feature
|
CurrentApp provides a device-global view of "which app is in the foreground", while
ApplicationBasic's Status attribute is each app's own report of its runtime status.
A TV may have multiple apps with Status = ActiveHidden (running in background), but CurrentApp points to only one foreground app (or null).
Struct Definitions
The ApplicationLauncher Cluster uses two structures to identify apps.
ApplicationEPStruct (App Endpoint Struct)
Describes an app and its corresponding Endpoint on the device. Used in the CurrentApp attribute,
allowing Controllers to both know what the current foreground app is and directly locate its Endpoint for further interaction.
| Field | Type | Required | Description |
|---|---|---|---|
| Application | ApplicationStruct | Yes | App's unique identifier (catalog vendor ID + app ID) |
| Endpoint | endpoint-no | No | Endpoint number where the app resides. With this number, the Controller can directly access other Clusters on that Endpoint (e.g., MediaPlayback, ContentLauncher) |
ApplicationStruct (App Identifier Struct)
Uniquely identifies a content app through the catalog system. This struct is used in LaunchApp / StopApp / HideApp commands and the CurrentApp attribute, and shares the same structure as the ApplicationBasic Cluster's Application (0x0004) attribute.
| Field | Type | Description |
|---|---|---|
| CatalogVendorID | uint16 | Vendor ID of the app catalog, identifying which catalog/platform the app comes from. E.g., the CSA official catalog ID is 0x60AE (24750) |
| ApplicationID | string | String that uniquely identifies the app within the catalog, typically reverse domain name style. E.g., "com.netflix.app", "com.youtube.tv" |
CatalogVendorID is the VendorID of the app catalog provider, not the app vendor.
Think of it as "which app store this app is listed in".
The same app may have different ApplicationIDs in different catalogs, but the CatalogVendorID + ApplicationID combination is globally unique.
Enums
StatusEnum
Status codes in LauncherResponse, indicating the app operation result. Compared to ContentLauncher's StatusEnum, ApplicationLauncher's status codes cover app installation and permission approval scenarios.
Downloading (4) and Installing (5) are intermediate states — receiving them does not mean the operation failed.
The Controller needs to wait and retry LaunchApp, or subscribe to related attribute changes to learn when installation is complete.
PendingUserApproval (3) is similar — the user needs to complete confirmation on the device before proceeding.
Feature Bitmap
The ApplicationLauncher Cluster declares device capabilities via FeatureMap (0xFFFC):
A device without the AP feature is a single-app device — the device itself is the app, and LaunchApp/StopApp/HideApp operate on the device itself. With AP enabled, the device is an app platform (e.g., smart TV, set-top box) with multiple independent apps installed, each with its own Endpoint and ApplicationBasic Cluster. The CatalogList (which app catalogs the device supports) and CurrentApp (which app is currently in the foreground) attributes are only available when AP is enabled.
Example Data
Attribute read results of the ApplicationLauncher Cluster from a smart TV with AP (ApplicationPlatform) enabled:
{
// --- Supported App Catalogs ---
"0x0000": [24742, 4996], // CatalogList = supported catalog vendor ID list
// 24742 = CSA official catalog
// 4996 = an OTT platform catalog
// --- Current Foreground App ---
"0x0001": { // CurrentApp (current app, nullable)
"Application": { // ApplicationStruct
"CatalogVendorID": 24742, // Catalog vendor ID (CSA official)
"ApplicationID": "com.streamco.player" // App ID
},
"Endpoint": 3 // Endpoint number of the app
}
}
Before sending LaunchApp, read CatalogList (0x0000) to confirm the device supports the target app's catalog.
If the CatalogVendorID is not in the list, LaunchApp will return AppNotAvailable (1).
After sending, check CurrentApp (0x0001) changes to confirm the app successfully switched to the foreground.
Common Scenarios
Scenario 1: Voice assistant "Open XXX app"
- The user tells the voice assistant "Open Netflix on the TV"
- Check the device
FeatureMap (0xFFFC)to confirm AP support - Read
CatalogList (0x0000)to confirm the device supports the CSA official catalog (24742) - Iterate through the device's Endpoints, read ApplicationBasic's
Application (0x0004)attribute, and find Netflix's ApplicationStruct - Send
LaunchApp (0x00)with Netflix's ApplicationStruct - Check LauncherResponse Status:
0(Success) — Netflix has been launched1(AppNotAvailable) — Netflix is not installed, notify the user3(PendingUserApproval) — first launch requires confirmation on the TV
- Confirm
CurrentApp (0x0001)has been updated to Netflix
Scenario 2: Automation — sleep mode closes all apps
- The user set up a "Sleep Mode" automation rule: automatically close all apps on the TV every night at 11 PM
- Read
CurrentApp (0x0001)to get the current foreground app info - If CurrentApp is not
null, sendStopApp (0x01)to stop that app - Iterate through all app Endpoints on the device and check each ApplicationBasic's
Statusattribute - For all apps with Status not Stopped (0), send
StopApp (0x01)one by one - After all apps are stopped, optionally use OnOff Cluster to turn off the TV or put it in standby mode