genblaze is a free, open source data engineering & integration project written in Python and released under MIT. It has 554 GitHub stars, 24 forks and 65 open issues, and was last pushed 17 hours ago. On this registry it ranks #38 of 39 tracked projects in Data Engineering & Integration, with 5 head-to-head comparisons available.

What is genblaze?

Genblaze is an open source Python SDK from Backblaze Labs for orchestrating generative AI media pipelines across video, audio, and image providers, with a provenance manifest attached to every output, and it is aimed at engineers and data teams who run those pipelines in production rather than calling a single generation API by hand.

What it is

Genblaze is a Python package published on PyPI that places one orchestration surface above generative media providers. A unified Pipeline and Step API spans eleven adapters across video, image, audio, and chat, covering providers such as OpenAI, Google, Runway, Luma, ElevenLabs, and Stability Audio, plus models served through GMI Cloud and NVIDIA NIM. The umbrella distribution pulls in genblaze-core for the pipeline and models and genblaze-s3 for Backblaze B2 and S3 storage, so a working provenance pipeline exists right after install, while provider adapters remain opt-in extras. The project requires Python 3.11 or later and is released under the MIT licence.

The problem it solves is the hand-written glue layer between provider SDKs and durable storage. Without Genblaze, a team that generates a clip with Sora, later swaps to Runway or Veo, and wants a record of which model and parameters produced each asset has to rewrite orchestration whenever a provider changes. Genblaze reduces that to a one-line change and captures provider, model, prompt, parameters, and timestamps in a canonical manifest, so an output traces back to the exact run that produced it. Storage is treated as a first-class concern: S3StorageBackend.for_backblaze("bucket") yields durable, credential-free asset URLs and content-addressable layouts for Backblaze B2 or any S3-compatible store, including AWS S3, Cloudflare R2, and MinIO.

Key capabilities

  • A unified Pipeline / Step API across eleven adapters, so a provider swap such as Sora to Runway to Veo is a one-line change.
  • Provenance by default: every run yields a canonical manifest that can be embedded into .mp4, .png, .jpg, .webp, .mp3, and .wav files or persisted alongside the asset.
  • Manifest.verify() checks the manifest hash and requires each output asset to declare a valid sha256, while the opt-in CLI mode genblaze verify --fetch re-hashes fetched bytes.
  • fallback_models=[...] retries generation on MODEL_ERROR, and probe_models plus provider-contract tests catch upstream drift in CI.
  • Replayable runs through genblaze replay manifest.json, or by feeding the canonical parameters back into a Pipeline.
  • Install extras including genblaze[gmicloud], genblaze[video], and genblaze[all] to opt into specific provider bundles.

Who uses it and how

  • Teams that chain stages such as text to image to video without re-plumbing orchestration between them.
  • Pipelines that must survive a provider swap, where changing the model behind a step leaves the rest of the workflow intact.
  • Workflows that need a downstream record of provider, model, and parameters per asset, persisted to Backblaze B2 or another S3-compatible store.
  • CI and platform teams running probe_models and provider-contract tests to catch upstream API drift before users do.

Getting started

Install with pip install genblaze, which brings in genblaze-core and genblaze-s3 for a working provenance pipeline, then add provider extras such as genblaze[video] or genblaze[all]. Backblaze also publishes a developer guide for the SDK.

How it compares

Genblaze sits between calling a single video API and running a production media pipeline. It is not a substitute for an LLM chat loop, where the provider's own SDK or LangChain is simpler, and it is not aimed at UI-driven generation apps in JavaScript or TypeScript, where the Vercel AI SDK fits better; teams that generate no media or do not care about provenance are better served by the provider SDK directly.

When to use it — and when not to

The manifest coverage has limits: URL-only outputs do not pass Manifest.verify(), and outputs become SHA-256-covered only when providers return bytes or ObjectStorageSink moves them into durable storage. Verification is tamper-evident in trusted storage, so adversarial cases need a separate signer or C2PA, and a self-hoster must operate object storage on Backblaze B2 or an S3-compatible service and manage provider credentials. One practical trap is versioning: a GitHub Release tag such as v0.7.0 names a CHANGELOG wave, not a genblaze release, so wave tags should not be pinned. The repository also carries 65 open issues, and it is the wrong choice for anyone who only needs chat completions or does not care about provenance.

