Skip to main content
Version: Next 🚧

Installation

Veena requires Node.js 20 or later. Its exporter uses the compatible Chromium distributed with Playwright and FFmpeg distributed through ffmpeg-static.

Pre-release

Veena has not been published to the npm registry yet. Install it from the repository or from a locally packed tarball for now.

Run from the repository​

git clone https://github.com/murali-engine/veena.git
cd veena
npm install
npm run example -- hello-shapes --preview

Remove --preview to render the configured output:

npm run example -- hello-shapes

List every available example with npm run example -- --list.

Use it from another local project​

Build and pack Veena from its repository:

cd /path/to/veena
npm install
npm pack

Then install that generated tarball in the consuming project:

cd /path/to/my-animation
npm install /path/to/veena/veena-0.1.0.tgz
npm install --save-dev tsx typescript

The tarball name follows the version in Veena's package.json and may change. Once Veena is published, this section will be replaced with registry installation instructions.

Create a scene file such as hello.ts, then run it directly:

npx tsx hello.ts --preview
npx tsx hello.ts

Browser installation​

A normal npm install downloads the matching Playwright Chromium. Set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 only when your environment manages that browser separately.

LaTeX requirements​

Latex, LatexMorph, and FormulaOutline use a native LaTeX and dvisvgm toolchain during scene bundling. Plain MathText and FormulaMorph do not require that toolchain.

Verify the setup​

hello.ts
import { render } from "veena";
import { Scene } from "veena/core";
import { Circle } from "veena/primitives";

class Hello extends Scene {
override construct() {
this.add(Circle().radius(1).fill("#7c3aed"));
this.wait(1);
}
}

render(import.meta.url, Hello, { output: "./output/hello.mp4" });

If preview works but export does not, check output-directory permissions and ensure installation completed without skipping Playwright or FFmpeg dependencies.