--- title: CLI sidebarTitle: "CLI reference" description: "Create, preview, and render HTML video compositions from the command line." --- This page lists every command and every flag. If you are still deciding which command you need, the [CLI guide](/developers/cli) is the shorter route. The installed version is always the authority. Run `npx hyperframes --help` to see exactly what your copy accepts. ```bash # No install needed npx hyperframes # Or install once npm install -g hyperframes ``` ## Find your command | You want to | Use | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Start a project | [`init`](#init), [`add`](#add), [`catalog`](#catalog) | | Bring in source material | [`capture`](#capture), [`transcribe`](#transcribe), [`tts`](#tts), [`remove-background`](#remove-background), [`media-treatment`](#media-treatment), [`beats`](#beats), [`normalize-audio`](#normalize-audio) | | Look at it, or share it | [`preview`](#preview), [`present`](#present-and-play), [`play`](#present-and-play), [`publish`](#publish) | | Find problems | [`lint`](#lint), [`check`](#check), [`snapshot`](#snapshot), [`keyframes`](#keyframes), [`compare`](#compare-and-grade-compare), [`grade-compare`](#compare-and-grade-compare) | | Make a file | [`render`](#render), [`benchmark`](#benchmark) | | Render somewhere else | [`cloud`](#hyperframes-cloud), [`lambda`](#hyperframes-lambda), [`cloudrun`](#hyperframes-cloudrun) | | Fix your setup | [`doctor`](#doctor), [`browser`](#browser), [`upgrade`](#upgrade), [`docs`](#docs), [`info`](#info-and-compositions), [`compositions`](#info-and-compositions) | | Connect other tools | [`auth`](#hyperframes-auth), [`skills`](#skills), [`figma`](#figma-and-events), [`telemetry`](#telemetry), [`feedback`](#feedback) | `validate`, `inspect`, and `layout` still work but are [deprecated](#deprecated-validate-inspect-and-layout). Use `check` instead. ## What every command shares Read this once and skip the repetition below. **The project directory.** Most commands take it as the first argument and default to the current directory: `npx hyperframes check ./my-video`. A few take it as a flag instead — `add`, `transcribe`, `feedback`, and `skills` use `--dir`. **`--json` for agents and scripts.** Almost every command accepts it. The payload is wrapped with a `_meta` field so a script can spot an outdated CLI from any command's output, without a second call: ```json { "name": "my-video", "duration": 10.5, "_meta": { "version": "0.1.4", "latestVersion": "0.1.5", "updateAvailable": true } } ``` The version numbers come from a cache refreshed at most once a day. `--json` never makes a network request of its own. Deprecated commands add `_meta.deprecated: true`. **Flags, not prompts.** A missing required flag fails immediately with a usage example rather than waiting for input. Two commands are interactive on a TTY: `init` prompts for a project name and example unless you pass `--non-interactive`, and `catalog --human-friendly` opens a picker. Nothing else prompts, apart from confirmations you can skip with `--yes` or `--no-confirm`. **Version notices.** An owned install (npm, bun, pnpm, brew) updates itself quietly in the background and prints one line on the next run: `hyperframes auto-updated to v0.1.5`. It never crosses a major version. Anywhere it cannot install — `npx`, an unknown installer — you get a notice instead: ``` Update available: 0.1.4 → 0.1.5 Run: npx hyperframes@latest ``` Both stay silent in CI and non-TTY shells. `HYPERFRAMES_NO_UPDATE_CHECK=1` turns off the check, the install, and the notice. ## Create a project ### `init` Scaffold a new composition project from an example. ```bash # Agents and CI — every input from a flag npx hyperframes init my-video --example blank --video video.mp4 --non-interactive # With the Tailwind browser runtime npx hyperframes init my-video --example blank --tailwind # Interactive on a TTY npx hyperframes init my-video ``` | Flag | Description | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `--example, -e` | Example to scaffold. Required with `--non-interactive`. See [Examples](/examples) for the full list. | | `--resolution` | Canvas preset: `landscape` (1920×1080), `portrait` (1080×1920), `landscape-4k` (3840×2160), `portrait-4k` (2160×3840), `square` (1080×1080), `square-4k` (2160×2160). Aliases: `1080p`, `4k`, `uhd`, `1080p-square`, `square-1080p`, `4k-square`. Default: keep template dimensions. | | `--video, -v` | Path to a video file (MP4, WebM, MOV) | | `--audio, -a` | Path to an audio file (MP3, WAV, M4A) | | `--tailwind` | Add Tailwind CSS browser-runtime support to the scaffolded HTML | | `--non-interactive` | Never prompt. For agents and CI. | | `--skip-transcribe` | Skip the automatic Whisper transcription | | `--model` | Whisper model for that transcription (for example `small.en`, `medium.en`, `large`) | | `--language` | Language code for transcription (`en`, `es`, `ja`, …). Filters out speech in other languages. | | `--skip-skills` | Currently ignored. Set `HYPERFRAMES_SKIP_SKILLS=1` to opt out in CI or tests. | Pass `--video` or `--audio` and the CLI transcribes the audio with Whisper and patches the captions into the composition for you. `--skip-transcribe` turns that off. `--tailwind` injects the pinned Tailwind v4 browser runtime and exposes a `window.__tailwindReady` promise that renders wait on before capturing frame 0. Use the `/hyperframes-core` skill when editing these projects, so agents follow v4 CSS-first patterns instead of v3 `tailwind.config.js` patterns. The browser runtime is meant for scaffolded projects and quick iteration — for offline or locked-down production renders, compile Tailwind to CSS and link the stylesheet. After scaffolding, `init` checks and installs the core AI skills from the current GitHub source. See [`skills`](#skills). ### `add` Install one item from the registry into a project you already have. [`init`](#init) scaffolds whole projects; `add` drops in a **block** (a sub-composition scene) or a **component** (an effect or snippet). ```bash npx hyperframes add claude-code-window # a block npx hyperframes add shader-wipe # a component npx hyperframes add captions # every block with this tag npx hyperframes add shader-wipe --dir ./my-video npx hyperframes add shader-wipe --no-clipboard --json # headless / CI ``` The positional name is a registry item, or a tag — a tag installs every block carrying it. `--dir` picks the project directory, `--json` prints the written files and paste snippet, and `--no-clipboard` skips the clipboard copy for CI. Every install produces files plus a **paste snippet**: the `