varg-ai
Generate AI videos, images, speech, and music using varg. Use when creating videos, animations, talking characters, slideshows, product showcases, social content, or single-asset generation. Supports zero-install cloud rendering (just API key + curl) and full local rendering (bun + ffmpeg). Triggers: "create a video", "generate video", "make a slideshow", "talking head", "product video", "generate image", "text to speech", "varg", "vargai", "render video", "lip sync", "captions". Skill: varg-ai Owner: securityqq Summary: Generate AI videos, images, speech, and music using varg. Use when creating videos, animations, talking characters, slideshows, product showcases, social content, or single-asset generation. Supports zero-install cloud rendering (just API key + curl) and full local rendering (bun + ffmpeg). Triggers: "create a video", "generate video", "make a slideshow", "talking head", "pro
Rank
62
Safety
84
Downloads
2.1k
Updated
Oct 9, 2026
Version
2.0.10
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 2.1K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 2.1K downloadsadoption · observed Oct 9, 2026
- Latest release
- 2.0.10release · observed Oct 1, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s176bnpxywr0976gp92hxh2ksn83ghgk:varg-ai- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-securityqq-varg-ai/snapshot"
Documentation
CLAWHUB
146,985 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: varg-ai
description: >-
Generate AI videos, images, speech, and music using varg.
Use when creating videos, animations, talking characters, slideshows,
product showcases, social content, or single-asset generation.
Supports zero-install cloud rendering (just API key + curl) and
full local rendering (bun + ffmpeg).
Triggers: "create a video", "generate video", "make a slideshow",
"talking head", "product video", "generate image", "text to speech",
"varg", "vargai", "render video", "lip sync", "captions".
license: MIT
metadata:
author: vargHQ
version: "2.0.4"
openclaw:
requires:
env:
- VARG_API_KEY
anyBins:
- curl
- bun
primaryEnv: VARG_API_KEY
homepage: https://varg.ai
compatibility: >-
Requires VARG_API_KEY (get at https://varg.ai).
Cloud mode: curl only (zero dependencies).
Local mode: bun runtime + ffmpeg.
allowed-tools: Bash(bun:*) Bash(bunx:*) Bash(npx:*) Bash(curl:*) Bash(mkdir:*) Bash(echo:*) Bash(chmod:*) Read Write Edit
---
## Version Check (run once per session)
This skill is version **2.0.4**. Before first use each session, check for updates:
```bash
curl -sf https://raw.githubusercontent.com/vargHQ/skills/main/varg-ai/SKILL.md | grep 'version:' | head -1
```
If the remote version is newer than 2.0.4, update and re-read this file:
```bash
npx -y skills update
```
## Setup (REQUIRED before first use)
Before generating anything, check authentication and determine rendering mode.
**Do NOT run interactive CLI tools** (like `bunx vargai init`) -- they require stdin which agents cannot provide. Use the curl-based flow below instead.
### 1. Check for API key
```bash
echo "${VARG_API_KEY:-}" && cat ~/.varg/credentials 2>/dev/null
```
If `VARG_API_KEY` is set (via env or credentials file), skip to step 2.
If neither exists, authenticate the user. Try Option A first, fall back to Option B.
**Option A: User already has an API key**
Ask the user if they have a `VARG_API_KEY`. If yes, tell them to export it in their terminal:
```bash
export VARG_API_KEY=<their_key>
```
**Important:** Do NOT ask the user to paste the raw key to you. Ask them to run the `export` command themselves. Then skip to "Save credentials" below.
**Option B: Sign up / sign in via email (OTP)**
1. Ask the user for their **email address**.
2. Send a one-time code to their email:
```bash
curl -s -X POST https://app.varg.ai/api/auth/cli/send-otp \
-H "Content-Type: application/json" \
-d '{"email":"USER_EMAIL"}'
```
3. Tell the user: **"Check your inbox for a 6-digit verification code from varg.ai"**
4. Ask the user for the code, then verify and capture the response in one step:
```bash
VARG_AUTH=$(curl -s -X POST https://app.varg.ai/api/auth/cli/verify-otp \
-H "Content-Type: application/json" \
-d '{"email":"USER_EMAIL","code":"THE_6_DIGIT_CODE"}')
export VARG_API_KEY=$(echo "$VARG_AUTH" | grep -o '"api_key":"[^"]*"' | cut -d'"' -f4)
echo "Authenticated. Balance: $(echo _meta.json
{
"ownerId": "kn78fhj0k52j22bzk7c0d3pt6n8355bj",
"slug": "varg-ai",
"version": "2.0.10",
"publishedAt": 1790889113123
}references/byok.md
# BYOK (Bring Your Own Key)
> **BYOK via the varg API is NOT available in v2.** The v1 `X-Provider-Key-*` headers were not carried over, and passing provider keys in API request bodies is not supported — external providers (fal, elevenlabs, etc.) always run on varg pooled keys with metered credit billing. Do NOT tell users they can get "$0 varg billing" through the API. BYOK support for v2 is planned.
## What works today
### 1. varg credits (the API path — default)
One `VARG_API_KEY`, all providers, metered billing:
```bash
curl -X POST https://api.varg.ai/v2/image \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "nano_banana_pro", "prompt": "a sunset over mountains"}'
```
- Estimate cost before running: `POST /v2/estimate` (same body, no job created)
- Check balance: `GET /v2/billing/balance`
- Cache hits are always free (`actual_cost_cents: 0`)
### 2. Direct provider modules in the local SDK
For **local rendering only** (`bunx vargai render`), the SDK ships direct provider modules that call providers with **your own keys from env** — bypassing varg entirely. No varg billing, but also no varg caching or file storage.
```tsx
/** @jsxImportSource vargai */
import { Render, Clip, Image } from "vargai/react"
import { fal } from "vargai/ai"
// Uses FAL_KEY / FAL_API_KEY from env — billed by fal directly
const img = Image({
model: fal.imageModel("nano_banana_pro"),
prompt: "a cabin in mountains at sunset",
aspectRatio: "16:9"
})
export default (
<Render width={1920} height={1080}>
<Clip duration={3}>{img}</Clip>
</Render>
)
```
Env keys per provider:
| Provider | Env var | Get key at |
|----------|---------|------------|
| fal.ai | `FAL_KEY` or `FAL_API_KEY` | fal.ai/dashboard/keys |
| ElevenLabs | `ELEVENLABS_API_KEY` | elevenlabs.io/app/settings/api-keys |
| Higgsfield | `HIGGSFIELD_API_KEY` | higgsfield.ai |
| OpenAI | `OPENAI_API_KEY` | platform.openai.com |
| Google | `GOOGLE_API_KEY` | aistudio.google.com |
| Together | `TOGETHER_API_KEY` | together.ai |
| Groq | `GROQ_API_KEY` | console.groq.com |
`.env` example:
```bash
# For the varg API + cloud render (billed in varg credits)
VARG_API_KEY=varg_xxx
# For local rendering with direct provider modules (billed by providers)
FAL_KEY=fal_xxx
ELEVENLABS_API_KEY=xxx
```
## What does NOT work
- `X-Provider-Key-Fal` / `X-Provider-Key-ElevenLabs` / etc. headers → **ignored in v2**
- Provider keys in `provider_options` of API requests → not supported for external providers; the request bills varg credits regardless
- `providerKeys` in cloud render (`POST /v2/render`) → cloud render sub-generations bill varg credits
## Decision guide
| Scenario | Use |
|----------|-----|
| API access (curl, agents, cloud render) | **varg credits** — the only supported path |
| Local rendering with existing provider accounts | **Direct provider modules** (`fal.imageModel(...)` + env keys) |
| Getting started, prototyping | **varg creditreferences/cloud-render.md
# Cloud Render Mode
Send TSX code to `POST https://api.varg.ai/v2/render`. No local dependencies needed -- just a `VARG_API_KEY` and `curl`.
The render service handles all asset generation (images, video, speech, music) and video composition (ffmpeg) in the cloud. Rendering is a regular varg job: submit, poll `GET /v2/jobs/{id}`, get the final `.mp4` URL from `output.outputs[0].url`.
## TSX Format
In cloud mode, **no imports are needed**. All components and providers are auto-injected as globals.
**Available globals:**
| Category | Names |
|----------|-------|
| Components | `Render`, `Clip`, `Image`, `Video`, `Speech`, `Music`, `Captions`, `Title`, `Subtitle`, `Overlay`, `Split`, `Grid`, `Slot`, `Slider`, `Swipe`, `Packshot`, `TalkingHead` |
| Providers | `varg` (recommended), `fal`, `elevenlabs`, `higgsfield`, `openai`, `replicate`, `google`, `together` |
| Data | `VOICES` (voice name to ElevenLabs ID mapping) |
The user's `VARG_API_KEY` (from the `Authorization` header) is automatically used for all AI generation calls. No `createVarg()` needed. Use `varg.*` for all models -- same syntax as local render mode.
### Minimal Example
```tsx
const img = Image({
model: varg.imageModel("nano_banana_pro"),
prompt: "a cozy cabin in mountains at sunset, warm golden light",
aspectRatio: "16:9"
});
export default (
<Render width={1920} height={1080}>
<Clip duration={3}>{img}</Clip>
</Render>
);
```
### Full Example (video + speech + music + captions)
```tsx
const hero = Image({
model: varg.imageModel("nano_banana_pro"),
prompt: "cinematic portrait of a warrior princess, golden hour lighting",
aspectRatio: "9:16"
});
const scene = Video({
model: varg.videoModel("kling_v3"),
prompt: { text: "warrior walks forward through misty forest, camera follows", images: [hero] },
duration: 5
});
const voice = Speech({
model: varg.speechModel("eleven_v3"),
voice: "rachel",
children: "In a world beyond imagination..."
});
export default (
<Render width={1080} height={1920} fps={30}>
<Music model={varg.musicModel("music_v1")} prompt="epic orchestral, rising tension" duration={10} volume={0.3} />
<Clip duration={5}>
{scene}
<Title position="bottom">The Last Guardian</Title>
</Clip>
<Captions src={voice} style="tiktok" withAudio />
</Render>
);
```
## Restrictions
- Must have `export default` returning a `<Render>` element
- No named exports (`export const x = ...` is forbidden)
- No external imports (`vargai/*` imports are allowed but stripped -- globals replace them)
- No `require()` calls
- Image `src` values must be `http://` or `https://` URLs
- Max 5 concurrent jobs, 10 requests/minute per user
- 15-minute job timeout
## Workflow
### Step 1: Write TSX code to a file
Write the TSX code to a local `.tsx` file for reference and iteration:
```bash
cat > video.tsx << 'EOF'
const img = Image({
model: varg.imageModel("nano_banana_pro"),
prompt: "a sunset over mountains",
aspectRatio: "references/common-errors.md
# Common Errors & Debugging
## Duration Constraint Violations
### kling_v2_5: "422 Unprocessable Entity"
**Cause**: kling_v2_5 only accepts duration `5` or `10`. Any other value (3, 7, 12, etc.) fails.
**Fix**: Use exactly `duration: 5` or `duration: 10`. Or switch to kling_v3 which accepts any integer 3-15.
### kling_v3: duration must be integer 3-15
**Cause**: Non-integer or out-of-range duration.
**Fix**: Use integers only: `3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15`.
---
## Multiple Images in Video Prompt
**Error**: Generation fails or produces unexpected results.
**Cause**: `Video({ prompt: { images: [img1, img2] } })` -- passing more than one image.
**Fix**: Pass exactly ONE image:
```tsx
// CORRECT
Video({ prompt: { text: "...", images: [singleImage] }, ... })
// WRONG
Video({ prompt: { text: "...", images: [img1, img2] }, ... })
```
---
## Wrong Provider Options Namespace
**Error**: Provider options are silently ignored.
**Cause**: Using `providerOptions: { fal: {...} }` when generating through the varg gateway.
**Fix**: Use the `varg` namespace when using `createVarg()`:
```tsx
// CORRECT (gateway)
providerOptions: { varg: { generate_audio: true } }
// WRONG (gateway)
providerOptions: { fal: { generate_audio: true } }
// CORRECT (direct fal provider)
providerOptions: { fal: { generate_audio: true } }
```
Rule: match the namespace to the provider you're using. Gateway = `varg`. Direct fal = `fal`.
---
## JSX Syntax for Media Creation
**Error**: Image/Video/Speech don't generate anything.
**Cause**: Using JSX syntax `<Image prompt="..." />` instead of function calls.
**Fix**: Media generation must use function calls:
```tsx
// CORRECT
const img = Image({ model: varg.imageModel("nano_banana_pro"), prompt: "..." })
// WRONG
const img = <Image model={varg.imageModel("nano_banana_pro")} prompt="..." />
```
JSX is only for composition components: `<Render>`, `<Clip>`, `<Music>`, `<Captions>`, `<Title>`, `<Overlay>`, `<Split>`, `<Grid>`, `<Packshot>`.
---
## nano_banana_pro/edit: Missing Images
**Error**: "images is required" or generation produces generic image ignoring reference.
**Cause**: Using `nano_banana_pro/edit` with a plain string prompt instead of `{ text, images }`.
**Fix**:
```tsx
// CORRECT
Image({
model: varg.imageModel("nano_banana_pro/edit"),
prompt: { text: "same person on a beach", images: [referenceImage] }
})
// WRONG
Image({
model: varg.imageModel("nano_banana_pro/edit"),
prompt: "same person on a beach"
})
```
---
## nano_banana_pro (non-edit): Wrong Prompt Format
**Error**: Unexpected results or errors.
**Cause**: Passing `{ text, images }` object to `nano_banana_pro` (non-edit variant).
**Fix**: `nano_banana_pro` (without `/edit`) takes a plain string:
```tsx
// CORRECT
Image({ model: varg.imageModel("nano_banana_pro"), prompt: "a sunset over the ocean" })
// WRONG
Image({ model: varg.imageModel("nano_banana_pro"), prompt: { text: "a sunset", images: [] } })
```
---
## AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/securityqq/skills/varg-ai",
"sourceUrl": "https://clawhub.ai/securityqq/skills/varg-ai",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T19:15:08.790Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-securityqq-varg-ai/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-securityqq-varg-ai/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T19:15:08.790Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2.1K downloads",
"href": "https://clawhub.ai/securityqq/varg-ai",
"sourceUrl": "https://clawhub.ai/securityqq/varg-ai",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T19:15:08.790Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.0.10",
"href": "https://clawhub.ai/securityqq/varg-ai",
"sourceUrl": "https://clawhub.ai/securityqq/varg-ai",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-01T21:11:53.123Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-securityqq-varg-ai/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-securityqq-varg-ai/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.0.10",
"description": "Auto-published from vargHQ/skills@99e3cdc7",
"href": "https://clawhub.ai/securityqq/varg-ai",
"sourceUrl": "https://clawhub.ai/securityqq/varg-ai",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-01T21:11:53.123Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
