Backblaze Generative Media Hackathon

CastIron

Your TTS provider just died. The episode still ships.

Live · OFFLINE demo, zero credentials Genblaze · Backblaze B2 Object Lock Python · FastAPI · SSE
The hook

96 / 96
episodes shipped.

Across healthy runs and forced-outage runs — zero dropped. Every one hash-verified.

The problem

The vendor is
the single point.

It's mid-run. ElevenLabs returns a 402. The pipeline was 60% through an episode — and now it's dead. Half-generated, nothing shipped, no record of what failed.

// mid-run, one provider dies
narration → 402 quota
pipeline → halted
episode → ✗ dropped
what shipped? → nothing
why? → no record
The solution

A ladder that
catches the fall.

  • Failover ladder — narration steps ElevenLabs → LMNT → Hume
  • Manifest inside the MP3 — provenance, hash-verified on read
  • Object-Locked publish — the episode can't be silently changed
api.castiron.edycu.dev/console
CastIron producer console — live SSE stage rail
How it works — a 3-stage fan-out that heals

Genblaze runs it. B2 makes it permanent.

01 · REQUEST
POST /runs
script + chaos toggle
→
02 · GENBLAZE
Pipeline.astream
narration · music · cover (mc=3)
→
03 · SELF-HEAL
LadderTTSProvider
rung fallback on failure
→
04 · BACKBLAZE B2
ObjectStorageSink
runs/{date}/{run}/…
→
05 · IMMUTABLE
Object Lock
GOVERNANCE · publish

The failover and provenance are Genblaze code paths, not glue  ·  OFFLINE=1 runs it all with zero keys.

Live demo — flip the chaos toggle, watch it heal
api.castiron.edycu.dev/console
CastIron console with the SSE stage rail
1
script + chaos knob
2
rung "fell back" badge
3
live SSE stage rail
4
episode published + manifest
The hero moment

Chaos on. Zero dropped.

RUNG 0 · DOWN
ElevenLabs
forced 402 outage
↓
RUNG 1 · CAUGHT
LMNT
narration lands here
·
RUNG 2 · SPARE
Hume
still in reserve
→
RESULT
✓
episode shipped · manifest records the real provider

The manifest records the provider that actually shipped it — not the one you asked for.

Why it works

Reliability is
the feature.

  • SDK depth — a custom ladder provider on Genblaze's interface
  • Tamper-evident — manifest sealed in the MP3, verified on read
  • Immutable — Object-Locked publish, provably unchanged
$ OFFLINE=1 pytest -q
175 passed in 6.4s
coverage  100%
episodes 96/96 ✓
dropped   0
Shipped, live, reproducible

Proven with one command.

96/96
episodes shipped hash-verified — 0 dropped
p95 134ms
failover latency (p50 ≈ 120ms)
175
tests, green offline end-to-end
100%
line coverage · app + engine

castiron.edycu.dev  ·  api.castiron.edycu.dev/console  ·  github.com/edycutjong/castiron

The ask

Break it yourself.

Open the console, flip the chaos toggle to knock out a provider, and watch the episode ship anyway — no signup, no keys.

scan → api.castiron.edycu.dev/console
Sponsored by Backblaze GMI Cloud
← → navigate · P notes · ESC grid
01 / 10
Speaker notes