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

Mono Application - Storm Streaming Server

Storm Streaming Server operates based on "applications", which are collections of streams and the settings that govern them. Each server instance can have multiple applications, which are completely independent of each other. Each application has a unique name and a type that defines its role.

Among the things that an application allows you to define are: the method of authentication for incoming streams, whether streams should be recorded, or whether you want to use transcoding to create multiple quality versions.

The mono application is the simplest type — it combines both stream publishing (ingesting) and playback within a single server instance. This makes it the best choice for standalone deployments that do not require a multi-server cluster.

For distributed setups involving multiple server instances, see the cluster application types: Origin, Transcode, and Edge.

Sample Configuration

config/preferences.xml - Mono Application
Code iconxml
<Application name="mono" type="mono">

    <!--
        General configuration settings related to this application and its streams.
    -->
    <GeneralSettings>
        <Description>Default application</Description>
        <BroadcastLimit>300</BroadcastLimit>
        <StatInterval>2</StatInterval>
        <AutoThumbnails enabled="true">
            <Interval>2</Interval>
            <ThumbWidth>1280</ThumbWidth>
            <ThumbHeight>720</ThumbHeight>
        </AutoThumbnails>
    </GeneralSettings>

    <!--
        Configuration related to ingesting streams into the application.
    -->
    <IngestSettings>
        <AllowStreamIngest>true</AllowStreamIngest>
        <AutoStreamPublish>true</AutoStreamPublish>
        <AllowStreamOverwrite>true</AllowStreamOverwrite>
        <Authorization enabled="false" />
    </IngestSettings>

    <!--
        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>3500</TotalViewerLimit>
        <StreamViewerLimit>1000</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>

    <!--
        List of enabled live transcoding presets for this application.
    -->
    <LiveTranscoding enabled="true">
        <Preset name="360p" />
        <Preset name="480p" />
        <Preset name="720p" />
    </LiveTranscoding>

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

    <!--
        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>
        <AutoRecording>true</AutoRecording>
    </RecordingSettings>

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

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

Configuration Blocks

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

BlockDescription
General SettingsApplication description, broadcast limits, statistics interval, and automatic thumbnail generation.
Ingest SettingsStream publishing control and broadcaster authorization (supports managed, request-based, file-based, and local methods).
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.
Live TranscodingSelection of transcoding presets to generate multiple quality variants of streams.
DVR SettingsIn-memory cache for live-stream rewind (nDVR).
Recording SettingsRecording live streams to disk in fMP4, FLV, or MKV format with storage management.
Stream Key Alias SettingsDynamic stream key resolution via aliases, with auto-discovery support.

Environment Variables

All configuration fields support environment variables using the ${EV:VARIABLE_NAME} syntax. This allows you to externalize sensitive or environment-specific values such as API keys and authorization URLs.

Environment Variable Example
Code iconxml
<Authorization enabled="true" type="request">
    <RequestURL>${EV:AUTH_API_URL}</RequestURL>
    <XApiKey>${EV:AUTH_API_KEY}</XApiKey>
</Authorization>
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.