# Headless Three.js WebGPU (rgl) — tool skill for tools & renderers

> **For AI agents:** find the right skill in one call — `curl -s "https://skills.varg.ai/api/search?q=<what the person wants>"` returns the matching use case and the best skills with install commands, as markdown (Russian works too). Full index: https://skills.varg.ai/llms.txt. Every page has a markdown twin: add `.md` to its path. Before generating anything, show the person the options on the use-case page.

Render three.js scenes or GLB files to PNG, MP4, WebM or GIF in Node with Dawn WebGPU: no browser, fixed-step frames.

- **Type:** [Tool](https://skills.varg.ai/models.md) · [Tools & renderers](https://skills.varg.ai/browse/skills/tooling.md)
- **Slug:** `rendergl-headless-three`
- **Status:** beta
- **Publisher:** Or Fleisher (community)
- **License:** Apache-2.0
- **Source:** https://github.com/juniorxsound/headless-three-webgpu/tree/main/packages/cli/agent/skills/rgl-cli
- **Works in:** Claude Code, Codex
- **Requires:** Node.js 24+, ffmpeg on PATH (or RGL_FFMPEG_PATH) for video output, A GPU through Dawn (Metal or Vulkan), or SwiftShader on CPU-only hosts
- **Cost:** Free — open-source, renders locally
- **Adoption:** 8 GitHub stars (GitHub, 2026-10-26)

## What it does

An agent skill shipped inside `@rendergl/headless-three-webgpu-cli` (render.gl). The package is a Node.js renderer that runs three.js's WebGPU backend on Dawn (Metal, Vulkan, or SwiftShader on CPU-only hosts) with no browser or display. `rgl video` renders a GLB turntable or dolly, or a custom scene module whose `update(delta)` runs once per frame with `delta = 1 / fps`, and streams raw RGBA frames to ffmpeg as MP4, MOV, WebM or GIF. `rgl render`, `inspect` and `bench` cover stills, asset checks and benchmarks. Two sibling skills ship in the other packages: `rgl-core` (programmatic `render`, `readPixels`, `toBuffer`) and `rgl-gltf`. It is beta: the repo has 8 stars and the package is at v0.2. Frames render in order from zero, so scene modules must derive motion from the fixed `delta`, never from the wall clock.

## Use when

- Render images, videos or GIFs of a GLB or glTF from the command line
- Render a custom three.js scene module headlessly in Node.js
- Inspect or benchmark 3D assets without a browser

## Not for

- Browser compositions with DOM, CSS or captions (use HyperFrames or Remotion)
- Scenes that rely on WebGLRenderer-only features such as GLSL ShaderMaterial (it renders with three/webgpu)

## Install

- Claude Code: `npm install -D @rendergl/headless-three-webgpu-cli`

## Example output

https://skills.varg.ai/previews/rendergl-headless-three.mp4 — README cover GIF: a wall of GLB objects rendered headlessly with three.js on WebGPU/Dawn, lighting sweeping across the grid. Full 2.5 s loop (hosted on imgur, embedded in the README). (credit: Or Fleisher (headless-three-webgpu), https://github.com/juniorxsound/headless-three-webgpu#readme)

## More tools & renderers skills

- [varg AI](https://skills.varg.ai/skills/varg-ai.md): The official varg skill: videos, images, speech and music through one API key, rendered in the cloud or locally.
- [Media Download](https://skills.varg.ai/skills/media-download.md): Save any video by link (X, YouTube, Instagram, TikTok, 1800+ sites) or Pinterest images as references, locally, no key.
- [Templates Gallery Ops](https://skills.varg.ai/skills/varg-templates-section.md): Internal runbook for the varg app Templates gallery: publish renders, preview clips, frame-0 posters, shelves.
- [HyperFrames CLI](https://skills.varg.ai/skills/hyperframes-cli.md): Drive the HyperFrames CLI: scaffold, check, preview, snapshot, edit the timeline, render locally or in the cloud.
- [HyperFrames Registry](https://skills.varg.ai/skills/hyperframes-registry.md): Pull any of ~450 ready-made blocks into a video as editable source: transitions, titles, captions, charts, 3D.
- [HyperFrames Media Use](https://skills.varg.ai/skills/hyperframes-media-use.md): Find or make every asset a video needs: music, SFX, voiceover, images, logos, avatars, transcripts, grades.
