Skip to content

Streaming Server Operators#

Authors: Holoscan Team (NVIDIA)
Supported platforms: x86_64, aarch64
Language: C++, Python
Last modified: November 3, 2025
Latest version: 1.1.0
Minimum Holoscan SDK version: 3.5.0
Tested Holoscan SDK versions: 3.5.0
Contribution metric: Level 1 - Highly Reliable

The video_streaming_server operator provides a modular streaming server implementation with separate upstream, downstream, and resource components. This split architecture allows for better separation of concerns and more flexible streaming pipeline configurations.

πŸ“š Related Documentation: - Main Operators README - Setup, dependencies, NGC downloads, and Python examples - Server Application README - Complete server application with usage examples - Client Operator README - Companion client operator documentation - Testing Documentation - Integration testing and verification

Architecture Overview#

The Streaming Server operators integrate with the Holoscan Server Cloud Streaming library to provide comprehensive multi-client streaming capabilities:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           Holoscan Application                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚                    StreamingServerResource                                  β”‚ β”‚
β”‚  β”‚                                                                             β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚  β”‚  β”‚              Holoscan Server Cloud Streaming                            β”‚ β”‚ β”‚
β”‚  β”‚  β”‚                                                                         β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”‚ StreamingServer β”‚    β”‚         Network Protocol Stack              β”‚ β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”‚                 β”‚    β”‚                                             β”‚ β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”‚ β€’ Multi-client  │───▢│  β€’ Media Transport & Encoding               β”‚ β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”‚   Management    β”‚    β”‚  β€’ Connection Management                    β”‚ β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”‚ β€’ Frame Routing β”‚    β”‚  β€’ Security & Authentication                β”‚ β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β”‚ β€’ Callbacks     β”‚    β”‚                                             β”‚ β”‚ β”‚ β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚  β”‚                                      β”‚                                      β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                         β”‚                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚                        Processing Pipeline                                  β”‚ β”‚
β”‚  β”‚                                                                             β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚  β”‚  β”‚StreamingServer  β”‚    β”‚   Processing    β”‚    β”‚StreamingServer          β”‚ β”‚ β”‚
β”‚  β”‚  β”‚UpstreamOp       β”‚    β”‚   Operators     β”‚    β”‚DownstreamOp             β”‚ β”‚ β”‚
β”‚  β”‚  β”‚                 β”‚    β”‚                 β”‚    β”‚                         β”‚ β”‚ β”‚
β”‚  β”‚  β”‚ β€’ Frame Receive │───▢│ β€’ Format Conv   │───▢│ β€’ Frame Processing      β”‚ β”‚ β”‚
β”‚  β”‚  β”‚ β€’ Client Frames β”‚    β”‚ β€’ AI/ML Ops     β”‚    β”‚ β€’ Tensor β†’ VideoFrame   β”‚ β”‚ β”‚
β”‚  β”‚  β”‚ β€’ Tensor Output β”‚    β”‚ β€’ Filtering     β”‚    β”‚ β€’ Multi-client Send     β”‚ β”‚ β”‚
β”‚  β”‚  β”‚ β€’ Validation    β”‚    β”‚ β€’ Enhancement   β”‚    β”‚ β€’ Optional Processing   β”‚ β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚  β”‚           β”‚                       β”‚                            β”‚            β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚              β”‚                       β”‚                            β”‚              β”‚
β”‚              β–Ό                       β”‚                            β–²              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Input Sources  β”‚                 β”‚                β”‚     Output Sinks        β”‚ β”‚
β”‚  β”‚                 β”‚                 β”‚                β”‚                         β”‚ β”‚
β”‚  β”‚ β€’ Client Frames β”‚                 β”‚                β”‚ β€’ Client Connections    β”‚ β”‚
β”‚  β”‚ β€’ Network Data  β”‚                 β”‚                β”‚ β€’ Processed Frames      β”‚ β”‚
β”‚  β”‚ β€’ Remote Cams   β”‚                 β”‚                β”‚ β€’ Multi-cast Streams    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                      β”‚                                           β”‚
β”‚                                      β–Ό                                           β”‚
β”‚                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                            β”‚
β”‚                          β”‚   Optional Processing   β”‚                            β”‚
β”‚                          β”‚                         β”‚                            β”‚
β”‚                          β”‚ β€’ AI/ML Inference       β”‚                            β”‚
β”‚                          β”‚ β€’ Computer Vision       β”‚                            β”‚
β”‚                          β”‚ β€’ Frame Enhancement     β”‚                            β”‚
β”‚                          β”‚ β€’ Analytics             β”‚                            β”‚
β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                         β”‚
                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                          β”‚             Network         β”‚
                          β”‚                             β”‚
                          β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
                          β”‚  β”‚                Multiple Clients                 β”‚  β”‚
                          β”‚  β”‚                                                 β”‚  β”‚
                          β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚  β”‚
                          β”‚  β”‚  β”‚   Client 1  β”‚  β”‚   Client 2  β”‚  β”‚ Client N β”‚β”‚  β”‚
                          β”‚  β”‚  β”‚             β”‚  β”‚             β”‚  β”‚          β”‚β”‚  β”‚
                          β”‚  β”‚  β”‚ β€’ Holoscan  β”‚  β”‚ β€’ Holoscan  β”‚  β”‚β€’ Holoscanβ”‚β”‚  β”‚
                          β”‚  β”‚  β”‚   Client    β”‚  β”‚   Client    β”‚  β”‚  Client  β”‚β”‚  β”‚
                          β”‚  β”‚  β”‚   Streaming β”‚  β”‚   Streaming β”‚  β”‚ Streamingβ”‚β”‚  β”‚
                          β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚  β”‚
                          β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Component Interactions#

  1. Multi-Client Management: The StreamingServerResource manages multiple simultaneous client connections through the Holoscan Server Cloud Streaming library

  2. Upstream Processing: StreamingServerUpstreamOp receives frames from connected clients and converts them to Holoscan tensors for processing

  3. Pipeline Integration: Frames flow through the standard Holoscan processing pipeline (AI/ML, computer vision, analytics, etc.)

  4. Downstream Distribution: StreamingServerDownstreamOp takes processed tensors and distributes them to all connected clients

  5. Network Protocol Handling: The cloud streaming library manages:

  6. Multi-client signaling and negotiation
  7. Media encoding/decoding and transport
  8. Load balancing and connection management
  9. Security and authentication

  10. Bidirectional Communication: Supports simultaneous receiving from clients (upstream) and sending to clients (downstream)

