Skip to content
PuniDocs
Open Puni

Project commands


Your library: list, pull, push, rename, archive, checkpoints, covers and links.

Every command names your library with --base-url and expects a signed-in machine. Writes name the revision they expect. Read Portable projects for pull and push.

puni projectYour library: list, pull, push, rename, archive, checkpoints, covers and links.

CommandWhat it does
puni project listList your active scenes, newest first, a page at a time; --archived lists the archived ones instead.
puni project getRead a scene's document, revision and cover, with server asset references.
puni project createCreate a scene in your library from a document or a portable file.
puni project pushReplace a scene's document, naming the revision you expect. Refused if the library moved on.
puni project applyLand one batch of commands on the saved revision you last read, in one transaction. The scene keeps a checkpoint of what was there before, named by the label; a moved revision is refused.
puni project updateChange the saved scene's environment, description or both, on the revision you last read. It lands like apply: one new revision, with a checkpoint of what was there before named by the label.
puni project pullDownload a scene and its assets as one validated portable file.
puni project renameRename a scene.
puni project archivePut a scene away and suspend its links.
puni project restoreBring an archived scene back, with the links that were not revoked.
puni project checkpointsList a scene's saved checkpoints.
puni project checkpointKeep a named checkpoint of the current document.
puni project restore-checkpointMake a checkpoint the current document, as a new revision.
puni project cover-getRead a scene's cover metadata, or download the PNG.
puni project cover-setUpload a PNG as the cover for a saved document.
puni project sharesList a scene's live links.
puni project shareMake an unlisted link to one saved revision, with its iframe snippet.
puni project unshareRevoke a link.

#project list

List your active scenes, newest first, a page at a time. Add --archived to list the archived ones instead.

puni project list [--archived] --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--archivedbooleanfalseList the archived scenes instead of the active ones.
--cursorstringContinue from a previous page.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project list

bash
puni project list --base-url https://puni.design --json

#project get

Read a scene's document, revision and cover, with server asset references.

puni project get PROJECT_ID --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project get

bash
puni project get quiet-guest --base-url https://puni.design --json

#project create

Create a scene in your library from a document or a portable file.

puni project create --file scene.json --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--file requiredstringThe document or portable file to upload.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project create

bash
puni project create --file scene.puni.json --base-url https://puni.design --json

#project push

Replace a scene's document, naming the revision you expect. Refused if the library moved on.

puni project push PROJECT_ID --file scene.json --revision 4 --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--file requiredstringThe document or portable file to upload.
--revision requirednumberThe revision you last read.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project push

bash
puni project push quiet-guest --file scene.puni.json --revision 8 --base-url https://puni.design --json

#project apply

Land one batch of commands on the saved revision you last read, in one transaction. The scene keeps a checkpoint of what was there before, named by the label, and the owner sees the new revision land. A moved revision is refused: pull, then send the batch again from the revision you read.

puni project apply PROJECT_ID --commands edits.json --revision 4 [--label text] --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--commands requiredjsonA JSON array of composition commands.
--revision requirednumberThe revision you last read.
--labelstringCLI editWhat this edit changed, in the owner's words.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project apply

bash
puni project apply quiet-guest --commands edits.json --revision 8 --label 'Longer hold' --base-url https://puni.design --json

#project update

Change the saved scene's stage (lighting, exposure, shadows, background, transparency), its description, or both, on the revision you last read. It lands like project apply: one new revision, with a checkpoint of what was there before named by the label. Values are checked before anything is sent.

puni project update PROJECT_ID --revision 4 [--patch environment.json] [--brief text] [--label text] --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--revision requirednumberThe revision you last read.
--patchjsonEnvironment fields to change: lighting soft, gallery or dark; exposure 0.1 to 3; shadows; background #rrggbb; transparent.
--briefstringThe scene's description, up to 300 characters.
--labelstringCLI settingsWhat this change does, in the owner's words.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project update

bash
puni project update quiet-guest --patch stage.json --brief 'Lockup on black' --revision 9 --base-url https://puni.design --json

#project pull

Download a scene and its assets as one validated portable file.

A scene larger than one API answer (4 MB) is read from the download address its metadata names, straight from storage and without your token. It is written only when its SHA-256 matches the saved scene; a mismatch reports PUNI_CHECKSUM and leaves the output alone. project get and project restore-checkpoint read large scenes and checkpoints the same way.

