Packages

The published npm packages that make up Lifo, and the in-VM package manager for installing tools inside a box.

There are two senses of "package" in Lifo: the npm packages you install to build with Lifo, and the tools you install inside a box at runtime.

The npm packages

Everything ships from the @lifo-sh scope (and a few lifo-pkg-* helpers).

PackageWhat it is
@lifo-sh/coreThe VM: kernel, filesystem, shell, commands, the Node layer, networking. The only required dependency.
@lifo-sh/uiFramework-agnostic UI components — Terminal, PreviewBrowser, FileExplorer.
lifo-shA CLI to run a box from your terminal (on the roadmap).
lifo-pkg-git, lifo-pkg-ffmpegIn-VM tools packaged for Lifo (Git, FFmpeg).
create-lifo-pkgScaffold your own Lifo package.

Most apps need just @lifo-sh/core (plus @lifo-sh/ui if you want the terminal and preview components):

npm install @lifo-sh/core @lifo-sh/ui

In-VM packages

Inside a box, npm and npx are real — they fetch from the npm registry and install into the box's filesystem, so npm install, npx, and npm run work as you'd expect.

npm install react
npx create-vite@latest my-app

Lifo also has its own lightweight package mechanism (lifo) for VM tools like Git, and for dev-linking local packages while you build them.

A first-class package manager (roadmap)

Beyond npm, a built-in package manager for VM tools — including native CLIs compiled to WebAssembly (ffmpeg, ImageMagick, Python, and more) — is on the roadmap. The intended shape:

lifo install ffmpeg
ffmpeg -i input.mp4 -vf scale=320:-1 output.gif

Two kinds of packages would be supported: npm global CLIs (any package that works as a global binary) and Wasm native CLIs (native tools compiled to WebAssembly, for the cases where pure JavaScript can't do the job — the one place Lifo reaches for WebAssembly deliberately). This is still an open design; see the roadmap for status.