CLI › Start

Install and log in

One package, one binary, and the browser sign-in that stores a key for you.

The vos CLI records a scripted browser flow into a take, plans the camera with the same planner the studio uses, and renders a polished video headlessly. It is one binary from one package.

Install

Shell
npm i -D @vosjs/cli
npx vos setup

vos setup readies the machine in one run: the vos skills into your coding agent's directories, a browser found or installed, one block in AGENTS.md (or CLAUDE.md), then vos doctor, which says in words what is ready and what to do next. vos doctor --url http://localhost:3000 also checks that your product answers. vos whoami says which account a stored key belongs to, never the key; vos logout removes it.

@vosjs/cli is the whole CLI, MIT, from the open-source vos repo: the vos binary, the engine verbs (render, still, info, preview, check on configs), the take pipeline and every vos.so platform verb. Everything that runs on your machine is open source, and vos.so, the hosted platform, is the product. (Until 0.9 the take pipeline shipped separately as @vosso/vos-plugin; that package is a forwarding shim now and can be removed.)

You also need a Chromium-family browser (system Chrome is detected automatically; otherwise npx playwright install chromium or point VOS_BROWSER_PATH at one) and network access at render time, since render pages load three and mediabunny from the CDN.

Log in, when you need the cloud

Everything local runs with no account. When you first push or fetch private work:

Shell
vos login

It prints a short code and an approval URL at vos.so/cli/auth. Open the URL, check the code matches, and approve; the CLI stores a content key in ~/.config/vos/credentials by itself. The key is named cli:<hostname> and is revocable at vos.so/app/api. Headless environments can skip the browser with vos login --key <vos_sk_...>.

Conventions

  • Logs go to stderr, results to stdout.
  • --json streams NDJSON events, ending with {"event":"done", ...}.
  • Exit codes: 0 ok, 1 error, 2 usage or strict failure, 3 no browser.