guaardvark / cast
Build consistent characters, environments and props in Guaardvark's Cast Library and train LoRAs for them locally (reference photos → vision bible → sample plan → approved samples → training). Use when the user wants the same face or object across images, videos, a music video, or a Film Crew production, or asks to "train a LoRA".
Cast Library and LoRA training
Read setup first; training needs the lora_trainer plugin (CUDA, bf16) and an
installed train-ready base (Z-Image, SDXL or FLUX family). B=${GUAARDVARK_URL:-http://localhost:5000}.
The pipeline
Create the subject
`bash
curl -s -X POST $B/api/cast-library/subjects -H 'Content-Type: application/json' -d '{
"kind": "character", "name": "Mara", "description": "late 30s, short grey hair, freckles",
"triggerword": "marav1", "voice_id": null
}'`kindischaracter,environmentorprop.GET $B/api/cast-librarylists subjects; the
numericidis whatgenerate_imageand batch routes take assubject_ids.Upload reference images (5 to 20 clear shots, varied angles, same subject):
curl -s -X POST $B/api/cast-library/subjects/$ID/upload-refs -F files=@1.jpg -F files=@2.jpg
Ask first whether the person consented; do not train on someone who has not.Vision bible from the refs:
POST $B/api/cast-library/subjects/$ID/bible/from-refs
(the vision model writes the identity description that every prompt inherits).Plan and generate training samples:
POST .../$ID/planthenPOST .../$ID/generate
(cancel with.../generate/cancel). ReviewGET .../$ID/samples; view one withGET .../samples/<sample_id>/image; drop bad ones withDELETE .../samples/<sample_id>orPOST .../samples/<sample_id>/regenerate.- Approve samples:
POST .../$ID/samples/approve. Train:
POST $B/api/cast-library/subjects/$ID/trainwith optional{"training_settings": {...}}. A 409already_trainingmeans wait; atrain_base_not_readyerror names the base model to install first. Cancel:.../train/cancel.
Progress:GET $B/api/cast-library/subjects/$ID(status, base model, LoRA path when done).Use it:
generate_imagewithsubject_ids=[ID]; batch image/video routes withsubject_ids; the Film Crew casts it; the music-video Director locks it per cut.
Rules
- Training is a GPU job of tens of minutes; say so and check
inspect_gpufor conflicts first. The trigger word is applied by the system when
subject_idsis passed; the user does not need
to type it.- Everything stays local: refs, samples and the LoRA file under
data/.