Summary
Add a provider abstraction layer so users can route to Runway, Kling, Veo, or any future video gen API without rewriting the pipeline.
Proposed approach
- Define a
VideoProvider protocol in app/services/providers/base.py
- Move current ModelArk logic to
app/services/providers/byteplus.py
- Add provider selection via
VIDEO_PROVIDER=byteplus env var
- Each provider implements:
create_task(), poll_status(), get_result()
Why this matters
- Removes vendor lock-in
- Positions SeedCamp as the routing layer, not an API wrapper
- Enables cost-optimized routing across providers
Summary
Add a provider abstraction layer so users can route to Runway, Kling, Veo, or any future video gen API without rewriting the pipeline.
Proposed approach
VideoProviderprotocol inapp/services/providers/base.pyapp/services/providers/byteplus.pyVIDEO_PROVIDER=byteplusenv varcreate_task(),poll_status(),get_result()Why this matters