Storm docs logo
Search the docs.../
Explore Storm Products

Edge Application - Storm Streaming Server

The Edge application is the viewer-facing component of a Storm Streaming Server cluster. It connects to the ClusterManager to discover available streams, pulls them from origin or transcode nodes, and distributes them to end viewers using various protocols (WebSocket/MSE, HLS, RTMP).

You cannot push streams directly into an edge application — it only pulls streams from other cluster nodes. This separation allows you to scale viewer capacity independently by adding more edge servers without affecting the origin infrastructure.

Edge applications handle stream security (token protection, domain restrictions) and stream key aliases, as they are the nodes that interact directly with viewers and their players.

For more information about building clusters, see the Scaling & Cluster Guide.

Sample Configuration

config/preferences.xml - Edge Application
Code iconxml
<Application name="edge" type="edge">

    <!--
        Cluster connection settings — connects to ClusterManager
        to discover and pull streams from origin/transcode nodes.
    -->
    <StreamingClusterSettings>
        <SupervisorList>
            <ClusterManager hostname="clustermanager01.example.com" port="443" isSSL="true">
                <Priority>1</Priority>
                <Secret>your-cluster-secret</Secret>
            </ClusterManager>
        </SupervisorList>
        <NodeAccessSettings hostname="edge01.example.com" port="1935" isSSL="false" />
        <CopyOnPublish>false</CopyOnPublish>
    </StreamingClusterSettings>

    <!--
        General configuration settings related to this application and its streams.
    -->
    <GeneralSettings>
        <Description>Edge application</Description>
        <BroadcastLimit>250</BroadcastLimit>
        <StatInterval>2</StatInterval>
        <AutoThumbnails enabled="false">
            <Interval>2</Interval>
            <ThumbWidth />
            <ThumbHeight />
        </AutoThumbnails>
    </GeneralSettings>

    <!--
        Settings related to video playback for connected clients.
    -->
    <PlaybackSettings>
        <AllowedHarnesses>
            <Harness type="storm-hls" />
            <Harness type="storm-mse" />
            <Harness type="generic-hls" />
            <Harness type="rtmp" />
        </AllowedHarnesses>
        <TotalViewerLimit>2500</TotalViewerLimit>
        <StreamViewerLimit />
        <FrameBufferSize>0</FrameBufferSize>
    </PlaybackSettings>

    <!--
        Access control settings for WebSocket and HTML-based endpoints
        (Storm Player Core & Storm Player UI).
    -->
    <StreamSecuritySettings>
        <TokenProtection enabled="false">
            <Secret>mysupersecret</Secret>
            <HashAlgorithm>sha256</HashAlgorithm>
            <TokenLifespan>10</TokenLifespan>
        </TokenProtection>
        <DomainAccessRights>
            <AccessRight type="allow" domain="*" />
        </DomainAccessRights>
    </StreamSecuritySettings>

    <!--
        Stream key alias configuration for dynamic stream key resolution.
    -->
    <StreamKeyAliasSettings enabled="true">
        <AliasAutoDiscovery enabled="true">
            <RequestURL>https://api.example.com/alias/{aliasName}</RequestURL>
            <XApiKey>your-api-key-here</XApiKey>
            <AliasExpireTime>300</AliasExpireTime>
        </AliasAutoDiscovery>
    </StreamKeyAliasSettings>

    <!--
        nDVR settings for live streaming.
    -->
    <DVRSettings enabled="false">
        <CacheSize>100</CacheSize>
    </DVRSettings>

</Application>

Main Parameters

ParameterDescription
Application:nameUnique name of this application. All applications within config/preferences.xml must have unique names.
Application:typeMust be set to edge for this application type.

Configuration Blocks

The edge application supports the following configuration blocks. Click on each link for a detailed description of all available parameters.

BlockDescription
Streaming Cluster SettingsClusterManager connections, node access settings, and <CopyOnPublish> to control eager vs. on-demand stream pulling.
General SettingsApplication description, broadcast limits, statistics interval, and automatic thumbnail generation.
Playback SettingsAllowed connection types (harnesses), viewer limits, and frame buffer configuration.
Stream Security SettingsToken-based playback authorization and domain-level access control for Storm Player.
Stream Key Alias SettingsDynamic stream key resolution via aliases, with auto-discovery and cluster-managed alias support.
DVR SettingsIn-memory cache for live-stream rewind (nDVR).
Note

The edge application does not support Ingest Settings (streams are pulled from the cluster, not pushed by broadcasters), Live Transcoding, or Recording Settings.

Environment Variables

All configuration fields support environment variables using the ${EV:VARIABLE_NAME} syntax.

Environment Variable Example
Code iconxml
<NodeAccessSettings hostname="${EV:EXTERNAL_DOMAIN}" port="${EV:EXTERNAL_PORT}" isSSL="${EV:EXTERNAL_SSL}" />
Note

Fields whose values are set via environment variables cannot be modified through the REST API.

Support Needed?

If you have any questions or need assistance, please create a support ticket and our team will help you.

Blog
Support
About us
Patents
Term of use
Privacy policy
Contact
©2026 Storm Streaming Media. All Rights Reserved.