PlainsightAI Releases OpenFilter: Framework For Universal Vision Workloads

1 week ago 6

PyPI version  Apache 2.0 Build Status

OpenFilter is an universal abstraction for building and running vision workloads in modular image/video processing pipelines. It simplifies communication between components (called filters) and supports synchronization, side-channel paths, metrics, and load balancing — all in pure Python.

Jump to:


  • 🔁 Easily pluggable filter components
  • 🧪 Develop and test filters locally with Python
  • ⚡ High-throughput synchronized pipelines
  • 📡 MQTT/REST visualization and data publishing
  • 🧵 Parallel processing via load-balanced filter branches
  • 📊 Built-in telemetry and metrics streaming (coming soon)

Install OpenFilter with all utility filter dependencies:

pip install openfilter[all]

Install directly from GitHub:

pip install git+ssh://[email protected]/PlainsightAI/openfilter.git@main#egg=openfilter[all]

To install a specific version:

pip install git+ssh://[email protected]/PlainsightAI/[email protected]#egg=openfilter[all]

Editable install for development:

git clone [email protected]:PlainsightAI/openfilter.git cd openfilter make install

Here’s a minimal example that plays a video and visualizes it in the browser:

from openfilter.filter_runtime.filter import Filter from openfilter.filter_runtime.filters.video_in import VideoIn from openfilter.filter_runtime.filters.webvis import Webvis if __name__ == '__main__': Filter.run_multi([ (VideoIn, dict(sources='file://video.mp4', outputs='tcp://*')), (Webvis, dict(sources='tcp://localhost')), ])

Run it with:

Then open http://localhost:8000 to see your video stream.


Alternatively, simply use the CLI:

openfilter run - VideoIn --sources 'file://video.mp4!loop' - Webvis

Note: Ensure that a video.mp4 file exists. A simple example is available at examples/hello-world/video.mp4.

Explore real-world examples covering:

  • Frame-by-frame video processing
  • Writing frames to JPEG or output video
  • Dual-video pipelines with multiple topics
  • Load balancing using multiple filter processes
  • Sending metrics to MQTT
  • Ephemeral side-channel processing
  • Fully declarative + class-based configuration

➡️ See docs/overview.md for all examples.



We welcome contributions of all kinds — new filters, bugfixes, or documentation improvements!

Please see the contributing guide for details on how to get started.

If you encounter issues, open an issue.


Apache License 2.0. See LICENSE for full text.

Read Entire Article