An open API service indexing awesome lists of open source software.

https://github.com/vargHQ/sdk

AI video generation SDK — JSX for videos. One API for Kling, Flux, ElevenLabs, Veed. Built on Vercel AI SDK.
https://github.com/vargHQ/sdk

ai-sdk ai-video claude-code cursor elevenlabs flux generative-ai image-to-video jsx kling lipsync seedance sora text-to-speech text-to-video typescript vercel-ai-sdk video-api video-generation wan

Last synced: 3 days ago
JSON representation

AI video generation SDK — JSX for videos. One API for Kling, Flux, ElevenLabs, Veed. Built on Vercel AI SDK.

Awesome Lists containing this project

README

          


varg — Agentic AI Video Generation SDK


Create AI videos with JSX. One SDK for Kling, Flux, ElevenLabs, Sora and more. Built on Vercel AI SDK.


npm version
npm downloads
GitHub stars
License


Docs · Dashboard · Quickstart · Models · Discord

---

**varg** is an open-source TypeScript SDK for AI video generation. One API key, one gateway — generate images, video, speech, music, lipsync, and captions through `varg.*` providers. Write videos as JSX components (like React), render locally or in the cloud.

## Get started

### For AI agents (recommended)

Install the varg skill into Claude Code, Cursor, Windsurf, or any agent that supports skills. Zero code — just prompt.

```bash
# 1. Install the varg skill
npx -y skills add vargHQ/skills --all --copy -y

# 2. Set your API key (get one at app.varg.ai)
export VARG_API_KEY=varg_live_xxx

# 3. Create your first video
claude "create a 10-second product video for white sneakers, 9:16, UGC style, with captions and background music"
```

The agent writes declarative JSX, varg handles AI generation + caching + rendering.

### For developers

```bash
# Install with bun (recommended)
bun install vargai ai

# Or with npm
npm install vargai ai

# Set up project (auth, skills, hello.tsx, cache dirs)
bunx vargai init
```

`vargai init` handles everything: signs you in, installs the agent skill, creates a starter template, and sets up your project structure.

Then render the starter template:

```bash
bunx vargai render hello.tsx
```

Or ask your AI agent to create something from scratch.

## How it works

```
Your prompt / JSX code
|
varg gateway (api.varg.ai)
/ | \ \
Kling Flux ElevenLabs Wan ... (AI providers)
\ | / /
varg render engine
|
output.mp4
```

- **One API key** (`VARG_API_KEY`) routes to all providers through the varg gateway
- **Declarative JSX** — compose videos like React components with ``, ``, ``, ``
- **Automatic caching** — same props = instant cache hit at $0. Re-render without re-generating
- **Local or cloud** — render with `bunx vargai render` locally, or submit via the Cloud Render API

## Quick examples

### Image to video

```tsx
import { Render, Clip, Image, Video } from "vargai/react";
import { varg } from "vargai/ai";

const character = Image({
prompt: "cute kawaii orange cat, round body, big eyes, Pixar style",
model: varg.imageModel("nano-banana-pro"),
aspectRatio: "9:16",
});

export default (





);
```

```bash
bunx vargai render hello.tsx
```

### With music and captions

```tsx
import { Render, Clip, Image, Video, Speech, Captions, Music } from "vargai/react";
import { varg } from "vargai/ai";

const character = Image({
model: varg.imageModel("nano-banana-pro"),
prompt: "friendly robot, blue metallic, expressive eyes",
aspectRatio: "9:16",
});

const voiceover = Speech({
model: varg.speechModel("eleven_v3"),
voice: "adam",
children: "Hello! I'm your AI assistant. Let me show you something cool!",
});

export default (







);
```

### Talking head with lipsync

```tsx
import { Render, Clip, Image, Video, Speech, Captions, Music } from "vargai/react";
import { varg } from "vargai/ai";

const voiceover = Speech({
model: varg.speechModel("eleven_v3"),
voice: "josh",
children: "With varg, you can create any videos at scale!",
});

const baseCharacter = Image({
prompt: "woman, sleek black bob hair, fitted black t-shirt, natural look",
model: varg.imageModel("nano-banana-pro"),
aspectRatio: "9:16",
});

const animatedCharacter = Video({
prompt: {
text: "woman speaking naturally, subtle head movements, friendly expression",
images: [baseCharacter],
},
model: varg.videoModel("kling-v3"),
});

export default (







);
```

## Components

