> This page is for version 9.2 (default).
> For other versions, use one of these documentation indexes:
> - 9.2 (default): https://docs.nvidia.com/deepstream/9.2/llms.txt
> - Archives: https://docs.nvidia.com/deepstream/archives/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/deepstream/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/deepstream/_mcp/server.

# DeepStream Reference Application - deepstream-nmos app

## Application Architecture

The image below shows the architecture of the NVIDIA\ ® DeepStream NMOS reference application.

![DeepStream NMOS Reference Application Architecture](/deepstream/_fern-img/9652db7b09dc8b977b1688aed83f7bcda315120c48dde83153e9160be8edf83c.webp)

It uses a library ([NvDsNmos](/text/DS_library_nvdsnmos)) which provides the APIs to create, destroy and internally manage the NMOS Node.
The NMOS Node can automatically discover and register with an NMOS Registry on the network using the [AMWA IS-04](https://specs.amwa.tv/is-04/) Registration API.

It also shows how to create various Video and Audio pipelines, run them simultaneously and reconfigure them based on NMOS events such as [AMWA IS-05](https://specs.amwa.tv/is-05/) Connection API requests from an NMOS Controller.

This application has three modes of operations:

**As NMOS Receiver (Default)**

In this mode, application provides NMOS Receivers that can be used to configure UDP sources to receive SMPTE ST 2110-20/-30 streams. Received (Video / Audio) streams are rendered to local Video / Audio sinks after some processing (Object detection and Bounding box overlay in case of Video).

**As NMOS Sender**

In this mode, application provides NMOS Senders that can be used to configure UDP sinks to transmit SMPTE ST 2110-20/-30 streams. Transmitted streams are created from `videotestsrc` and `audiotestsrc`.

**As Both NMOS Receiver and Sender**

In this mode, application provides NMOS Receivers to configure UDP sources and after processing the data transmits streams from UDP sinks which are configured by NMOS Senders.

## Using Easy-NMOS for NMOS Registry and Controller

This application requires AMWA IS-05 Connection API requests for its operation. These events are generated by an NMOS Controller. Easy-NMOS is a simple and easy way to set up an NMOS Controller and Registry. Follow the instructions below to set up the NMOS Registry and run the NMOS Controller.

> **Note**
>
> These instructions expect that docker and docker compose are already installed. If not then refer steps provided here - [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/) and [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/).

Or follow the quick instructions here - [https://github.com/rhastie/easy-nmos/blob/master/install_docker.md](https://github.com/rhastie/easy-nmos/blob/master/install_docker.md)

1. Clone the git repository as follows:

```
git clone https://github.com/rhastie/easy-nmos.git
```

2. Modify the `docker-compose.yml` to replace the values of "ipv4_address" fields of each container accordingly.

3. Start the docker containers as follows:

   `docker-compose up`

Once setup is complete, the NMOS Controller should be running on following address.

[http://nmos-registry.local/admin](http://nmos-registry.local/admin)

Refer to [https://github.com/rhastie/easy-nmos](https://github.com/rhastie/easy-nmos) for detailed instructions for setup.

Refer to [https://www.amwa.tv/easy-nmos-videos](https://www.amwa.tv/easy-nmos-videos) for a tutorial on Easy-NMOS.

Refer to [https://specs.amwa.tv/nmos/](https://specs.amwa.tv/nmos/) for details about the NMOS specifications.