Skip to content

feat: add Seedream (ByteDance Volcengine) as image generation provider#881

Open
richardds5 wants to merge 1 commit intogarrytan:mainfrom
richardds5:feat/seedream-provider
Open

feat: add Seedream (ByteDance Volcengine) as image generation provider#881
richardds5 wants to merge 1 commit intogarrytan:mainfrom
richardds5:feat/seedream-provider

Conversation

@richardds5
Copy link
Copy Markdown

Summary

  • Add multi-provider abstraction for the design binary's image generation pipeline
  • Implement ByteDance Seedream provider via Volcengine Ark API (/v3/images/generations)
  • Users can switch providers with --provider seedream flag or GSTACK_DESIGN_PROVIDER env var
  • Auto-maps OpenAI-style sizes to Seedream's minimum pixel requirements (3.7M+ pixels)
  • Vision tasks (check, diff, memory, design-to-code) remain OpenAI-only — Seedream is pure image gen

Usage

# Use Seedream for image generation
$D generate --provider seedream --brief "..." --output mockup.png

# Or via environment variable
GSTACK_DESIGN_PROVIDER=seedream $D generate --brief "..."

# Custom model (default: doubao-seedream-5-0-260128)
SEEDREAM_MODEL=doubao-seedream-4-5-251128 $D generate --provider seedream --brief "..."

Auth

Seedream uses Volcengine Ark API key:

  • ARK_API_KEY environment variable, or
  • ~/.gstack/ark.json: { "api_key": "..." }

Files changed

File Change
design/src/providers.ts NewImageProvider interface + OpenAI/Seedream implementations
design/src/auth.ts Add resolveArkApiKey() / saveArkApiKey()
design/src/cli.ts Thread --provider flag to all image gen commands
design/src/commands.ts Add --provider to generate/variants/iterate/evolve
design/src/generate.ts Use provider abstraction instead of hardcoded OpenAI
design/src/variants.ts Same
design/src/iterate.ts Same; non-OpenAI providers skip threading, use fresh gen
design/src/evolve.ts Vision analysis stays OpenAI; image gen uses selected provider

Test plan

  • Seedream generate: tested end-to-end with ARK_API_KEY, produced 2496x1664 JPEG dashboard mockup
  • OpenAI path: correctly exits with setup guidance when no key present (no regression)
  • Build: bun build compiles cleanly with all 17 modules
  • Existing tests: bun test passes (pre-existing golden file failures unrelated)

🤖 Generated with Claude Code

Add multi-provider support to the design binary. Users can now choose
between OpenAI (default) and ByteDance Seedream for text-to-image
generation via `--provider seedream` or `GSTACK_DESIGN_PROVIDER=seedream`.

- New `providers.ts`: ImageProvider interface + OpenAI/Seedream implementations
- Auth: add ARK_API_KEY / ~/.gstack/ark.json resolution for Seedream
- CLI: thread `--provider` flag through generate, variants, iterate, evolve
- Size mapping: auto-upscale to Seedream's minimum pixel requirements
- Vision tasks (check, diff, memory) remain OpenAI-only (no Seedream vision)
- Default Seedream model: doubao-seedream-5-0-260128 (overridable via SEEDREAM_MODEL)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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