NVIDIA
NVIDIA
Holoscan Container
Container
NVIDIA
NVIDIA
Holoscan Container

The Holoscan container includes the Holoscan libraries, headers, example source code, and sample datasets. It is the recommended way to run the Holoscan examples or build your own applications.

  • Overview

    What is Holoscan?

    NVIDIA Holoscan is the the AI sensor processing platform that combines hardware systems for low-latency sensor and network connectivity, optimized libraries for data processing and AI, and core microservices to run streaming, imaging, and other applications, from embedded to edge to cloud. It can be used to build streaming AI pipelines for a variety of domains, including Medical Devices, High Performance Computing at the Edge, Industrial Inspection and more.

    What is the Holoscan container?

    The Holoscan container includes the Holoscan libraries, GXF extensions, headers, example source code, and sample datasets, as well as all the dependencies that were tested with Holoscan. It is the recommended way to run the Holoscan examples, while still allowing you to create your own C++ and Python Holoscan application.

    Getting Started

    Visit the Holoscan User Guide to get started with the Holoscan SDK.

    Getting Help

    Visit the Holoscan Support Forums for questions and developer support.

    Enterprise Support

    Get access to knowledge base articles and support cases or submit a ticket.


    Using the Holoscan container

    Prerequisites

    Prerequisites for each supported platform are documented in the user guide.

    Additionally, on x86_64, you'll need the NVIDIA Container Toolkit version 1.16.2 and Docker. These should already be installed on NVIDIA developer kits with IGX Software or JetPack.

    Running the container

    1. Log in to the NGC docker registry

      docker login nvcr.io
      
    2. Press the Get Container button at the top of this webpage and choose the version you want to use:

      • select v<version>-cuda12-dgpu for x86_64 systems, NVIDIA Developer Kits configured with a discrete GPU (such as IGX Orin dGPU or Clara AGX), or an SBSA system (such as GH200)
      • select v<version>-cuda12-igpu for NVIDIA Developer Kits configured with an integrated GPU (such as Jetson AGX or IGX Orin iGPU)

      Set it as your NGC_CONTAINER_IMAGE_PATH in your terminal.

      # For example
      export NGC_CONTAINER_IMAGE_PATH="nvcr.io/nvidia/clara-holoscan/holoscan:v4.2.0-cuda12-dgpu"
      
    3. Start the container. Here is an example with some standard flags, which are described below along with some extra flags:

      docker run -it --rm --net host \
        --runtime=nvidia \
        --ipc=host --cap-add=CAP_SYS_PTRACE --ulimit memlock=-1 --ulimit stack=67108864 \
        ${NGC_CONTAINER_IMAGE_PATH}
      
      • --runtime=nvidia is needed to leverage the NVIDIA GPUs and their capabilities. Read more here.
      • --ipc=host --cap-add=CAP_SYS_PTRACE --ulimit memlock=-1 --ulimit stack=67108864 are needed to run distributed applications with UCX. Read more here.

      To leverage a display, add the flags below:

      • X11 :
        • run xhost +local:docker as a prerequisite so that X11 is configured to allow commands from docker
        • add -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY to the docker run command
      • Wayland: add -e ${XDG_RUNTIME_DIR} -v ${XDG_RUNTIME_DIR}::${XDG_RUNTIME_DIR} -e XDG_SESSION_TYPE -e WAYLAND_DISPLAY to the docker run command

      To expose additional hardware devices from your host to the container, add the --privileged flag to docker run (not secure), or mount their explicit device nodes by adding the flags below:

      • AJA capture card: add --device /dev/ajantv20 (and/or ajantv2<n>)
      • V4L2 video devices (HDMI IN, USB): add --device /dev/video0 (and/or video<n>).
        • If configuring a non-root user in the container, add --group-add video or ensure the user has appropriate permissions to the video device nodes (/dev/video*).
        • If using HDMI IN from a developer kit, also add --device /dev/capture-vi-channel0 to access the Tegra Video Input channels. You might need to add more nodes (with the last digit increasing) depending on the number of channels needed.
      • ConnectX RDMA: add --device /dev/infiniband/rdma_cm and --device /dev/infiniband/uverbs0 (and/or uverbs<n>).
        • Needed for RDMA (RoCE or Infiniband). Not required for simple TCP Ethernet communication through a ConnectX SmartNIC.

      On Tegra? If configuring a non-root user in the container, ensure the user has appropriate permissions to the dri device nodes (/dev/dri/*). This can be done by adding --group-add $(cat /etc/group | grep "video" | cut -d: -f3) and --group-add $(cat /etc/group | grep "render" | cut -d: -f3) (Note: simply passing --group-add render might not work if the group id differs between your host and container, even if mounting /etc/group)

    Using the Holoscan SDK

    C++

    The Holoscan SDK is installed under /opt/nvidia/holoscan. It includes a CMake configuration file inside lib/cmake/holoscan, allowing you to import holoscan in your CMake project (link libraries + include headers):

    find_package(holoscan REQUIRED CONFIG PATHS "/opt/nvidia/holoscan")
    target_link_libraries(yourTarget PUBLIC holoscan::core)
    

    Alternatives to hardcoding PATHS inside find_package in CMake are listed under the Config Mode Search Procedure documentation.

    Python

    For python developers, the PYTHONPATH is already set to include /opt/nvidia/holoscan/python/lib, allowing you to just call import holoscan.

    Examples

    Python and C++ examples are installed in /opt/nvidia/holoscan/examples alongside their source code, and run instructions (also available on the GitHub repository).

    Running the examples

    Example to run the Hello World example:

    # Python
    python3 /opt/nvidia/holoscan/examples/hello_world/python/hello_world.py
    
    # C++
    /opt/nvidia/holoscan/examples/hello_world/cpp/hello_world
    

    Refer to the README in each example folder for specific run instructions.

    Building the examples

    You can rebuild the C++ examples as-is or copy them anywhere on your system to experiment with.

    Example to build all the C++ examples:

    export src_dir="/opt/nvidia/holoscan/examples/" # Add "<example_of_your_choice>/cpp" to build a specific example
    export build_dir="/opt/nvidia/holoscan/examples/build" # Or the path of your choice
    cmake -S $src_dir -B $build_dir -D Holoscan_ROOT="/opt/nvidia/holoscan" -G Ninja
    cmake --build $build_dir -j
    

    Also see the HoloHub repository for a collection of Holoscan operators and applications which you can use in your pipeline or for reference.

    Developing & Debugging using Holoscan Container

    A pre-configured Development Containers using Visual Studio Code is available from Holohub for Holoscan developers to develop and debug their code using the Holoscan container. This Dev Container enables developers to use pre-configured VS Code launch profiles to debug the examples, step into the Holoscan source code, and learn more about its internals. The Dev Container is ready to develop your applications using the Holoscan SDK.

    Learn more about Holoscan Container Development and Visual Studio Code Debugging using the Holoscan container.


    License

    By pulling and using the container, you accept the terms and conditions of this End User License Agreement.

    Publisher
    NVIDIA
    NVIDIA
    LicenseNVIDIA proprietary
    Latest Tagv4.5.0-cuda13
    UpdatedJuly 29, 2026 UTC
    Compressed Size10.14 GB
    Multinode SupportNo
    Multi-Arch SupportYes