Installing Videoflow

You need Python 3.12+ and docker. A NATS JetStream server is required at runtime; videoflow run-local starts one in docker when none is listening, or run your own (nats-server -js, or docker compose up -d using the docker-compose.yml in the repository).

Videoflow is on PyPI. Pick one of:

  • A virtual environment of your own:

    python3 -m venv .venv && .venv/bin/pip install -U 'videoflow[all]'
    
  • A tool install with uv, which puts the videoflow command on your PATH for every shell and directory:

    uv tool install 'videoflow[all]'
    

The extras are the same in every form: distributed (core + broker client + wire format), vision / video (OpenCV, ffmpeg), deploy (the broker client + oras, for publishing components as OCI artifacts), blob (the Redis payload store), or all.

That is the whole install. The two other things a run may need arrive on their own:

  • The videoflow-base container image that solutions build on is pulled from ghcr.io/videoflow/videoflow-base:<your version> the first time deploy or run-local needs it (VF_BASE_IMAGE_REGISTRY names a mirror instead).

  • The solutions shipped in the videoflow repositories are fetched at your version when you name them as <repo>://<name> — videoflow run-local videoflow://toy_calculator, videoflow deploy videoflow-contrib://human_tracking — into ~/.videoflow/solutions/ (see Getting started with Videoflow and Deploying to Kubernetes).

A solution whose dependencies you do not want on your machine — the ML solutions in videoflow-contrib — needs nothing more than this: run-local builds its image and runs it there.

To work on videoflow itself, install it from a clone instead; see How to contribute (Development setup). A source install builds the base image from the checkout rather than pulling it, so the code you edit is what runs in the workers.