| Component | Purpose | Key props |
|-----------|---------|-----------|
| `` | Root container | `width`, `height`, `fps` |
| `` | Time segment | `duration`, `transition`, `cutFrom`, `cutTo` |
| `` | AI or static image | `prompt`, `src`, `model`, `zoom`, `aspectRatio`, `resize` |
| `` | AI or source video | `prompt`, `src`, `model`, `volume`, `cutFrom`, `cutTo` |
| `` | Text-to-speech | `voice`, `model`, `volume`, `children` |
| `` | Background music | `prompt`, `src`, `model`, `volume`, `loop`, `ducking` |
| `` | Text overlay | `position`, `color`, `start`, `end` |
| `` | Subtitle text | `backgroundColor` |
| `` | Auto-generated subs | `src`, `srt`, `style`, `color`, `activeColor`, `withAudio` |
| `` | Positioned layer | `left`, `top`, `width`, `height`, `keepAudio` |
| `` | Side-by-side | `direction` |
| `` | Before/after reveal | `direction` |
| `` | Tinder-style cards | `direction`, `interval` |
| `` | Animated character | `character`, `src`, `voice`, `model`, `lipsyncModel` |
| `` | End card with CTA | `background`, `logo`, `cta`, `blinkCta` |

### Caption styles

```tsx
// word-by-word highlight
// fill left-to-right
// words bounce in
// typing effect
```

### Transitions

67 GL transitions available:

```tsx

```

## Models

All models are accessed through `varg.*` — one API key, one provider.

```typescript
import { varg } from "vargai/ai";
```

### Video

| Model | Use case | Credits (5s) |
|-------|----------|-------------|
| `varg.videoModel("kling-v3")` | Best quality, latest | 150 |
| `varg.videoModel("kling-v3-standard")` | Good quality, cheaper | 50 |
| `varg.videoModel("kling-v2.5")` | Previous gen, reliable | 50 |
| `varg.videoModel("wan-2.5")` | Good for characters | 50 |
| `varg.videoModel("minimax")` | Alternative | 50 |
| `varg.videoModel("sync-v2-pro")` | Lipsync (video + audio) | 50 |

### Image

| Model | Use case | Credits |
|-------|----------|---------|
| `varg.imageModel("nano-banana-pro")` | Versatile, fast | 5 |
| `varg.imageModel("nano-banana-pro/edit")` | Image-to-image editing | 5 |
| `varg.imageModel("flux-schnell")` | Fast generation | 5 |
| `varg.imageModel("flux-pro")` | High quality | 25 |
| `varg.imageModel("recraft-v3")` | Alternative | 10 |

### Audio

| Model | Use case | Credits |
|-------|----------|---------|
| `varg.speechModel("eleven_v3")` | Text-to-speech | 25 |
| `varg.speechModel("eleven_multilingual_v2")` | Multilingual TTS | 25 |
| `varg.musicModel()` | Music generation | 25 |
| `varg.transcriptionModel("whisper")` | Speech-to-text | 5 |

1 credit = $0.01. Cache hits are always free.

## CLI

```bash
bunx vargai login # sign in (email OTP or API key)
bunx vargai init # set up project (auth + skills + template)
bunx vargai render video.tsx # render a video
bunx vargai render video.tsx --preview # free preview with placeholders
bunx vargai render video.tsx --verbose # render with detailed output
bunx vargai balance # check credit balance
bunx vargai topup # add credits
bunx vargai run image --prompt "sunset" # generate a single image
bunx vargai run video --prompt "ocean waves" # generate a single video
bunx vargai list # list available models and actions
bunx vargai studio # open visual editor
```

## Environment

```bash
# Required — one key for everything
VARG_API_KEY=varg_live_xxx
```

Get your API key at [app.varg.ai](https://app.varg.ai). Bun auto-loads `.env` files.

Bring your own keys (optional)

You can use provider keys directly if you prefer:

```bash
FAL_API_KEY=fal_xxx # fal.ai direct
ELEVENLABS_API_KEY=xxx # ElevenLabs direct
OPENAI_API_KEY=sk_xxx # OpenAI / Sora
REPLICATE_API_TOKEN=r8_xxx # Replicate
```

See the [BYOK docs](https://docs.varg.ai/sdk/byok) for details.

## Pricing

| Action | Model | Credits | Cost |
|--------|-------|---------|------|
| Image | nano-banana-pro | 5 | $0.05 |
| Image | flux-pro | 25 | $0.25 |
| Video (5s) | kling-v3 | 150 | $1.50 |
| Speech | eleven_v3 | 25 | $0.25 |
| Music | music_v1 | 25 | $0.25 |
| Cache hit | any | 0 | $0.00 |

A typical 3-clip video costs $2-5. Cache hits are always free.

## Star History

star-history-202643

## Discord

[https://discord.com/channels/1463766525117861922/1463766526250188824
](https://discord.com/invite/VAecJay7R9)

## Contributing

See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for development setup.

## License

Apache-2.0 — see [LICENSE.md](LICENSE.md)