project readme (upstream, from github) — read inline

Genblaze

Pipeline SDK for AI-generated video, audio, and images with built-in provenance.

PyPI License: MIT Python 3.11+ CI

Genblaze is an AI pipeline SDK by Backblaze for building and orchestrating generative media workflows across video, image, and audio.

A unified Pipeline API spans providers like OpenAI, Google, Runway, Luma, ElevenLabs, and Stability Audio, plus models served through platforms such as GMI Cloud and NVIDIA NIM (build.nvidia.com) — so you swap providers without rewriting orchestration. Every run produces a canonical provenance manifest you can embed directly into media files (.mp4, .png, .mp3, …) and persist to Backblaze B2 or any S3-compatible store. Manifest.verify() checks the manifest hash and requires every output asset to declare a valid sha256; callers that fetch asset.url should re-hash those bytes separately, and the CLI's opt-in genblaze verify --fetch mode does exactly that.

Why Genblaze

Genblaze sits between "call a single video API" and "run a media pipeline in production." The differentiators:

  • Provenance by default. Every run yields a canonical manifest — deterministic, embeddable into .mp4 / .png / .jpg / .webp / .mp3 / .wav, or persisted alongside the asset. Outputs become SHA-256-covered when providers return bytes or ObjectStorageSink transfers them into durable storage; URL-only outputs do not pass Manifest.verify(). Tamper-evident in trusted storage; pair with your own signer or C2PA when adversarial verification matters. See trust modes.
  • One pipeline, many providers. Eleven adapters across video, image, audio, and chat behind a single Pipeline / Step API. Swap Sora → Runway → Veo by changing one line; chain text → image → video without re-plumbing.
  • Storage is first-class. S3StorageBackend.for_backblaze("bucket") ships durable, credential-free asset URLs and content-addressable layouts. Designed for Backblaze B2; works against any S3-compatible store (AWS S3, Cloudflare R2, MinIO).
  • Fallback chains and conformance. fallback_models=[...] retries on MODEL_ERROR; CI-grade probe_models and provider-contract tests catch upstream drift before users do.
  • Replayable runs. Every manifest captures the full provenance — provider, model, prompt, params, timestamps — so a run can be reconstructed via genblaze replay manifest.json or by feeding the canonical params back into a Pipeline.

Reach for something else when:

  • You only need an LLM chat loop → use the provider's SDK or LangChain.
  • You're building a UI-driven generation app in JS/TS → use the Vercel AI SDK.
  • You're not generating media or don't care about provenance → the provider's SDK directly is simpler.

Install

pip install genblaze                  # core + B2/S3 storage (the umbrella)
pip install "genblaze[gmicloud]"      # + GMICloud provider
pip install "genblaze[video]"         # + curated video bundle
pip install "genblaze[all]"           # + every provider

The umbrella pulls in genblaze-core (pipeline + models) and genblaze-s3 (Backblaze B2 / S3 storage) so you have a working provenance pipeline out of the box. Provider adapters are opt-in extras.

A GitHub Release tag (e.g. v0.7.0) is not a genblaze version — don't pin genblaze==. The tag names a CHANGELOG wave; every package in that wave versions independently, so wave tags and the umbrella's PyPI versions are separate sequences that happen to look alike (see RELEASING.md). A pin on a wave tag either:

  • fails outright (no such version was published), or
  • resolves silently to an unrelated umbrella build from a different wave — no error, just stale code (e.g. genblaze==0.4.0 on PyPI predates the v0.4.0 wave).

