Inspiration AI images are everywhere — marketing, social, product mockups — but provenance is usually missing. Once a file leaves the chat window, you often can’t answer: which model made this, with what prompt, and has anyone altered the record? That matters for creators, brands, and compliance. We wanted something judges and clients can actually use: generate media, store it durably, and verify lineage — not another prompt box with no paper trail. Backblaze’s Genblaze + B2 stack was the right fit: multi-provider orchestration with manifests by default, and object storage that keeps assets and provenance together.

What it does Provenance Studio is a cloud web app for accountable AI image generation: Create — Enter a prompt. Genblaze runs a pipeline with multi-provider failover (GMI Cloud → NVIDIA NIM → OpenAI). Progress streams in the UI. Assets and Genblaze manifests land on Backblaze B2. Receipt — After generation: image, prompt, provider/model, params, timestamps, SHA-256 hashes, and the failover routing trail. View the manifest in-app; download image + JSON. Library — Successful runs are indexed on B2 so history survives refresh and redeploy. Verify — Paste a Genblaze manifest to check canonical + asset hashes. Tamper demo shows verification failing after a change. Inspect photo — Upload JPEG/PNG/WebP/HEIC and get a clear verdict: AI from this pipeline (content hash matches our library) AI markers from another tool (e.g. C2PA / generator metadata) Real camera capture (EXIF make/model) Inconclusive when metadata was stripped (WhatsApp, screenshots) — we refuse to guess

How we built it Backend: FastAPI + Genblaze (Pipeline, providers, ObjectStorageSink → B2) Storage: Backblaze B2 for assets, manifests, and library index JSON Frontend: Vanilla HTML/CSS/JS — Create, Library, Verify, About Failover: Configured provider order; first success wins; failures summarized in the routing trail Verification: Manifest verify API + photo inspect (EXIF, AI markers, SHA reverse-lookup) Challenges we ran into Provider reality: GMI credits, NVIDIA timeouts/validation, OpenAI model changes — failover became a core feature, not a fallback note. B2 private buckets: Assets returned UnauthorizedAccess until the bucket was Public for demo URLs. HEIC / WhatsApp: iPhone HEIC needed pillow-heif; WhatsApp strips EXIF — we surface that honestly instead of false “camera” claims. Re-upload loophole: Downloading our own AI image and re-inspecting looked “inconclusive” until we matched asset SHA-256 against the library. Browser JSON viewer: Raw B2 manifests were unreadable (white-on-white) — we moved reading into an in-app modal.

What we learned Durable provenance needs storage + hashes + honest limits. Metadata-only checks fail after social apps re-encode files. Binding generation to B2 manifests and content hashes is what makes verification meaningful.

What’s next C2PA signing on write, signed public verify links, video/audio modalities via Genblaze, and optional cryptographic signatures beyond hash-bound manifests.

Built With

Share this project:

Updates