NVIDIA Nsight Streamer enables remote access to NVIDIA Nsight Tools through a web browser, providing a self-hosted graphical interface running inside a containerized environment. This setup is ideal for analyzing data on remote servers or Kubernetes clusters.
The Nsight Streamer currently supports containerized deployment of NVIDIA Nsight Systems (nsys), NVIDIA Nsight Compute (ncu), NVIDIA Nsight Graphics (ngfx), and NVIDIA Nsight Deep Learning Designer (ndld).
Nsight Streamer for Nsight Graphics supports remote profiling, so it is essential to ensure that the server is secure and that the necessary security measures are in place to prevent unauthorized access to your data.
Install the Nsight Streamer with volumes for your profiling reports:
helm install --wait --set tool=nsys \
--set volumes[0].name=reports-volume \
--set volumes[0].persistentVolumeClaim.claimName=your-reports-pvc \
--set volumeMounts[0].name=reports-volume \
--set volumeMounts[0].mountPath=/mnt/host/volumes/reports \
nsight-streamer https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-2025.3.2.tgz
For more complex configurations, you can use a values file:
# values.yaml
tool: nsys
volumeMounts:
- name: local-storage
mountPath: /data
volumes:
- name: local-storage
hostPath:
path: /mnt/data
type: Directory
Then install with:
helm install --wait -f values.yaml nsight-streamer \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-2025.3.2.tgz
Custom Namespace: Install in a non-default namespace:
helm install --wait -f values.yaml nsight-streamer \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-2025.3.2.tgz --namespace example-ns
Multiple Instances: Install multiple copies:
helm install --wait --generate-name -f values.yaml \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-2025.3.2.tgz
To enable GPU hardware acceleration for video encoding in Kubernetes, which significantly improves the performance and responsiveness of the Nsight Streamer, you need to:
resources.limits.nvidia.com/gpu
:# hw_values.yaml
tool: nsys
resources:
limits:
nvidia.com/gpu: 1 # Request at least one GPU
volumes:
- name: reports-volume
persistentVolumeClaim:
claimName: your-reports-pvc
volumeMounts:
- name: reports-volume
mountPath: /mnt/host/volumes/reports
Then install with:
helm install --wait -f hw_values.yaml nsight-streamer \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-2025.3.2.tgz
Can be used to configure runtime parameters.
Variable | Description | Default value |
---|---|---|
TURN_PORT | TCP port that will be used for WebRTC data transmission. The port should match the port published from the container on the host. | 3478 |
ENABLE_RESIZE | Should resizing be enabled to fit the remote resolution to the client window? | true |
MAX_RESOLUTION | Maximum resolution of the remote screen used for streaming the Nsight Tool. | 1920x1080 |
WEB_USERNAME | The username for accessing the NVIDIA Nsight Streamer from a browser. If set to an empty string, no authentication is required. | nvidia |
WEB_PASSWORD | The password for accessing the NVIDIA Nsight Streamer from a browser. | nvidia |
The Nsight Streamer Helm chart can be customized through various configuration parameters.
Parameter | Description | Default Value |
---|---|---|
tool | The Nsight tool to run in the container. Valid values: nsys (Nsight Systems), ncu (Nsight Compute), ngfx (Nsight Graphics), ndld (Nsight Deep Learning Designer). | Required |
service.type | The type of Kubernetes service to create (ClusterIP, NodePort). | NodePort |
service.httpPort | The port on which the HTTP service will be exposed within the cluster. | 30080 |
service.turnPort | The port on which the TURN service will be exposed within the cluster. | 30478 |
service.nodeHttpPort | The NodePort value for exposing HTTP traffic outside the cluster. Applicable when service.type is NodePort. | 30080 |
service.nodeTurnPort | The NodePort value for exposing TURN traffic outside the cluster. Applicable when service.type is NodePort. Should be equal to service.turnPort. | 30478 |
nodeSelector | Node selector for Nsight Streamer pod scheduling. | {} |
tolerations | Tolerations for Nsight Streamer pod scheduling. | [] |
affinity | Affinity rules for Nsight Streamer pod scheduling. | {} |
volumeMounts | List of volumes to mount into the container. | [] |
volumes | List of volumes to be used by the container. | [] |
env | List of environment variables to be injected into the Docker container. | [] |
enableResize | Should resizing be enabled to fit the remote resolution to the client window? | true |
maxResolution | Maximum resolution of the remote screen used for streaming the Nsight Tool. | 1920x1080 |
preserveConfig | Preserve the Nsight Tool configuration file in the container between runs. | true |
webUsername | The username for accessing the NVIDIA Nsight Streamer from a browser. Can be provided as a direct string value or as a secret reference. If using a secret, set webUsername as a map with secretName and secretKey. If set to an empty string, no authentication is required. | nvidia |
webPassword | The password for accessing the NVIDIA Nsight Streamer from a browser. Can be provided as a direct string value or as a secret reference. If using a secret, set webPassword as a map with secretName and secretKey. | nvidia |
# Basic configuration
tool: nsys
enableResize: true
maxResolution: "1920x1080"
# Authentication
webUsername: "admin"
webPassword: "secure-password"
# Service configuration
service:
type: NodePort
httpPort: 30080
turnPort: 30478
nodeHttpPort: 30080
nodeTurnPort: 30478
# Persistent volumes with reports
volumes:
- name: reports-volume
persistentVolumeClaim:
claimName: reports-pvc
volumeMounts:
- name: reports-volume
mountPath: /mnt/host/volumes/reports
After installing the Nsight Streamer, you can access it based on your service type configuration:
When using ClusterIP
(set via service.type=ClusterIP
), the service is only accessible from within the cluster. You can access it using port forwarding:
kubectl port-forward service/nsight-streamer-service 30080:30080 30478:30478
Then access the service at http://localhost:30080
Make sure that the target turn port forwarded is the same as the service.turnPort (default is 30478).
When using NodePort
(default, or set via service.type=NodePort
), the service is exposed on each node's IP at a static port. The default port is 30080, but this can be configured during installation using the service.nodeHttpPort
parameter.
After installation, the connection information will be automatically displayed by the print-connection-info job. You can retrieve this information by checking the job logs:
kubectl logs job/nsight-streamer-print-connection-info
Access the service by navigating to:
http://<node-ip>:<node-port>
Note: Ensure your network security settings allow access to the configured NodePort.
kubectl logs deployment/nsight-streamer
The Nsight Streamer scans all mounted volumes at startup and selects the first one containing supported report files. The "Open..." dialog will be opened with the detected directory.
Enable chrome://flags/#unsafely-treat-insecure-origin-as-secure
and add the Nsight Streamer URL to the list.
Connection failed
on FirefoxIf you encounter a "Connection failed." error on Firefox, you can resolve it by changing a configuration setting:
about:config
.media.peerconnection.ice.loopback
.Connection failed
on SafariIf you are experiencing connection issues in Safari when using AV1 codec:
Restart the remote Nsight Tool:
File
in the menu bar of Nsight Tool.Exit
.By pulling and using the container, you accept the terms and conditions of this End User License Agreement.