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 above
comments 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
MetricSpec
class for defining custom metrics with flexible value functionsTelemetryRegistry
for managing OpenTelemetry instruments and recording metrics- Support for counters, histograms, and other OpenTelemetry instrument types
- Configurable metric allowlist via
OF_SAFE_METRICS
environment 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
boundaries
toexplicit_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
producer
andschemaURL
for lineage.
v0.1.10 - 2025-08-05
Modified
- Lineage
Start
events now emit filter context with the regular info. - renamed
model_version
toresource_bundle_version
for clarity as it the version for the full bundle rather than any one model. - modified FilterContext to emit
openfilter_version
as 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_sha
toversion_sha
v0.1.9 - 2025-07-30
Modified
Running
events 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.toml
andrequirements.txt
v0.1.6 - 2025-07-16
Added
OpenTelemetry
support to theOpenFilter
.- For
OpenTelemetry
usage: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
OpenLineage
support to theOpenFilter
.- For
OpenLineage
usage: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
OpenLineage
support to theOpenFilter
.run_id
updated the code so that events have the same run_id
v0.1.4 - 2025-07-07
Added
OpenLineage
support to theOpenFilter
.- For
OpenLineage
usage: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 theVideoIn
base 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-ocr
example demonstrating an OCR filter use case on a simple hello world video (Thanks to @kitmerker)examples/openfilter-heroku-demo
example demonstrating filter deployment on Heroku Fir (Thanks to @navarmn, @afawcett and the Heroku team)
Updated
requests
dependency 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
openfilter
base 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
FilterConfig
for custom filters