Pin the exact umbrella version instead (from that wave's "Released package versions" list in its release notes) — but note the umbrella pins ranges (e.g. genblaze-core>=0.3.8, even that isn't fully reproducible on its own. For a locked install, generate a lockfile (pip freeze, uv lock`, or a constraints file) once your stack works.

Install packages individually if you prefer:

pip install genblaze-core            # Pipeline, Step, Run, Manifest, sinks, tracers
pip install genblaze-s3              # S3-compatible storage (B2, AWS, R2, MinIO)
pip install genblaze-cli             # CLI: extract, verify, replay, index

# Provider adapters
pip install genblaze-openai          # OpenAI: Sora, DALL-E / gpt-image, TTS, chat
pip install genblaze-google          # Google: Veo, Imagen, Gemini-image, chat
pip install genblaze-nvidia          # NVIDIA NIM: Cosmos, SDXL/FLUX, Fugatto, Riva, chat
pip install genblaze-gmicloud        # GMICloud: video, image, audio, chat (request queue)
pip install genblaze-runway          # Runway Gen video
pip install genblaze-luma            # Luma Dream Machine video
pip install genblaze-decart          # Decart Lucy video / image
pip install genblaze-replicate       # Replicate (Flux, SDXL, etc.)
pip install genblaze-elevenlabs      # ElevenLabs TTS + sound effects
pip install genblaze-stability-audio # Stability AI Stable Audio (music)
pip install genblaze-lmnt            # LMNT fast TTS
pip install genblaze-hume            # Hume AI Octave TTS
pip install genblaze-assemblyai      # AssemblyAI speech-to-text / transcription

Install names use hyphens, Python imports use underscores: pip install genblaze-import genblaze_.

TypeScript types for the manifest schema are published on npm:

npm install @genblaze/spec

Quickstart

End-to-end: generate a video, persist it and its provenance manifest to Backblaze B2, verify the hash.

pip install genblaze-core genblaze-gmicloud genblaze-s3

export GMI_API_KEY="gmi-..."
export B2_KEY_ID="..."
export B2_APP_KEY="..."
from genblaze_core import Modality, ObjectStorageSink, KeyStrategy, Pipeline
from genblaze_gmicloud import GMICloudVideoProvider
from genblaze_s3 import S3StorageBackend

storage = ObjectStorageSink(
    S3StorageBackend.for_backblaze("my-bucket"),
    key_strategy=KeyStrategy.HIERARCHICAL,
)

result = (
    Pipeline("my-first-pipeline")
    .step(
        GMICloudVideoProvider(),
        model="seedance-2-0-260128",
        prompt="A drone shot soaring over a coastal city at golden hour",
        modality=Modality.VIDEO,
        duration=10,
        aspect_ratio="16:9",
    )
    .run(sink=storage, timeout=600)
)

print(f"Asset URL: {result.run.steps[0].assets[0].url}")    # B2 durable URL
print(f"SHA-256:   {result.run.steps[0].assets[0].sha256}")
print(f"Manifest:  {result.manifest.manifest_uri}")         # Provenance JSON in B2
print(f"Hash:      {result.manifest.canonical_hash}")
print(f"Verified:  {result.manifest.verify()}")

The manifest captures the full provenance chain — provider, model, prompt, parameters, timestamps, and a canonical hash for integrity verification — and is uploaded alongside the asset. The asset URL is durable (credential-free, never expires), safe to store anywhere.

Runnable copy: examples/quickstart.py. No API key? Try examples/quickstart_local.py — builds and verifies a manifest with zero external calls.

Concepts

Primitive Description
Pipeline Fluent, composable multi-step generation workflow with sync, async, and streaming runners. Supports fan-in (input_from), fallback chains, and AV compositing.
Step A single generation operation — provider, model, prompt, params, retry budget, fallback chain, cost.
Run A pipeline execution: collection of steps with shared run_id, tenant_id, and parent_run_id for lineage.
Asset Generated media artifact with durable URL, SHA-256, MIME type, duration, and per-modality metadata.
Manifest Canonical, hash-verified provenance document — embeddable into MP4 / PNG / JPEG / WebP / MP3 / WAV.

readme truncated — read the full docs on github

Frequently asked questions

Is genblaze free to use?

genblaze is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does genblaze do?

Genblaze is an open source Python SDK for orchestrating generative AI media pipelines across video, audio, and image providers with built in provenance for ever

What is genblaze written in?

genblaze is primarily written in Python. Its source is publicly available at https://github.com/backblaze-labs/genblaze, and it has 554 GitHub stars.