Files
cuframes-docs/site/docs/getting-started/install.md
T
Claude Opus 8c3c43709d docs: full content + landing + RU translations
Initial documentation site for cuframes:

- Landing page (src/pages/index.mdx) — hero, quick example (publisher +
  subscriber), comparison table vs naive/DeepStream, honest "early but
  production-tested" status
- /docs/intro — full overview
- /docs/getting-started/{install,first-publisher,first-subscriber}
- /docs/concepts/{frame-vs-packet-ring,ownership-modes,sync-vmm-stream}
  with mermaid diagrams
- /docs/integration/{ffmpeg-demuxer,ffmpeg-filter,python}
- /docs/reference/{api-c,api-cpp,protocol} — full v4 wire protocol spec
  incl. VMM_FDS message, magic 0xCC7C1DCE bump diff
- /docs/faq — comparison vs DeepStream/GStreamer, license, multi-host
  limitations
- i18n/ru/ — parallel RU translation (tech terms latin, склонение апостроф)

Build:
- Docusaurus 3.10.1 + theme-mermaid + search-local
- Follows dagstack-* docs convention (canonical: dagstack-plugin-system-docs)
- Apache-2.0 license; cuframes lib itself remains LGPL-2.1+

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 23:31:03 +01:00

3.4 KiB

title, sidebar_position
title sidebar_position
Install 1

Install

cuframes is Linux only. The IPC mechanism relies on POSIX shared memory and SCM_RIGHTS file-descriptor passing over Unix sockets. Windows, macOS and WSL2 are not supported.

You also need an NVIDIA GPU with compute capability ≥ 7.5 (Turing or newer) and a CUDA 12+ driver. Specifically: 64-bit Linux, glibc 2.31+, kernel 5.4+ (for cuMemMap + SCM_RIGHTS support).

The runtime image ships libcuframes.so and the cuframes-rtsp-source bridge tool on top of nvidia/cuda:12.4.1-runtime.

docker pull gx/cuframes:0.4

Smoke check:

docker run --rm --runtime=nvidia gx/cuframes:0.4 \
  /usr/local/bin/cuframes-rtsp-source --help

To run a publisher and a subscriber from two containers, the publisher container must start with --ipc=shareable and the subscriber must share its IPC namespace via --ipc=container:<publisher>. PID namespace sharing is not required since v0.4 — handles are exchanged as POSIX file descriptors over the Unix socket.

# Publisher
docker run -d --name cuframes-pub --runtime=nvidia --ipc=shareable \
  -v /run/cuframes:/run/cuframes \
  gx/cuframes:0.4 \
  /usr/local/bin/cuframes-rtsp-source --rtsp 'rtsp://...' --key cam1

# Subscriber
docker run --rm --runtime=nvidia \
  --ipc=container:cuframes-pub \
  -v /run/cuframes:/run/cuframes:ro \
  gx/cuframes:0.4 \
  /usr/local/bin/sub_count --key cam1 --max-frames 100

Namespace rules: subscriber must share IPC namespace with the publisher (POSIX /dev/shm lives in IPC ns). PID sharing is not required (this is a v0.4 property — pre-v0.4 needed both).

Option 2 — Build from source

Build requirements

Minimum
CUDA Toolkit 12.0
NVIDIA driver 525
CMake 3.20
GCC / Clang 11 / 14
FFmpeg dev libs libavcodec, libavformat, libavutil (only for cuframes-rtsp-source)

On Ubuntu 22.04 / 24.04:

sudo apt-get install -y \
  build-essential cmake ninja-build pkg-config \
  libavcodec-dev libavformat-dev libavutil-dev

Configure and build

git clone https://git.goldix.org/gx/cuframes.git
cd cuframes
cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel

This produces:

  • build/libcuframes/libcuframes.so — the shared library
  • build/tools/cuframes-rtsp-source/cuframes-rtsp-source — the RTSP bridge
  • build/examples/sub_count/sub_count — reference subscriber

Install system-wide

sudo cmake --install build --prefix /usr/local
sudo ldconfig

Headers land in /usr/local/include/cuframes/, the library in /usr/local/lib/.

Build options

Option Default Notes
BUILD_TOOLS ON cuframes-rtsp-source (needs FFmpeg dev libs)
BUILD_EXAMPLES ON sub_count reference subscriber
BUILD_TESTING ON unit + stress tests
BUILD_FFMPEG_FILTER OFF out-of-tree, requires a patched FFmpeg tree
BUILD_PYTHON_BINDINGS OFF planned

Option 3 — apt / dpkg packages

Coming when v1.0 ships. Until then, use the Docker image or build from source.

Verify the install

cuframes-rtsp-source --help

If the binary is on PATH and prints its usage banner, the runtime is wired up. To verify that the library itself is loadable from your own code, jump to First publisher.