Contributing Guide#

ViPPET (Visual Pipeline and Platform Evaluation Tool) is an open-source project maintained as part of the Intel Edge AI Libraries. Contributions of every size are welcome, from typo fixes in the documentation to new pipelines, backend features, and UI components.

This page is the entry point to the contributing documentation. It links to the area-specific guides and summarizes what to expect from each.

Where to contribute#

Area

What you can add or change

Backend

FastAPI routes, managers, GStreamer/DLStreamer integration, pipeline execution and benchmarking.

How to add a new pipeline

Built-in pipeline YAML files under vippet/pipelines/ and user-created pipelines via the API.

How to add a new element

Custom gvapython modules and notes on element visibility in the simple/advanced views.

Input for Frontend and Documentation needed

Area

What you can add or change

Frontend

React/TypeScript UI, pipeline editor, metrics views, Redux store, routing.

Documentation

Docusaurus pages, in-product docstrings, READMEs.

Repository layout (quick reference)#

tools/visual-pipeline-and-platform-evaluation-tool/
├── vippet/             # Backend (Python 3.12, FastAPI)
│   ├── api/            # FastAPI app, routes, schemas
│   ├── managers/       # Business logic (pipeline, camera, job, metadata, ...)
│   ├── pipelines/      # Built-in GStreamer pipeline YAMLs
│   └── tests/          # pytest / unittest suites
├── ui/                 # Frontend (React 19, TypeScript, Vite)
├── video_generator/    # Synthetic test-video generator
├── onvif_discovery/    # ONVIF camera discovery agent
├── shared/             # Runtime-mounted volumes (models, videos, scripts, metadata)
├── compose*.yml        # Docker Compose files (hardware profiles)
└── Makefile            # Main build / run / lint / test targets

For the architecture of each layer see the Architecture section.

Ground rules#

A few constraints apply to every contribution, regardless of area:

  • Do not commit .env files or model artifacts. .env is generated by setup_env.sh; models are downloaded at runtime by the model-download service.

  • Keep API schema and generated clients in sync. Whenever you change a FastAPI route or a Pydantic model, regenerate the OpenAPI schema with make generate_openapi and regenerate the UI client with npm run generate:api (from ui/). See Backend - API schema and clients for details.

  • Keep changes small and focused. Avoid unrelated refactors in the same PR.

Before you open a pull request#

Run the linters and tests that cover the area you touched:

make lint        # markdownlint + ruff + pyright
make fix-linter  # auto-fix ruff issues
make format      # auto-format Python with ruff
make test        # backend unit tests in Docker

For documentation-only changes, markdownlint must pass, that is enough.

Custodians#

If you are unsure who owns a given area, the relevant Article custodian is listed at the bottom of each contributing page.