vios-overview · git:20260814.007874c · 2026-08-14 · sha256 a54735d6d1531dee
vios-overview git:20260814.007874cA
Immutable. This exact content is served forever at /api/v1/blob/a54735d6d1531dee.
---
description: VIOS project overview, architecture, directory layout, and key dependencies
alwaysApply: true
---
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# VIOS Project Overview
**VIOS (Video IO & Storage)** is an NVIDIA C++17 Video Management System abstraction layer. It provides a pluggable adaptor architecture that normalizes access to multiple VMS backends (Milestone, ONVIF, native sensors) and exposes REST/WebSocket APIs with WebRTC streaming. Part of the NVIDIA Metropolis Media Service (MMS) stack.
Current version: see `src/app/vstmodule.cpp` (update this file on each release, do not hardcode here).
# Directory Layout
```
src/
app/ Application entry points (Main.cpp, server.cpp, vstmodule.cpp)
framework/ Reusable framework components
apis/ REST/WebSocket API handlers
web/ HTTP server (civetweb), WebSocket, schema validation
media/ GStreamer pipelines, WebRTC streamer, video source graph
live555/ RTSP client
protocols/ SOAP, gRPC, Prometheus, Elasticsearch clients
notification/ Redis, Kafka, MQTT pub/sub
database/ SQLite + PostgreSQL backends
StreamSdk/ Stream SDK integration
modules/ Feature modules (selected at build time via module= flag)
adaptors/ VMS backend adaptors (pluggable shared libs)
include/ Third-party and SDK headers
prebuilts/ Pre-built static/shared libs per arch (x86_64, aarch64, sbsa)
test/gtests/ Google Test unit tests
test/bdd_tests/ Python BDD tests (pytest-bdd + Gherkin)
deployment/ Kubernetes Helm charts and UCF deployment configs
cicd_files/ CI/CD scripts, Dockerfiles per arch
```
# Module System
Each module sets its own `CPPFLAGS` defines (e.g., `-DRTSP_SERVER_MODULE`) and links corresponding prebuilt shared libs. Do not assume a module's symbols are present unless its define is active.
# Adaptor Pattern
Adaptors are loaded dynamically via `adaptor_loader.cpp`. Use `/new-adaptor` skill to scaffold one correctly.
# Key Dependencies
| Library | Purpose |
|---|---|
| GStreamer 1.0 | Media pipeline |
| live555 | RTSP client |
| civetweb | HTTP + WebSocket server |
| jsoncpp | JSON serialization |
| libcurl / libxml2 / nvsoap | REST, SOAP, ONVIF |
| gRPC + protobuf | Inter-service RPC (x86_64) |
| libpqxx / sqlite3 | PostgreSQL / embedded DB |
| Redis / Kafka / paho-mqtt | Pub/sub and event streaming |
| Prometheus cpp / OpenTelemetry | Metrics and tracing |
| OpenCV 4 / Boost | Image processing, utilities |