Why
ROADMAP Phase 4 lists "Multi-provider T2I in scene build" — currently the help text claims OpenAI-only but the code already supports Gemini, and Grok routing is missing entirely.
State of code (2026-04-29)
packages/cli/src/commands/scene.ts:1256 — vibe scene build --image-provider <name> help reads "openai (only one supported in v0.60)". This is misleading — the underlying executor at line 894 reads (opts.imageProvider ?? "gemini").toLowerCase() and the validator at line 896 already accepts both gemini and openai.
packages/cli/src/commands/scene.ts:519 — vibe scene add --image-provider <name> correctly advertises "Image provider: gemini, openai".
- No Grok / xAI image provider routing in either subcommand.
So today: scene build --image-provider gemini actually works, the user just isn't told. And Grok is unreachable.
Scope
Out of scope
- I2V (motion-video backdrops) — tracked separately
Reference
- ROADMAP.md Phase 4 "Open items in Phase 4 (v0.61+ candidates)"
- Asset-gen block:
packages/cli/src/commands/scene.ts:889-920
Why
ROADMAP Phase 4 lists "Multi-provider T2I in
scene build" — currently the help text claims OpenAI-only but the code already supports Gemini, and Grok routing is missing entirely.State of code (2026-04-29)
packages/cli/src/commands/scene.ts:1256—vibe scene build --image-provider <name>help reads "openai (only one supported in v0.60)". This is misleading — the underlying executor at line 894 reads(opts.imageProvider ?? "gemini").toLowerCase()and the validator at line 896 already accepts bothgeminiandopenai.packages/cli/src/commands/scene.ts:519—vibe scene add --image-provider <name>correctly advertises"Image provider: gemini, openai".So today:
scene build --image-provider geminiactually works, the user just isn't told. And Grok is unreachable.Scope
scene buildhelp text (scene.ts:1256) to match actual support:"Image provider: gemini, openai, grok"(or whatever ships)scene.ts:889-920(mirror the OpenAI branch —XAI_API_KEYenv, GrokImageProvider from@vibeframe/ai-providers)--image-provideran enum (commander.choices()or zod) so invalid values fail at parse time instead of asset-gen time_shared/scene-render.test.tsstyle — dry-run snapshot for each provider--describeenvelope (CLI UX audit: --json schema, --describe coverage, exit codes #33) should expose the new enum valuesOut of scope
Reference
packages/cli/src/commands/scene.ts:889-920