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).

Division of Labor with ApplicationBasic

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).

ParameterTypeRequiredDescription
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.

ParameterTypeRequiredDescription
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).

ParameterTypeRequiredDescription
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.

FieldTypeDescription
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
Difference Between CurrentApp and ApplicationBasic.Status

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 Not the App Vendor

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.

0
Success Success — app has been launched/stopped/hidden
1
AppNotAvailable App not available — not installed, not in catalog, or delisted
2
SystemBusy System busy — insufficient device resources, cannot launch a new app
3
PendingUserApproval Pending user approval — first launch requires user to agree to terms or authorize
4
Downloading Downloading — app is downloading, installation not yet complete
5
Installing Installing — app has been downloaded, installation in progress
Non-Final States: Downloading and Installing

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):

Bit 0
AP (ApplicationPlatform) Application Platform — the device is an app platform (e.g., smart TV) supporting multiple independently managed content apps. When enabled, provides CatalogList and CurrentApp attributes
Meaning of AP Feature

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
  }
}
Developer Tip

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"
  1. The user tells the voice assistant "Open Netflix on the TV"
  2. Check the device FeatureMap (0xFFFC) to confirm AP support
  3. Read CatalogList (0x0000) to confirm the device supports the CSA official catalog (24742)
  4. Iterate through the device's Endpoints, read ApplicationBasic's Application (0x0004) attribute, and find Netflix's ApplicationStruct
  5. Send LaunchApp (0x00) with Netflix's ApplicationStruct
  6. Check LauncherResponse Status:
    • 0 (Success) — Netflix has been launched
    • 1 (AppNotAvailable) — Netflix is not installed, notify the user
    • 3 (PendingUserApproval) — first launch requires confirmation on the TV
  7. Confirm CurrentApp (0x0001) has been updated to Netflix
Scenario 2: Automation — sleep mode closes all apps
  1. The user set up a "Sleep Mode" automation rule: automatically close all apps on the TV every night at 11 PM
  2. Read CurrentApp (0x0001) to get the current foreground app info
  3. If CurrentApp is not null, send StopApp (0x01) to stop that app
  4. Iterate through all app Endpoints on the device and check each ApplicationBasic's Status attribute
  5. For all apps with Status not Stopped (0), send StopApp (0x01) one by one
  6. After all apps are stopped, optionally use OnOff Cluster to turn off the TV or put it in standby mode