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

Origin Application - Storm Streaming Server

The Origin application is one of the core components used to build streaming clusters in Storm Streaming Server. It accepts incoming streams from broadcasters and makes them available to other nodes in the cluster — edge applications for viewer distribution and transcode applications for multi-quality encoding.

A single origin application can serve multiple edge and transcode connections simultaneously. Stream information is published to one or more ClusterManagers (supervisors), which coordinate stream discovery across the entire cluster.

The origin application is structurally very similar to the Mono Application, with the addition of the <StreamingClusterSettings> block and without <StreamSecuritySettings> and <StreamKeyAliasSettings> (these are handled by edge nodes facing the viewers).

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

Sample Configuration

config/preferences.xml - Origin Application
Code iconxml
<Application name="live" type="origin">

    <!--
        Cluster connection settings — registers this node with the ClusterManager
        and exposes it for edge/transcode connections.
    -->
    <StreamingClusterSettings>
        <SupervisorList>
            <ClusterManager hostname="clustermanager01.example.com" port="443" isSSL="true">
                <Priority>1</Priority>
                <Secret>your-cluster-secret</Secret>
            </ClusterManager>
        </SupervisorList>
        <NodeAccessSettings hostname="origin01.example.com" port="1935" isSSL="false" />
        <NodePriority>10</NodePriority>
    </StreamingClusterSettings>

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

    <!--
        Configuration related to ingesting streams into the application.
    -->
    <IngestSettings>
        <AllowStreamIngest>true</AllowStreamIngest>
        <AutoStreamPublish>true</AutoStreamPublish>
        <AllowStreamOverwrite>false</AllowStreamOverwrite>
        <Authorization enabled="true" type="request">
            <RequestURL>https://api.example.com/storm/auth/{streamKey}</RequestURL>
            <XApiKey>your-api-key-here</XApiKey>
        </Authorization>
    </IngestSettings>
    
    <!--
        List of enabled live transcoding presets for this application.
    -->
    <LiveTranscoding enabled="true">
        <Preset name="360p" />
        <Preset name="480p" />
        <Preset name="720p" />
    </LiveTranscoding>
    
    <!--
        Recording configuration for saving live streams to disk.
    -->
    <RecordingSettings enabled="false">
        <FileFormat>fMP4</FileFormat>
        <SavePath>/var/recordings</SavePath>
        <MaxFileSize>10</MaxFileSize>
        <MaxFileDuration>10</MaxFileDuration>
        <CacheSize>1</CacheSize>
        <MaxStorageSize>1500</MaxStorageSize>
        <RemoveOldFiles>true</RemoveOldFiles>
    </RecordingSettings>

</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 origin for this application type.

Configuration Blocks

The origin 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 <NodePriority> for load-balanced stream routing.
General SettingsApplication description, broadcast limits, statistics interval, and automatic thumbnail generation.
Ingest SettingsStream publishing control and broadcaster authorization.
Live TranscodingSelection of transcoding presets. In a cluster, encoding work can be delegated to transcode nodes.
Recording SettingsRecording live streams to disk in fMP4, FLV, or MKV format with storage management.

Environment Variables

All configuration fields support environment variables using the ${EV:VARIABLE_NAME} syntax. This is especially useful for cluster settings where hostnames and ports differ between environments.

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.