You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

Saken OmniFF

FFmpeg for AI β€” universal multimodal runtime for inference, generation, and transformation

Quickstart β€’ Pipelines β€’ Architecture β€’ API β€’ Whitepaper


What is OmniFF?

OmniFF applies the FFmpeg philosophy to AI: any input modality β†’ any output modality, through a managed graph of models, filters, and validators.

omniff -i "What is the capital of Kazakhstan?" -p "Answer briefly" --thinking off
# β†’ Astana

omniff -i photo.jpg -p "Describe this image"
# β†’ A sunset over mountains with golden light...

omniff -i meeting.wav
# β†’ [Full transcription of the audio]

omniff -i sketch.png -p "Make it photorealistic" -o result.png
# β†’ result.png (SDXL-turbo image-to-image)

omniff -i "A cyberpunk city at night" -f image -o city.png
# β†’ city.png (text-to-image generation)

omniff -i lecture.mp4 -p "Summarize this video"
# β†’ The lecture covers three main topics...

omniff -i report.pdf -p "Extract key findings"
# β†’ Key findings: 1) Revenue grew 23%...

Quickstart

# Install
pip install -e "python/.[all]"

# Text β†’ Text
omniff -i "Explain quantum computing" --thinking normal

# Image β†’ Text
omniff -i photo.jpg -p "What's in this image?"

# Audio β†’ Text
omniff -i recording.wav --lang kk

# Text β†’ Image
omniff -i "A red panda eating bamboo" -f image -o panda.png

# Start HTTP API
python -m omniff.api

Pipelines

Pipeline Input Output Model Status
Text β†’ Text text / prompt text Qwen3-4B βœ…
Image β†’ Text image + prompt text Qwen2.5-VL-3B βœ…
Audio β†’ Text audio file text Whisper-large-v3 βœ…
Image β†’ Image image + prompt image SDXL-turbo βœ…
Text β†’ Image prompt image SDXL-turbo βœ…
Video β†’ Text video + prompt text Qwen2.5-VL-3B βœ…
Document β†’ Text PDF/DOCX/TXT text Extraction + Qwen3 βœ…

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     OmniFF Runtime                       β”‚
β”‚                                                          β”‚
β”‚  Input ─→ Demuxer ─→ Router ─→ GraphPlanner             β”‚
β”‚                                    β”‚                     β”‚
β”‚                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚                          β”‚    OmniGraph DAG    β”‚          β”‚
β”‚                          β”‚                     β”‚          β”‚
β”‚                          β”‚  β”Œβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β” β”‚          β”‚
β”‚                          β”‚  β”‚Model│─→│Filterβ”‚ β”‚          β”‚
β”‚                          β”‚  β””β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”¬β”€β”€β”€β”˜ β”‚          β”‚
β”‚                          β”‚              β”‚     β”‚          β”‚
β”‚                          β”‚         β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β” β”‚          β”‚
β”‚                          β”‚         β”‚Validateβ”‚ β”‚          β”‚
β”‚                          β”‚         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”˜ β”‚          β”‚
β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚          β”‚
β”‚                                    β”‚          β”‚          β”‚
β”‚                               Muxer ─→ Output            β”‚
β”‚                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚Scheduler β”‚ β”‚ Thinking+ β”‚ β”‚ Plugins  β”‚ β”‚ HTTP API  β”‚  β”‚
β”‚  β”‚hot/warm/ β”‚ β”‚off/fast/  β”‚ β”‚ custom   β”‚ β”‚ FastAPI   β”‚  β”‚
β”‚  β”‚cold/LRU  β”‚ β”‚normal/deepβ”‚ β”‚ models   β”‚ β”‚ /run      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Core Components

Component Description
KeywordRouter Routes input to the right pipeline based on modality + keywords
GraphPlanner Builds DAG execution plans (demux β†’ model β†’ validate β†’ mux)
GraphExecutor Walks DAG in topological order, passes data between nodes
ModelScheduler Hot/warm/cold loading with TTL eviction and LRU
ValidationPipeline Multi-pass validation chain with required/optional passes
Thinking+ Prompt control: off β†’ fast β†’ normal β†’ deep β†’ research
PluginRegistry Register custom model implementations

