Skip to content
PuniDocs
Open Puni

The command line


The same engine as the studio in a terminal: make and edit scenes as files, render, and work with your library and agents.

puni is the studio without the screen. It edits the same scene document with the same commands, evaluates the same motion, and renders with the same renderer. Every command answers in JSON when you ask.

Inspect the Subject in the Soft Guest study. Use jq to show its identifying fields:

bash
puni scene create --study soft-guest --output soft-guest.scene.json
puni scene inspect --file soft-guest.scene.json --ids subject --json \
  | jq '.data.objects[] | {id, name, moduleId, parentId}'

Captured command output:

text
{
  "id": "subject",
  "name": "Subject",
  "moduleId": "structure",
  "parentId": null
}

#What it is for

UseCommands
Make a scene as a filescene create, scene apply, scene fit, scene behavior
Check itscene inspect, scene evaluate, scene validate
Draw itrender png, render glb, render usdz, render film
Work with your libraryproject list, pull, push, share
Searchsearch keyword, search semantic
Run agentsagent request, agent serve

#Install

The command line is a preview for Puni's own team. It builds from Puni's private repository and is not published to npm, so you can run it only with access to that repository.

bash
pnpm -C apps/cli build
node apps/cli/bin/run.js --help

Node 22 or newer. Rendering needs an installed Chrome (or lets a terminal fetch a Chromium for it); films need the local renderer.

#Sign in

bash
puni auth login --base-url https://puni.design
puni auth status --base-url https://puni.design --json

Type the code it prints on the page it opens, then approve. A sign-in reads and writes; --scope share also shares. Every remote command names its origin with --base-url.

#Answers you can branch on

Add --json to any command. Success is one { "data", "meta" } object; failure is one { "error": { "code", "exitCode", "message" } } object with a nonzero exit. Tokens are redacted from output.

Read the Quickstart to make a scene in five commands, or the command reference for every flag.

Was this useful?