Dysentry was born from a simple frustration: creating AI-generated video content is fragmented, technical, and disconnected. You need to juggle multiple APIs, manage storage separately, track provenance manually, and write glue code for every new model. We wanted to build what we couldn't find—a truly agentic video production platform where creators simply describe what they want, and the system handles the rest.
What it does Dysentry is a chat-based AI video production assistant that transforms natural language into polished video content. Users describe scenes, characters, and storylines in plain English, and the platform:
Understands intent through an LLM-powered orchestrator Routes to optimal providers (Veo3, DashScope, Novita Wan 2.7, Replicate, Decart) via Genblaze Maintains visual continuity by extracting reference frames between shots Stores assets durably on Backblaze B2 with automatic provenance tracking Provides real-time feedback through streaming responses and job polling The result: a single conversation becomes a complete video production pipeline.
How we built it Architecture Frontend (React) ←→ FastAPI Backend ←→ Genblaze Orchestrator ↓ ┌───────────────┼───────────────┐ ↓ ↓ ↓ B2 Storage Video Providers LLM (TokenRouter) Key Components Agentic Orchestrator (agentic_orchestrator.py)
LLM-powered conversational agent using TokenRouter Tool-calling interface for video operations Multi-provider routing via Genblaze SDK Video Provider Router (providers/)
Unified interface across 5 providers (Genblaze-native) Smart fallback and priority-based selection Async polling and status tracking B2 Storage Integration (storage/b2.py)
Presigned URLs for third-party provider fetching Structured key organization: stories/{id}/assets/ Automatic upload after generation completes Media Tools (agent_media_tools.py)
Frame extraction for visual continuity Reference image management across scenes Download/upload workflows for B2 Challenges we ran into Provider reliability: Different APIs have different quirks—Veo3 needs specific image formats, Novita requires presigned B2 URLs for reference videos, DashScope has different rate limits. Genblaze's unified abstraction helped, but each provider still needed careful tuning.
Continuity across shots: Ensuring a character's appearance stays consistent when each shot is generated separately was tricky. We solved this with automatic frame extraction and injection as reference images.
Async orchestration: Video generation is slow (30s-2min per clip). We implemented smart polling with progress feedback so users aren't left in the dark.
Accomplishments that we're proud of Truly agentic workflow: The orchestrator doesn't just execute commands—it understands context, maintains state across conversations, and can handle ambiguous requests intelligently.
Multi-provider resilience: Built a system that gracefully handles provider failures by automatically falling back to alternatives without user intervention.
Provenance tracking: Every generated asset is stored with its generation parameters, provider, timestamp, and story context—enabling full reproducibility.
Chat UX for video production: Transformed what was a technical API integration into a natural conversation experience.
What we learned Genblaze is a game-changer for multi-provider workflows. The SDK's unified Step/Asset model made it trivial to add new providers—we added Novita in under 200 lines of code.
Storage is half the battle. In AI media pipelines, moving bytes is often harder than generating them. B2's S3-compatible API and presigned URLs made it seamless to connect storage to generation.
User intent is messy, but agentic systems can handle it. Natural language is ambiguous, but an LLM-powered orchestrator can disambiguate, ask clarifying questions, and still deliver coherent outputs.
What's next Web UI polish: Build a production-ready chat interface with visual storyboarding Scene editor: Visual timeline for arranging and editing generated clips 更多 providers: Add Kling, Runway, Luma as they become available Batch generation: Allow users to queue multiple scenes for parallel generation Version history: Track generations over time with ability to remix previous outputs
Built With
- b2
- blackblaze
- fastapi
- genblaze
- novita
- qwen
- tokenrouter
Log in or sign up for Devpost to join the conversation.