Summary
ML job dispatch is still hard-wired to Modal.
Evidence
- directly imports , hardcodes the app/function names, and is called by the API layer.
- There is no protocol or dispatcher abstraction equivalent to the storage backend abstraction.
Why this matters
This is the main portability gap for self-hosting or alternative worker backends.
Suggested direction
- Define a worker-dispatch protocol with implementations for Modal and local/dev execution
- Move provider-specific naming and spawn logic behind that interface
- Keep job tracking semantics unchanged for API callers
Summary
ML job dispatch is still hard-wired to Modal.
Evidence
Why this matters
This is the main portability gap for self-hosting or alternative worker backends.
Suggested direction