WaveSpeedAI

Generate Images and Video Inside Gemini CLI with the WaveSpeed Extension

Install the WaveSpeed extension in Gemini CLI and the agent can search the live model catalog, read input schemas, and run any image, video, audio, or 3D model — with a price check before every run.

By WaveSpeedAI2 min read

Gemini CLI’s extension system packages context, commands, and agent skills into one installable unit. The WaveSpeed extension bundles the wavespeed skill, so a Gemini CLI agent mid-task can produce a hero image, edit an asset, or animate a still — every model on wavespeed.ai is one wavespeed run <model-id> command.

Prerequisites

  • Node.js ≥ 18
  • The CLI: npm install -g @wavespeed/cli
  • A WaveSpeed API key — wavespeed login opens the key page and handles the rest

Install

gemini extensions install https://github.com/WaveSpeedAI/wavespeed-gemini-extension

That’s the whole setup. The extension ships a small context file plus the skill; Gemini CLI activates the skill when a task calls for media generation.

What the agent does with it

The skill teaches one pattern — find, inspect, run:

# 1. FIND a model in the live catalog
wavespeed models "seedream"
wavespeed models --type image-to-video --popular

# 2. INSPECT its real input schema (fetched live, per model)
wavespeed run bytedance/seedream-v5.0-pro -h

# 3. RUN it, reading the result as JSON
wavespeed run bytedance/seedream-v5.0-pro \
  -p "a cyberpunk skyline at golden hour" \
  -i aspect_ratio="16:9" -i resolution="2k" --json

Local files go through the @path marker — the CLI uploads the file and substitutes its hosted URL in one step:

# Edit a local image
wavespeed run bytedance/seedream-v5.0-pro/edit \
  -p "replace the background with a sunlit kitchen" \
  -i images='["@./input.jpg"]' --json

# Animate a local still
wavespeed run bytedance/seedance-2.5/image-to-video \
  -p "subtle parallax, gentle wind" -i image=@./hero.jpg --json

Cost control

wavespeed price bytedance/seedream-v5.0-pro -i resolution=2k   # quote, no charge
wavespeed balance

Many models bill from an input — audio duration, frame count. Quote without those and the formula collapses to the model’s base price, the floor of its range; the command names the inputs it was blind to (unpriced_inputs in --json). The amount actually charged for a run is authoritative.

Sharp edges

  • Bare paths are not uploaded. -i image=./photo.jpg sends the literal string. Use @./photo.jpg.
  • Don’t invent model IDs — confirm via wavespeed models or wavespeed schema <id> first.
  • Always --json on runs so the agent reads outputs[0] programmatically.

Where things live

Share