Architecture Components#

holoscan::ops::StreamingServerResource#

A shared resource that manages the underlying StreamingServer instance and provides: - Centralized server lifecycle management - Event handling and callback management - Configuration management for server parameters - Frame sending and receiving coordination between operators

holoscan::ops::StreamingServerUpstreamOp#

An operator that receives video frames from streaming clients and outputs them as Holoscan tensors: - Receives frames from connected clients via the StreamingServerResource - Converts received frames to holoscan::Tensor format - Provides duplicate frame detection to ensure unique frame processing - Outputs tensors to the Holoscan processing pipeline

holoscan::ops::StreamingServerDownstreamOp#

An operator that receives Holoscan tensors and sends them to streaming clients: - Takes holoscan::Tensor input from the processing pipeline - Converts tensors back to video frame format - Sends processed frames to connected clients via the StreamingServerResource - Supports optional frame processing (mirroring, rotation, etc.)

Benefits of Split Architecture#

  • Modularity: Each component has a single responsibility (resource management, receiving, or sending)
  • Flexibility: You can use only upstream, only downstream, or both depending on your pipeline needs
  • Shared Resource: Multiple operators can share the same StreamingServerResource instance
  • Better Testing: Each component can be tested independently
  • Clear Data Flow: Explicit tensor-based input/output ports make data flow obvious
  • Processing Integration: Seamless integration with Holoscan's tensor processing pipeline

Parameters#

StreamingServerResource Parameters#

  • port: Port used for streaming server
  • type: uint16_t
  • default: 48010

  • is_multi_instance: Allow multiple server instances

  • type: bool
  • default: false

  • server_name: Name identifier for the server

  • type: std::string
  • default: "HoloscanStreamingServer"

  • width: Width of the video frames in pixels

  • type: uint32_t
  • default: 854

  • height: Height of the video frames in pixels

  • type: uint32_t
  • default: 480

  • fps: Frame rate of the video

  • type: uint16_t
  • default: 30

  • enable_upstream: Enable upstream (receiving) functionality

  • type: bool
  • default: true

  • enable_downstream: Enable downstream (sending) functionality

  • type: bool
  • default: true

StreamingServerUpstreamOp Parameters#

  • width: Frame width (inherits from resource if not specified)
  • type: uint32_t
  • default: 854

  • height: Frame height (inherits from resource if not specified)

  • type: uint32_t
  • default: 480

  • fps: Frame rate (inherits from resource if not specified)

  • type: uint32_t
  • default: 30

  • allocator: Memory allocator for tensor data

  • type: std::shared_ptr<Allocator>

  • video_streaming_server_resource: Reference to StreamingServerResource

  • type: std::shared_ptr<StreamingServerResource>

StreamingServerDownstreamOp Parameters#

  • width: Frame width (inherits from resource if not specified)
  • type: uint32_t
  • default: 854

  • height: Frame height (inherits from resource if not specified)

  • type: uint32_t
  • default: 480

  • fps: Frame rate (inherits from resource if not specified)

  • type: uint32_t
  • default: 30

  • enable_processing: Enable frame processing (mirroring, etc.)

  • type: bool
  • default: false

  • processing_type: Type of processing to apply

  • type: std::string
  • default: "none"
  • options: "none", "mirror", "rotate"

  • allocator: Memory allocator for tensor data

  • type: std::shared_ptr<Allocator>

  • video_streaming_server_resource: Reference to StreamingServerResource

  • type: std::shared_ptr<StreamingServerResource>

