Nodaro Docs
DocumentationNode ReferenceModelsAI Agents (MCP)DevelopersSelf-hostingResearch
CLI

Asset commands

Create characters, locations and objects from the Nodaro CLI, generate and approve their main pictures, and add variants and motion clips to each asset.

The asset commands of the Nodaro CLI manage characters, locations and objects: the reusable identities that keep a person, a place or a prop the same in every generation. Each asset has a main picture that you generate and approve, and variants and motion clips that you add later. The same assets appear in the editor's Character, Location and Object nodes.

How an asset is built

Create the record

create saves the asset's name, description and style.

Generate candidates

generate makes 1, 2 or 4 candidate main pictures. Add --watch to wait for them.

Approve one

approve-portrait (characters) or approve-main-image (locations and objects) sets the main picture from a completed candidate job. Nodaro then writes the asset's description from the picture.

Add variants and motion

generate-asset adds a variant, such as an expression or a season. generate-motion animates the main picture into a short clip.

Every generation costs credits, like the matching node in the editor. See Consistent characters for how assets keep identities stable.

Characters

nodaro characters list [--project <id>] [--archived] [--limit <n>] [--json]
nodaro characters get <id>
nodaro characters create --name <name> [--description "..."] [--gender <gender>] [--style realistic|anime|3d-pixar|illustration] [--base-outfit "..."] [--seed-prompt "..."] [--node-id <id>] [--project <id>]
nodaro characters update <id> [--name <name>] [--description "..."] [--gender <gender>] [--style realistic|anime|3d-pixar|illustration] [--base-outfit "..."] [--seed-prompt "..."]
nodaro characters delete <id>
nodaro characters restore <id>
nodaro characters duplicate <id> [--node-id <id>] [--project <id>]
nodaro characters usage <id>
nodaro characters generate <id> [--seed-prompt "..."] [--description "..."] [--name <name>] [--count 1|2|4] [--provider <p>] [--watch]
nodaro characters generate-asset <id> --asset-type expressions|poses|lighting|angles|headAngles|bodyAngles|custom --variant <name> [--user-prompt "..."] [--description "..."] [--column <col>] [--attach-name <name>] [--provider <p>] [--watch]
nodaro characters generate-motion <id> --motion-prompt "..." [--attach-name <name>] [--description "..."] [--motion-description "..."] [--provider <p>] [--watch]
nodaro characters approve-portrait <id> --job <jobId>
nodaro characters recaption <id>
CommandWhat it does
listLists your characters, or the archived ones with --archived. --project limits the list to one project.
deleteArchives the character. restore brings it back.
duplicateCopies the character to a new record.
usageLists the workflows that use the character.
generateMakes 1, 2 or 4 portrait candidates.
approve-portraitSets the portrait from a completed candidate job, then writes the character's description from it.
generate-assetMakes one variant: an expression, a pose, a lighting, an angle, a head angle, a body angle or a custom variant.
generate-motionAnimates the portrait into a motion clip.
recaptionWrites the description again from the current portrait.

Locations

