Skip to main content
December 14, 2025

New features

Docker Resource Limits

The docker-compose.yml now includes configurable resource constraints to prevent video processing from overwhelming the server:
docker-compose.yml
deploy:
  resources:
    limits:
      cpus: '${DOCKER_CPU_LIMIT:-2.0}'
      memory: ${DOCKER_MEMORY_LIMIT:-4G}
    reservations:
      cpus: '${DOCKER_CPU_RESERVATION:-0.5}'
      memory: ${DOCKER_MEMORY_RESERVATION:-1G}
Default configuration:
  • Memory limit: 4GB (suitable for most deployments)
  • CPU limit: 2.0 cores
  • Memory reservation: 1GB minimum
For larger servers (16GB+ RAM), you can customize via environment variables:
DOCKER_MEMORY_LIMIT=12G
DOCKER_CPU_LIMIT=4.0

Job Queue System with Auto-Scaling

Introduced a robust job queue system that prevents concurrent video transformations from consuming all available resources.Automatic Concurrency Detection:
  • Formula: 1 worker per 2GB of RAM (minimum 1, maximum 16)
  • Automatically detects the server’s total RAM and calculates optimal concurrent jobs
  • Example: 8GB RAM = 4 concurrent video jobs maximum
Manual Override (optional):
.env
VIDEO_MAX_CONCURRENT=2  # Force specific concurrency level
Additional queue configuration:
.env
VIDEO_JOB_RETRY_MAX=3              # Retry failed jobs up to 3 times
VIDEO_JOB_CLEANUP_HOURS=24         # Auto-cleanup completed jobs after 24h
VIDEO_WORKER_POLL_INTERVAL_MS=1000 # Worker polling frequency

How it works

1

Upload

When you upload a video, it’s queued for processing instead of being processed immediately.
2

Priority

Thumbnail extraction has higher priority than transformations.
3

Concurrency Control

Only processes N videos simultaneously based on available RAM.
4

Retry Logic

Failed jobs are automatically retried up to 3 times.
5

Resource Protection

Docker limits prevent any single process from consuming too much memory.

Improvements

  • SIGKILL errors: By limiting concurrent jobs and Docker resources, FFmpeg won’t be killed by the OOM killer
  • Large files: The queue ensures large videos are processed sequentially if resources are limited
  • Server stability: Self-hosted deployment will remain stable under heavy load
  • Automatic recovery: Crashed jobs are automatically retried
The system works out-of-the-box with sensible defaults. The log on startup will show:
[Video Config] RAM: 8.00GB | Max concurrent jobs: 4 (auto-detected)
December 4, 2025

New features

  • Video trimming and thumbnail extraction: Added support for video trimming with so (start offset) and eo (end offset) parameters
  • Thumbnail generation: Extract single frames from videos as images using so combined with image formats (webp, jpeg, png)
  • API-only mode: Standalone API deployment option with auto-generated API keys for headless setups
  • Contextual options: Enhanced documentation with copy, ChatGPT, Claude, and Cursor integration options

Documentation improvements

  • Enhanced media transformation documentation with comprehensive parameter reference for images and videos
  • Added detailed Docker volume persistence warnings and best practices
  • Created comprehensive security guide covering authentication, API keys, and best practices
  • Improved Quick Start guide with multiple deployment modes (Normal, S3 Compatible, API Only)
  • Updated storage configuration documentation with detailed setup instructions
  • Restructured navigation for improved content discoverability

Bug fixes

  • Fixed Docker command consistency across documentation
  • Updated navigation links to reflect new documentation structure
December 2, 2025

Breaking changes

  • Parameter syntax update: Changed transformation parameter syntax from param:value to param_value to match Cloudinary’s syntax 1:1. This change enables faster transition for developers migrating from Cloudinary and reduces the learning curve. Migration example:
    • Old syntax: /t/resize:1280x720/image.jpg
    • New syntax: /t/w_1280,h_720/image.jpg
The new syntax matches Cloudinary exactly, making it easier to migrate existing code and learn Openinary if you’re already familiar with Cloudinary.
November 15, 2025
Initial Release

Initial release

  • Core media processing: On-the-fly image and video transformations
  • Image transformations: Resize, crop, and optimize images with quality control
  • Video transformations: Resize and compress videos with CRF quality encoding
  • Intelligent compression: Automatic format optimization (WebP, AVIF)
  • Cloud storage integration: Support for AWS S3 and S3-compatible storage (Cloudflare R2, DigitalOcean Spaces, Minio)
  • Self-hosted deployment: Docker-based deployment with dashboard and API
  • Caching layer: Built-in caching for fast transformation delivery
  • RESTful API: Simple, powerful API for media operations