Installation
Veena requires Node.js 20 or later. Its exporter uses the compatible Chromium distributed with Playwright and FFmpeg distributed through ffmpeg-static.
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​
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.