Skip to content

feat: add opt-in Fal.ai image and video generation - #147

Open
sujaysuvarna wants to merge 2 commits into
0xsline:mainfrom
sujaysuvarna:codex/fal-model-catalog
Open

feat: add opt-in Fal.ai image and video generation#147
sujaysuvarna wants to merge 2 commits into
0xsline:mainfrom
sujaysuvarna:codex/fal-model-catalog

Conversation

@sujaysuvarna

Copy link
Copy Markdown

We’re using OpenChatCut with an existing Fal.ai account and wanted to select
image and video models within its current workflow. This adds Fal.ai as an
explicit provider in the existing settings and agent tools. Selecting Fal.ai → Seedance 2.5 uses Fal; selecting a native
provider retains its existing credentials and request behavior.

Changes

  • A shared catalog supplies 9 image and 11 video choices, endpoint allowlisting,
    supported controls, settings labels, and agent tool schemas.
  • The official server-side @fal-ai/client handles uploads and queued inference.
    Model-specific validation runs before upload/submission; keys stay server-side.
  • Saved defaults and explicit model requests are supported. Without either,
    the agent asks for a model and the server rejects an unspecified selection.
  • Video checkpoints retain the endpoint and request ID, so recovery does not
    submit another paid generation. Results use the existing media import path.
  • Includes registered mocked tests, regenerated tool metadata, EN/IT settings
    text, screenshots, and user/extension documentation in FAL.md.

Image choices: Nano Banana 2/Pro, GPT Image 2, FLUX.2/Pro, Seedream 5 Pro,
Ideogram 4, Qwen Image 3, Recraft V3.

Video choices: Seedance 2.0/2.5, Kling 3.0 Standard/Pro, Kling O3 Standard/Pro,
Veo 3.1/Fast, Wan 3.0, MiniMax H3 Max, PixVerse V6.

Validation

  • Full npm test, npm run lint, and npm run build passed on the isolated feature checkout before the live-test correction below.
  • Live paid smoke tests passed for all 20 catalog models: one image for each of the 9 image choices and one short clip for each of the 11 video choices. Video tests used minimum catalog durations/resolutions and disabled audio where supported.
  • All outputs downloaded and decoded; all videos played in the local browser. Imported outputs into a test project and verified timeline playback with Veo 3.1 Fast.
  • Live testing caught Seedream's generic 1K preset returning 2K. Replaced it with explicit dimensions, added regression coverage, and confirmed a follow-up live request produces 1024×1024. Fal regression tests, lint, TypeScript checks, and production build pass after the fix.
  • 21 paid submissions total (20 model smoke tests plus one focused correction check), with no duplicate submissions. CI uses mocked transport and requires no credentials.

Screenshots

Image settings

Video settings

Scope and limitations

This supports the catalog's documented common inputs, not every model's full API.
Live coverage is one basic path per model (Kling 3 Standard image-to-video;
other videos text-to-video). It does not establish coverage of every edit/reference
mode, resolution, duration, or advanced option. The Fal settings page reports key presence; it does not
perform a live credential probe. Images retain the existing synchronous flow,
so users must check Fal history after an interrupted image request before retrying.

Related: #145 makes model IDs configurable for existing native providers. This
adds a separate Fal provider and adapters for its differing endpoint schemas;
it does not replace that work or claim to resolve arbitrary-model selection.

@sujaysuvarna
sujaysuvarna marked this pull request as ready for review September 9, 2026 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant