Changelog
OpenFilter Library release notes
v0.1.14 - 2025-09-29
Updated
- Documentation: Updated documentation
v0.1.13 - 2025-09-24
Added
-
Complete Filter Documentation: Comprehensive documentation for all OpenFilter filters
image-out-filter.md- Image output with filename generation and quality optionswebvis-filter.md- Web Viewer with FastAPI endpointsmqtt-out-filter.md- MQTT Bridge output with ephemeral source supportvideo-out-filter.md- Video Streamer output with segmentation and encodingvideo-in-filter.md- Video Source input with webcam/RTSP/file supportutil-filter.md- Utility filter with xforms-based transformationsrest-filter.md- REST Connect API filter for HTTP data ingestionrecorder-filter.md- Data Capture recording capabilities
-
ImageOut Filter: New output filter for writing images to files
- Filename generation with timestamp and frame numbering
- Multiple image format support (JPEG, PNG, etc.)
- Quality and compression options
- Topic-based image selection
-
Comprehensive Test Suite: Added tests for ImageOut filter
- Unit tests for ImageWriter class functionality
- Integration tests for filter pipeline scenarios
- 619 lines of test coverage
-
Example Demos: Created demonstration examples
- Image output demo with various configuration options
- Video pipeline demo with face enhancement and RTSP support
- GCS integration examples for cloud storage
- Makefile automation for demo scenarios
Fixed
- Corrected documentation inaccuracies to match actual filter implementations
- Updated parameter names and configuration options
- Fixed webcam URL format specification (
webcam://prefix) - Updated examples to use proper syntax and formats
Changed
- Enhanced documentation structure with consistent API references
- Added
# ... other filters abovecomments to pipeline examples - Updated Util filter documentation to reflect xforms-based configuration
- Corrected VideoOut filter documentation for segmentation parameters
v0.1.12 - 2025-07-25
Added
- ImageIn filter to support reading images and creating Frame streams
v0.1.11 - 2025-08-05
Added
- Observability System: Comprehensive telemetry and monitoring capabilities
MetricSpecclass for defining custom metrics with flexible value functionsTelemetryRegistryfor managing OpenTelemetry instruments and recording metrics- Support for counters, histograms, and other OpenTelemetry instrument types
- Configurable metric allowlist via
OF_SAFE_METRICSenvironment variable - Automatic metric recording from frame data with customizable value extraction
Fixed
- Telemetry Tests: Updated test expectations to match current OpenTelemetry API
- Fixed histogram parameter name from
boundariestoexplicit_bucket_boundaries_advisory - All telemetry tests now pass successfully (8/8 tests passing)
- Fixed histogram parameter name from
Technical Details
- Metric Specification: Flexible metric definition with instrument type, name, and value extraction functions
- Registry Management: Centralized telemetry instrument creation and metric recording
- Configuration: Environment-based metric allowlist for security and performance control
- Testing: Comprehensive test coverage for metric specs, registry operations, and configuration handling
Modified
- For consistency across all versions, need to emit openfilter_version with v.
- Modified VERSION file for examples.
- Updated pyproject of all examples.
- Updated the
producerandschemaURLfor lineage.
v0.1.10 - 2025-08-05
Modified
- Lineage
Startevents now emit filter context with the regular info. - renamed
model_versiontoresource_bundle_versionfor clarity as it the version for the full bundle rather than any one model. - modified FilterContext to emit
openfilter_versionas well. - added getters for FilterContext:
FilterContext.get_filter_version(),FilterContext.get_resource_bundle_version,FilterContext.get_openfilter_version(),FilterContext.get_version_sha()andFilterContext.get_model_info(). - modified
git_shatoversion_sha
v0.1.9 - 2025-07-30
Modified
Runningevents now include the filter's own meta data as well.
v0.1.8 - 2025-07-25
Added
- FilterContext: Added a static context class to provide build and model metadata at runtime. This includes:
filter_version(from VERSION)model_version(from VERSION.MODEL)git_sha(from GITHUB_SHA, set by CI/CD or manually)models(from models.toml, with model name, version, and path)
- The context is accessible via
FilterContext.get(key),FilterContext.as_dict(), andFilterContext.log()for logging/debugging purposes.
v0.1.7 - 2025-07-17
Updated
- Support for Python 3.13 (Publishing and CI)
- Note we do not support for Python 3.13t, i.e. threaded see here: https://docs.python.org/3/howto/free-threading-python.html.
Modified
- Updated latest versions for all examples using
pyproject.tomlandrequirements.txt
v0.1.6 - 2025-07-16
Added
OpenTelemetrysupport to theOpenFilter.- For
OpenTelemetryusage:TELEMETRY_EXPORTER_TYPE- OpenTelemetry exporter (eg:console,gcm,OTLP_GRPC,OTLP_HTTP)OTEL_EXPORTER_OTLP_GRPC_ENDPOINT- If the client is OTLP_GRPCOTEL_EXPORTER_OTLP_HTTP_ENDPOINT- If the client is OTLP_HTTPOTLP_GRPC_ENDPOINT_SECURITY- Sets OpenTelemtry GRPC client endpoint securityTELEMETRY_EXPORTER_ENABLED- Enable/disable OpenTelemetryEXPORT_INTERVAL- OpenTelemetry metrics Export intervalPROJECT_ID- GCP project
- For
v0.1.5 - 2025-07-14
Added
OpenLineagesupport to theOpenFilter.- For
OpenLineageusage:OPENLINEAGE_URL- OpenLineage client URLOPENLINEAGE_API_KEY- OpenLineage client API key if neededOPENLINEAGE_VERIFY_CLIENT_URL- False by defaultOPENLINEAGE_ENDPOINT- OpenLineage client endpointOPENLINEAGE_PRODUCER- OpenLineage producerOPENLINEAGE__HEART__BEAT__INTERVAL- OpenLineage RUNNING event period
- For
Updated
OpenLineagesupport to theOpenFilter.run_idupdated the code so that events have the same run_id
v0.1.4 - 2025-07-07
Added
OpenLineagesupport to theOpenFilter.- For
OpenLineageusage:OPENLINEAGE_URL- OpenLineage client URLOPENLINEAGE_API_KEY- OpenLineage client API key if neededOPENLINEAGE_VERIFY_CLIENT_URL- False by defaultOPENLINEAGE_ENDPOINT- OpenLineage client endpointOPENLINEAGE_PRODUCER- OpenLineage producerOPENLINEAGE__HEART__BEAT__INTERVAL- OpenLineage RUNNING event period
- For
v0.1.3 - 2025-06-19
Added
s3://support to theVideoInbase filter (Thanks to @Ninad-Bhangui)- For
s3://sources, AWS credentials are required. Set these environment variables:AWS_ACCESS_KEY_ID- Your AWS access key IDAWS_SECRET_ACCESS_KEY- Your AWS secret access keyAWS_DEFAULT_REGION- Default AWS region (optional, can be overridden per source)AWS_PROFILE- AWS credentials profile to use (alternative to access keys)
- For
examples/hello-ocrexample demonstrating an OCR filter use case on a simple hello world video (Thanks to @kitmerker)examples/openfilter-heroku-demoexample demonstrating filter deployment on Heroku Fir (Thanks to @navarmn, @afawcett and the Heroku team)
Updated
requestsdependency from 2.32.3 to 2.32.4- Addresses
CVE-2024-47081, fixing an issue where a maliciously crafted URL and trusted
- Addresses
v0.1.2 - 2025-05-22
Updated
- Demo dependencies
Fixed
- Log messages
v0.1.1 - 2025-05-22
Added
-
Initial release of
openfilterbase library -
Filter Base Class
- Lifecycle hooks (
setup,process,shutdown) - ZeroMQ input/output routing
- Config parsing and normalization
- Lifecycle hooks (
-
Multi-filter Runner
run_multi()to coordinate multiple filters- Supports coordinated exit via
PROP_EXIT,OBEY_EXIT,STOP_EXIT
-
Telemetry and Metrics (coming soon)
- Structured logs and telemetry output
- Auto-tagging with filter ID, runtime version, and more
-
Utility Functions
- Parse URI options and topic mappings (
tcp://...;a>main, etc.)
- Parse URI options and topic mappings (
-
Highly Configurable
- Supports runtime tuning via environment variables
- Extensible
FilterConfigfor custom filters