puni project pull PROJECT_ID --output scene.json [--asset-origin https://storage.example.com] --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--output requiredstringWhere to write the portable file.
--asset-originstringThe exact storage origin asset downloads may redirect to. An allowlist, not another API.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--overwritebooleanfalseReplace the output file if it already exists.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project pull

bash
puni project pull quiet-guest --output scene.puni.json --asset-origin https://storage.example.com --base-url https://puni.design --json

#project rename

Rename a scene.

puni project rename PROJECT_ID --name text --revision N --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--name requiredstringThe new name.
--revision requirednumberThe revision you expect.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project rename

bash
puni project rename quiet-guest --name 'Quiet guest' --revision 8 --base-url https://puni.design --json

#project archive

Put a scene away and suspend its links.

puni project archive PROJECT_ID --revision N --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--revision requirednumberThe revision you expect.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project archive

bash
puni project archive quiet-guest --revision 9 --base-url https://puni.design --json

#project restore

Bring an archived scene back, with the links that were not revoked.

puni project restore PROJECT_ID --revision N --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--revision requirednumberThe revision you expect.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project restore

bash
puni project restore quiet-guest --revision 9 --base-url https://puni.design --json

#project checkpoints

List a scene's saved checkpoints.

puni project checkpoints PROJECT_ID --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--cursorstringContinue from a previous page.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project checkpoints

bash
puni project checkpoints quiet-guest --base-url https://puni.design --json

#project checkpoint

Keep a named checkpoint of the current document.

puni project checkpoint PROJECT_ID --name text --revision N --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--name requiredstringThe checkpoint's name.
--revision requirednumberThe revision you expect.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project checkpoint

bash
puni project checkpoint quiet-guest --name 'Before revision' --revision 8 --base-url https://puni.design --json

#project restore-checkpoint

Make a checkpoint the current document, as a new revision.

puni project restore-checkpoint PROJECT_ID --checkpoint ID --revision N --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--checkpoint requiredstringThe checkpoint to restore.
--revision requirednumberThe revision you expect.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project restore-checkpoint

bash
puni project restore-checkpoint quiet-guest --checkpoint chk_8 --revision 9 --base-url https://puni.design --json

#project cover-get

Read a scene's cover metadata, or download the PNG.

puni project cover-get PROJECT_ID [--output cover.png] --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--outputstringDownload the cover here.
--asset-originstringThe exact storage origin asset downloads may redirect to. An allowlist, not another API.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--overwritebooleanfalseReplace the output file if it already exists.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project cover-get

bash
puni project cover-get quiet-guest --base-url https://puni.design --json

#project cover-set

Upload a PNG as the cover for a saved document.

puni project cover-set PROJECT_ID --file cover.png --document-hash SHA256 --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--file requiredstringA PNG of at most 2 MB and 1024 pixels on a side.
--document-hash requiredstringThe saved document's SHA-256 the cover depicts.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project cover-set

bash
puni project cover-set quiet-guest --file cover.png --document-hash 5b7d… --base-url https://puni.design --json

#project shares

List a scene's live links.

puni project shares PROJECT_ID --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project shares

bash
puni project shares quiet-guest --base-url https://puni.design --json

#project share

Make an unlisted link to one saved revision, with its iframe snippet.

puni project share PROJECT_ID --revision N --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--revision requirednumberThe revision to share.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project share

bash
puni project share quiet-guest --revision 8 --base-url https://puni.design --json

#project unshare

Revoke a link.

puni project unshare PROJECT_ID --share LINK_ID --base-url https://puni.design

FlagTypeDefaultValuesWhat it does
--share requiredstringThe link to revoke.
--base-urlstringThe studio origin, such as https://puni.design. Defaults to PUNI_BASE_URL, else the one studio you are signed in to. HTTPS, except loopback.
--auth-filestringRead and write credentials in this file instead of ~/.config/puni/credentials.json.
--jsonbooleanfalseAnswer with one JSON envelope instead of the shell view. Exception: agent serve streams raw lifecycle JSON lines before its final envelope.
--help -hbooleanPrint the command list.

#Run project unshare

bash
puni project unshare quiet-guest --share lnk_… --base-url https://puni.design --json

Back to the command line index for every group.

Was this useful?