The npm scope becomes @hanzo: the CLI is @hanzo/frame, every library is @hanzo/frame-<name>. Versions go to 0.7.82. Credentials come from Hanzo IAM. `hanzo login` runs the IAM device flow and writes ~/.hanzo/credentials.json; unattended runs read HANZO_API_KEY delivered from Hanzo KMS. src/api.ts is the one place that knows the base URL and the credential, replacing the OAuth client, PKCE flow, loopback server, token store, and ~/.heygen credential file. `frames auth` keeps only `status`, since this CLI no longer issues credentials. Publish and feedback post to api.hanzo.ai/v1 without the HeyGen routing header. The HeyGen-hosted `frames cloud` render target is gone; local, AWS Lambda, and Google Cloud Run remain. Voice resolves to Hanzo speech (POST /v1/audio/speech) before local Kokoro; music resolves to local MusicGen. No analytics project is configured, so the CLI and studio send no events — they previously reported to HeyGen's. Drops the HeyGen wordmark from the studio header and the HeyGen promo render fixture with its brand assets and fonts.
@hanzo/frame
CLI for creating, previewing, and rendering HTML video compositions.
Install
npm install -g @hanzo/frame
Or use directly with npx:
npx @hanzo/frame <command>
Both install the frames command.
Requirements: Node.js >= 22, FFmpeg
Commands
init
Scaffold a new Hyperframes project from a template:
npx frames init my-video
cd my-video
preview
Start the live preview studio in your browser:
npx frames preview
# Studio running at http://localhost:3002
npx frames preview --port 4567
render
Render a composition to MP4. Run from the project directory; the positional
argument is the project directory (not a file), so render the project's
index.html directly, or point at a specific composition file with -c:
npx frames render -o output.mp4
npx frames render -c ./my-composition.html -o output.mp4
lint
Validate your Hyperframes HTML:
npx frames lint ./my-composition
npx frames lint ./my-composition --json # JSON output for CI/tooling
npx frames lint ./my-composition --verbose # Include info-level findings
By default only errors and warnings are shown. Use --verbose to also display informational findings (e.g., external script dependency notices). Use --json for machine-readable output with errorCount, warningCount, infoCount, and a findings array.
compositions
List compositions found in the current project:
npx frames compositions
benchmark
Run rendering benchmarks:
npx frames benchmark ./my-composition.html
doctor
Check your environment for required dependencies (Chrome, FFmpeg, Node.js):
npx frames doctor
browser
Manage the bundled Chrome/Chromium installation:
npx frames browser
info
Print version and environment info:
npx frames info
docs
Open the documentation in your browser:
npx frames docs
upgrade
Check for updates and show upgrade instructions:
npx frames upgrade
npx frames upgrade --check --json # machine-readable for agents
Documentation
Full documentation: frames.hanzo.ai/packages/cli
Related packages
@hanzo/frame-core— types, parsers, frame adapters@hanzo/frame-engine— rendering engine@hanzo/frame-producer— render pipeline@hanzo/frame-studio— composition editor UI