-
-
Provenance Studio Create: prompt an asset, then Generate with provenance via Genblaze failover, B2 storage, and SHA-256 verify.
-
Library: every accepted run indexed on Backblaze B2—prompt, provider, aspect, verified badge, and durable run history.
-
Verify a real iPhone HEIC: EXIF make/model prove camera capture—not an AI Genblaze artifact from this pipeline.
-
Verify a ChatGPT image: C2PA + trainedAlgorithmicMedia mark it AI from another tool, not our Genblaze library.
-
Verify a Genblaze manifest: hashes consistent—NVIDIA FLUX prompt, asset SHA-256, and canonical digest all check out.
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.
Log in or sign up for Devpost to join the conversation.