API

Python SDK

from omniff.runtime.engine import OmniFFRuntime

runtime = OmniFFRuntime.from_yaml("omniff.yaml")

# Text β†’ Text
result = runtime.run(input="Explain gravity", thinking="normal")
print(result.output_text)

# Image β†’ Text  
result = runtime.run(input="photo.jpg", prompt="Describe this")
print(result.output_text)

# Text β†’ Image
result = runtime.run(input="A sunset", output_modality="image", output="sunset.png")
print(result.output_path)

HTTP API

# Start server
python -m omniff.api

# Text processing
curl -X POST http://localhost:8000/run \
  -F "input_text=What is AI?" \
  -F "thinking=fast"

# File processing
curl -X POST http://localhost:8000/run/file \
  -F "file=@photo.jpg" \
  -F "prompt=Describe this image"

# Health check
curl http://localhost:8000/health

CLI (FFmpeg-style)

omniff -i <input> [-p <prompt>] [-f <format>] [-o <output>] [--thinking <level>]
       [--strength <0-1>] [--lang <code>] [--model <id>] [--seed <n>]

Project Structure

omniff/
β”œβ”€β”€ python/omniff/           # Python SDK (saken-omniff)
β”‚   β”œβ”€β”€ models/              # Model wrappers (LLM, VLM, ASR, ImageEdit, ...)
β”‚   β”œβ”€β”€ runtime/             # Engine, config, result
β”‚   β”œβ”€β”€ router/              # KeywordRouter
β”‚   β”œβ”€β”€ graph/               # OmniGraph, executor, planner, loader
β”‚   β”œβ”€β”€ scheduler/           # ModelScheduler (hot/warm/cold)
β”‚   β”œβ”€β”€ validators/          # Text/Image validators, pipeline
β”‚   β”œβ”€β”€ filters/             # Language detection
β”‚   β”œβ”€β”€ nodes/               # Node registry
β”‚   β”œβ”€β”€ api.py               # FastAPI HTTP server
β”‚   β”œβ”€β”€ cli.py               # CLI entry point
β”‚   β”œβ”€β”€ thinking.py          # Thinking+ controller
β”‚   └── plugins.py           # Plugin model interface
β”œβ”€β”€ crates/                  # Rust workspace
β”‚   β”œβ”€β”€ omniff-core/         # Core types (OmniPacket, OmniFrame, OmniNode)
β”‚   β”œβ”€β”€ omniff-graph/        # Graph types and planner trait
β”‚   β”œβ”€β”€ omniff-runtime/      # Runtime traits (Router, Executor, Scheduler)
β”‚   └── omniff-cli/          # Rust CLI binary
β”œβ”€β”€ tests/python/            # 85 unit + 15 integration tests
β”œβ”€β”€ graph_templates/         # YAML pipeline templates
β”œβ”€β”€ omniff.yaml              # Runtime configuration
└── ARCHITECTURE.md          # Full architectural whitepaper

Configuration

# omniff.yaml
runtime:
  name: omniff
  version: "1.0"

router:
  type: keyword

experts:
  text_small:
    model_id: Qwen/Qwen3-4B
    loading_policy: warm
    ttl: 300
  vision:
    model_id: Qwen/Qwen2.5-VL-3B-Instruct
    loading_policy: warm
  asr:
    model_id: openai/whisper-large-v3
    loading_policy: cold
  image_edit:
    model_id: stabilityai/sdxl-turbo
    loading_policy: cold

Testing

# All tests
PYTHONPATH=python python -m pytest tests/python/ -v

# Unit tests only
PYTHONPATH=python python -m pytest tests/python/unit/ -v

# Integration tests (requires GPU)
PYTHONPATH=python python -m pytest tests/python/integration/ -v

# Rust
cargo check --workspace

Tested on KazNU server (2Γ— NVIDIA A10 22GB).

Naming Convention

Surface Identifier
CLI omniff
Python package saken-omniff
Rust crates omniff-core, omniff-graph, omniff-runtime, omniff-cli
GitHub stukenov/omniff
Hugging Face stukenov/omniff-runtime

License

Apache 2.0


Built by Saken Tukenov

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support