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

@altavinci/cli

v0.0.10

Published

Altavinci command line tools for scene diagnostics and deterministic frame export

Readme

@altavinci/cli

Node-compatible command-line tools for Altavinci scene diagnostics and deterministic frame export.

Install

npx @altavinci/cli --help

Installed bin:

alt <command>

Development from the workspace root:

bun packages/cli/src/index.ts <command>

Commands

alt init <name> [--json]
alt compile <scene.html> [--json]
alt frame <scene.html> --at <time> --out <file.png> [--json] [--width 1920] [--height 1080] [--scale 1] [--bridge-port <port>]
alt frames <scene.html> --at <time,time,...> --out-dir <dir> [--json] [--width 1920] [--height 1080] [--scale 1] [--bridge-port <port>]
alt render <path> [--api-key <token>] [--api-url <url>] [--entry scene.html] [--duration <time>] [--fps 60] [--width <px>] [--height <px>] [--quality standard] [--codec h264] [--format mp4] [--scene <name>] [--callback-url <https>] [--wait] [--out <file.mp4|directory>] [--poll-interval <ms>] [--timeout <time>] [--json]
alt render status <renderId> [--api-key <token>] [--api-url <url>] [--out <file.mp4|directory>] [--json]
alt render download <renderId> --out <file.mp4|directory> [--api-key <token>] [--api-url <url>] [--json]

Init

Create a new Altavinci project and install the skill for agents:

alt init hello-scene

This writes:

  • hello-scene/scene.html
  • hello-scene/.agents/skills/altavinci/**

Compile

Compile an HTML scene and print diagnostics.

alt compile apps/playground/scenes/html/01-basic.html
alt compile apps/playground/scenes/html/01-basic.html --json

The command reads the scene directory, compiles with rich text run support, and exits 0 only when there are no error diagnostics.

Frame

Render one exact scene-time frame to PNG.

alt frame apps/playground/scenes/html/01-basic.html \
  --at 250ms \
  --out /tmp/frame.png \
  --width 1920 \
  --height 1080 \
  --scale 1 \
  --json

Time values support 7240ms, 7.24s, or bare millisecond numbers such as 7240.

Frames

Render multiple exact scene-time frames over one bridge connection.

alt frames apps/playground/scenes/html/01-basic.html \
  --at 0ms,250ms,1s \
  --out-dir /tmp/frames \
  --width 1920 \
  --height 1080 \
  --scale 1 \
  --json

Output filenames are deterministic:

frame-000-0ms.png
frame-001-250ms.png
frame-002-1000ms.png

Render

Zip a scene folder and render it through the Altavinci Render API.

alt render ./my-scene \
  --wait \
  --out /tmp/scene.mp4 \
  --api-key "$ALTAVINCI_API_KEY"

Auth comes from --api-key <token> or ALTAVINCI_API_KEY in the environment or .env. Override the API with --api-url <url> or ALTAVINCI_API_URL; the default is https://altavinci-api.nouro-flow.workers.dev.

<path> can be a scene directory or an HTML file. Directories use scene.html unless --entry <file.html> is passed. The CLI compiles the entry first, derives duration, fps, width, and height from the scene when possible, then uploads a multipart ZIP with renderer options.

Renderer flags: --duration <time>, --fps <int>, --width <int>, --height <int>, --quality draft|standard|high, --codec h264, --format mp4, --scene <name>, and --callback-url <https>. Explicit flags override values derived from the scene.

--wait polls until completion and prints render stats. --out <file.mp4|directory> implies --wait, downloads the MP4, and creates parent directories. When --out points at an existing directory or ends with a slash, the CLI writes <directory>/<renderId>.mp4. Use --poll-interval <ms>, --timeout <time>, and --json for automation.

Already have a render id? Use alt render status <renderId> to fetch the current state and formatted metrics. Add --out <file.mp4|directory> to download a completed render while showing status. alt render download <renderId> --out <file.mp4|directory> is the download-only spelling and fails if the render is not completed yet.

ZIP packaging includes binary assets such as fonts and static raster images. It excludes .agents, .git, .turbo, dist, node_modules, .env*, .DS_Store, and video/GIF preview files because the worker rejects those media inputs.

Render bridge

frame and frames compile the scene first, then send render requests over a local WebSocket bridge to a running Studio or Playground tab. The browser tab renders the compiled runtime AST and returns PNG bytes to the CLI.

Default bridge URL:

ws://127.0.0.1:53847

If the default port is busy, pass --bridge-port <port> and open the Studio or Playground URL printed by the command. The protocol is Node-compatible and uses node:http plus ws, so the published CLI runs under Node through npx @altavinci/cli.