nodaro locations list [--archived] [--json]
nodaro locations get <id> [--json]
nodaro locations create <name> --node-id <id> [--description "..."] [--category indoor|outdoor|urban|nature|fantasy|sci-fi|historical|futuristic|other] [--style realistic|anime|3d-pixar|illustration] [--project <id>] [--json]
nodaro locations update <id> [--name <name>] [--description "..."] [--category <category>] [--style <style>] [--style-lock true|false] [--canonical-description "..."] [--expected-updated-at <iso>] [--json]
nodaro locations delete <id> [--json]
nodaro locations restore <id> [--json]
nodaro locations generate --name <name> [--description "..."] [--user-prompt "..."] [--category <category>] [--style <style>] [--provider <p>] [--count 1|2|4] [--attach-to-location-id <id>] [--watch] [--json]
nodaro locations generate-asset <id> --asset-type timeOfDay|weather|seasons|angles|lighting|custom --variant <name> [--user-prompt "..."] [--description "..."] [--column <col>] [--attach-name <name>] [--provider <p>] [--watch] [--json]
nodaro locations generate-motion --name <name> --motion-prompt "..." --source-image-url <url> [--provider kling|kling-turbo|kling-3.0|wan-i2v|wan-2.7-i2v|seedance-2] [--style realistic|anime|3d-pixar|illustration] [--canonical-description "..."] [--attach-to-location-id <id>] [--attach-name <name>] [--aspect-ratio 1:1|3:4|16:9|9:16] [--watch] [--json]
nodaro locations approve-main-image <id> --candidate-job-id <jobId> [--json]
nodaro locations recaption <id> [--json]
  • generate makes candidate establishing shots. With --attach-to-location-id and a count of 1, the result becomes the location's main image when the job completes. With more candidates, choose one with approve-main-image.
  • generate-asset makes one variant: a time of day, a weather, a season, an angle, a lighting or a custom variant.
  • generate-motion animates a source image into a clip, with one of the listed video models.
  • --style-lock sets whether variant generations stay anchored to the location's canonical style.
  • --expected-updated-at protects an update from overwriting a newer change. If the record changed since that time, the update is refused with concurrent_modification; read it again and retry.

Objects

nodaro objects list [--project <id>] [--archived] [--json]
nodaro objects get <id> [--json]
nodaro objects create <name> --node-id <id> [--description "..."] [--category furniture|vehicle|weapon|food|clothing|electronics|nature|tool|animal|other] [--style realistic|anime|3d-pixar|illustration] [--project <id>] [--json]
nodaro objects update <id> [--name <name>] [--description "..."] [--category <category>] [--style <style>] [--style-lock true|false] [--canonical-description "..."] [--expected-updated-at <iso>] [--json]
nodaro objects delete <id> [--permanent] [--json]
nodaro objects restore <id> [--json]
nodaro objects generate --name <name> [--description "..."] [--user-prompt "..."] [--category <category>] [--style <style>] [--provider <p>] [--count 1|2|4] [--attach-to-object-id <id>] [--seed-prompt-hint "..."] [--watch] [--json]
nodaro objects generate-asset --asset-type angles|materials|variations|motion|custom --variant <name> --attach-to-object-id <id> [--attach-to-column <col>] [--name <name>] [--description "..."] [--seed-prompt-hint "..."] [--watch] [--json]
nodaro objects generate-motion --name <name> --motion-prompt "..." --source-image-url <url> [--provider kling-turbo|kling|kling-3.0|minimax|hailuo-2.3|wan-i2v|seedance|bytedance-lite] [--style realistic|anime|3d-pixar|illustration] [--canonical-description "..."] [--attach-to-object-id <id>] [--attach-name <name>] [--aspect-ratio 1:1|3:4|16:9|9:16|4:3] [--seed-prompt-hint "..."] [--watch] [--json]
nodaro objects approve-main-image <id> --candidate-job-id <jobId> [--expected-updated-at <iso>] [--json]
nodaro objects recaption <id> [--json]
  • delete archives the object. delete --permanent erases an object that is already archived. restore brings back an archived object.
  • generate makes 1, 2 or 4 candidate main images. With --attach-to-object-id and a count of 1, the result becomes the object's main image when the job completes.
  • generate-asset makes one variant: an angle, a material, a variation, a motion or a custom variant, attached to the object you name.
  • generate-motion animates the object's main image into a clip. The default model is kling-turbo and the default aspect ratio is 1:1.

Example: a character from start to finish

# 1. Create the character
nodaro characters create --name Kira --description "young protagonist with auburn hair" \
  --style realistic --seed-prompt "kira portrait, warm natural lighting"

# 2. Generate four portrait candidates and wait for them
nodaro characters generate <characterId> --count 4 --watch

# 3. Approve the candidate you like
nodaro characters approve-portrait <characterId> --job <candidateJobId>

# 4. Add a smiling expression
nodaro characters generate-asset <characterId> --asset-type expressions --variant smile --watch

Frequently asked questions

Last updated on

On this page