Input/Output Ports#

StreamingServerUpstreamOp Ports#

Output Ports: - output_frames: Output port for frames received from clients - type: holoscan::Tensor

StreamingServerDownstreamOp Ports#

Input Ports: - input_frames: Input port for frames to be sent to clients - type: holoscan::Tensor

Example Usage#

Complete Pipeline Setup#

// Create allocator resource
auto allocator = make_resource<UnboundedAllocator>("allocator");

// Create the shared StreamingServerResource
auto video_streaming_server_resource = make_resource<ops::StreamingServerResource>(
    "video_streaming_server_resource",
    Arg("port") = 48010,
    Arg("server_name") = "MyStreamingServer",
    Arg("width") = 854,
    Arg("height") = 480,
    Arg("fps") = 30,
    Arg("enable_upstream") = true,
    Arg("enable_downstream") = true,
    Arg("is_multi_instance") = false
);

// Create upstream operator (receives frames from clients)
auto upstream_op = make_operator<ops::StreamingServerUpstreamOp>(
    "streaming_upstream",
    Arg("allocator") = allocator,
    Arg("video_streaming_server_resource") = video_streaming_server_resource
);

// Create downstream operator (sends frames to clients)
auto downstream_op = make_operator<ops::StreamingServerDownstreamOp>(
    "streaming_downstream",
    Arg("enable_processing") = false,
    Arg("processing_type") = "none",
    Arg("allocator") = allocator,
    Arg("video_streaming_server_resource") = video_streaming_server_resource
);

Requirements & Setup#

For complete setup instructions including: - Holoscan SDK 3.5.0 and CUDA 12.x requirements - NGC binary downloads (server streaming binaries) - Build troubleshooting

See the Main Operators README for detailed setup instructions.

Deployment on NVCF#

The Holoscan cloud streaming stack provides plugins with endpoints required to deploy the server docker container as a streaming function. You can push the container and create/update/deploy the streaming function from the web portal.

Push Container#

Note: You first must docker login to the NGC Container Registry before you can push containers to it: https://docs.nvidia.com/ngc/gpu-cloud/ngc-private-registry-user-guide/index.html#accessing-ngc-registry Tag the container and push it to the container registry:

docker tag simple-streamer:latest {registry}/{org-id}/{container-name}:{version}
docker push {registry}/{org-id}/{container-name}:{version}

For example, if your organization name/id is 0494839893562652 and you want to push a container to the prod container registry using the name my-simple-streamer at version 0.1.0 then run:

docker tag simple-streamer:latest nvcr.io/0494839893562652/my-simple-streamer:0.1.0
docker push nvcr.io/0494839893562652/my-simple-streamer:0.1.0

Set Variables#

All the helper scripts below depend on the following environment variables being set:

# Required variables
export NGC_PERSONAL_API_KEY=<get from https://nvcf.ngc.nvidia.com/functions -> Generate Personal API Key>
export STREAMING_CONTAINER_IMAGE=<registry>/<org-id>/<container-name>:<version>
export STREAMING_FUNCTION_NAME=<my-simple-streamer-function-name>

# Optional variables (shown with default values)
export NGC_DOMAIN=api.ngc.nvidia.com
export NVCF_SERVER=grpc.nvcf.nvidia.com
export STREAMING_SERVER_PORT=49100
export HTTP_SERVER_PORT=8011

Create the Cloud Streaming Function#

Create the streaming function by running the provided script after setting all the required variables:

./nvcf/create_streaming_function.sh

Once the function is created, export the FUNCTION_ID as a variable:

export STREAMING_FUNCTION_ID={my-simple-streamer-function-id}

Update Function#

Update an existing streaming function by running the provided script after setting all the required variables:

./nvcf/update_streaming_function.sh

Deploy Function#

Deploy the streaming function from the web portal: https://nvcf.ngc.nvidia.com/functions

Test Function#

Start the test intermediate haproxy by running the provided script after setting all the required variables:

./nvcf/start_test_intermediate_haproxy.sh

Please note that the test haproxy server should be running on a separate machine, either on the client machine or a separate one.

Note: If the test haproxy is still running, and you wish to test the executable or docker file again you must first stop it:

./nvcf/stop_test_intermediate_haproxy.sh

Python Bindings & Applications#

For Python usage, application examples, and testing: - Main Operators README - Python bindings overview and setup - Server Application README - Complete Python server implementation - Testing Documentation - Integration testing guide

Additional Resources#

For more information on NVCF Cloud functions, please refer to NVIDIA Cloud Functions documentation.