npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lazy-frames

v0.6.3

Published

Agentic video generation with byte-stable local rendering, scene-linked narration, and reviewed capability plugins.

Readme

Lazy Frames

npm version license

Agentic video generation. Feed a skill URL to your AI agent — it captures, authors a spec, runs the gates, and renders a pixel-perfect MP4. The core runs fully locally with no keys; reviewed plugins can opt into explicitly declared external services.

Same spec + same machine = byte-identical MP4, every time.

Part of CosmicStack.AI.

Give it to your agent

Paste the raw Markdown skill URL into your AI agent:

https://lazy-frames.cosmicstack.ai/skill.md

For example: Read this skill, then make a promo video for https://example.com.


Install

From npm

npm install lazy-frames

Then run any command via npx:

npx lazy doctor
npx lazy capture https://example.com projects/acme
npx lazy render projects/acme

From source (for development or the agentic skill)

git clone https://github.com/cosmicstack-labs/lazy-frames.git
cd lazy-frames
npm install && npm run build
node packages/cli/dist/index.js doctor

Prerequisites

| Dependency | Required for | Check | |---|---|---| | Node.js ≥ 20 | CLI + engine | node --version | | ffmpeg + ffprobe | encoding + audio | ffmpeg -version | | Google Chrome | headless rendering | lazy doctor | | Python 3 | audio sidecar (music, TTS, SFX) | python3 --version | | macOS say | TTS narration | say -v '?' | | ELEVENLABS_API_KEY | Optional ElevenLabs plugin | lazy doctor |

Run npx lazy doctor to verify all providers and see your hardware tier.

Quick start

Website promo — from URL to MP4

npx lazy capture https://example.com projects/acme
npx lazy snapshot projects/acme --update
npx lazy check projects/acme
npx lazy preview projects/acme       # review in browser
# ... approve ...
npx lazy render projects/acme         # byte-stable MP4

lazy capture writes screenshots @2x, palette, copy blocks, fonts, logo, and a starter spec.json.

Cinematic — generated stills + depth parallax + audio

npx lazy gen image -p projects/cine --seed 21 --style ridge --name r01
npx lazy gen music -p projects/cine --mood calm --bpm 90 --seed 21 --name bgm
# write spec.json referencing assets/gen/r01.png + r01.depth.png
npx lazy render projects/cine

Plugin marketplace

The Lazy Frames Plugin Marketplace indexes folder-owned, schema-validated extensions and their exact permissions. ElevenLabs is the only plugin included by default; running install grants project-scoped approval for external access:

npx lazy plugin install elevenlabs -p projects/cine
export ELEVENLABS_API_KEY="your-key"
npx lazy script projects/cine --provider elevenlabs --voice YOUR_VOICE_ID --apply
npx lazy render projects/cine

Each narration beat is anchored with sceneId and offsetMs, so the spoken line starts on the intended screen. Generated audio is normalized to canonical WAV and cached; the API key is never written to project files. Plugin dependencies are fingerprint-locked in the project, while consent is stored separately as a user-local, project-scoped approval.

Browse 16 plugins across voice, storytelling, visuals, audio, captions, and delivery, or run npx lazy plugin search. The other integrations are installable scaffolds: their manifests and permission locks work now, while execution remains blocked until a reviewed adapter ships.

Contributors add one self-contained plugins/<id>/manifest.json folder and run npm run plugins:build; the CLI registry, machine index, marketplace card, and detail page are generated from that folder.

CLI commands

| Command | What it does | |---|---| | lazy doctor | Environment + provider capability report | | lazy capture <url> [project] | Capture a website → screenshots, palette, copy, starter spec | | lazy gen image | Generate procedural still + matching depth map | | lazy gen music | Generate procedural music WAV | | lazy gen tts | Generate TTS narration WAV (macOS say) | | lazy script <project> | Draft editable, scene-linked narration beats | | lazy plugin search | Search reviewed plugins by name or capability | | lazy plugin info <id> | Inspect status, provider, permissions, and detail URL | | lazy plugin install <id> | Install a fingerprinted plugin into a project | | lazy check <project> | Validate spec + run snapshot & determinism gates | | lazy snapshot <project> --update | Establish/refresh the regression baseline | | lazy render <project> | Render to MP4 (byte-stable, with audio) | | lazy preview <project> | Scrubbable timeline preview at localhost:4173 |

Scene types

| Type | What it does | |---|---| | typography | Text reveals: titles, quotes, lockups (4 reveal styles) | | stat-hit | Count-up numbers, labels, bars | | browser-frame | Screenshot in a browser chrome mockup with cursor | | ui-callout | Screenshot with dimmed mask, hotspot spotlight, label | | atmosphere | Drifting gradient blobs — ambient backdrops | | parallax | 2.5D camera move over a still (flat or depth-map mode) | | video-layer | Footage playback with trim, speed, grade | | three-scene | Deterministic 3D: cube/ico/grid/particles (canvas 2D) |

Plus: 7 transitions (cut, fade, dissolve, whip-pan, light-leak, dip-to-black, luma-wipe), stage-level CSS grade presets, output-level 3D LUT pipeline, and declarative audio (narration + music + SFX).

Agentic skill

Lazy Frames ships with a complete agent skill. Point any coding agent at skill/SKILL.md — it contains the full routing rules, agent contract, and reference docs. The agent reads the skill (not the source code) and knows how to capture, author, check, preview, and render.

skill/
  SKILL.md                    ← entry point + routing + agent contract
  references/
    spec-format.md             ← full spec schema
    scene-types.md             ← all 8 scene types
    workflows.md               ← website-promo / cinematic / edit
    cli.md                     ← every CLI command
    gates.md                   ← determinism + snapshot gates

Determinism

Same spec + same machine = byte-identical MP4 (SHA-256 verified). Enforced by:

  • --jitless — V8 interpreter only (no JIT nondeterminism)
  • --use-angle=swiftshader — software rendering (no GPU variance)
  • Integer-pixel CSS transforms (no sub-pixel text rendering)
  • putImageData for canvas scenes (no skia compositing nondeterminism)
  • Bitexact ffmpeg encoding (fixed creation_time, +bitexact, fixed threads)

Examples

  • examples/demo — typography + stat-hit (engine proof)
  • examples/cinematic — depth-parallax + video-layer + narration + music
  • examples/showreel — grade + LUT + transitions + SFX + 3D + beats
  • projects/web-demo — website capture → promo

Verify

npm run verify:demo        # byte-stability (two renders, sha256 compare)
npm run verify:cinematic   # gen assets + gates + audio determinism

Architecture

spec.json (typed JSON)
  ├─ @lazy/engine       compile spec → HTML composition + channel data
  ├─ @lazy/renderer     headless Chrome (jitless + swiftshader) → frames → ffmpeg → MP4
  ├─ @lazy/capture      site screenshots + palette/copy/font/logo extraction
  ├─ @lazy/gen-sidecar  Python: procedural music, TTS (say), SFX synthesis
  └─ @lazy/cli          lazy capture | gen | check | snapshot | render | preview | doctor

License

MIT © CosmicStack Labs