Skip to main content

Characters

Characters are project-scoped entities that represent speaking roles in dialog scene blocks. A character stores descriptive metadata used both in the UI and as context for AI image generation and LLM prompts.

Data model​

FieldTypeDescription
idnumberPrimary key
projectIdnumberOwning project
namestringDisplay name
descriptionstringProse description (age, appearance, personality)
traitsstring[]Array of short trait labels
imageUrlstring | nullURL of portrait image
createdAtDate—

Image storage​

Character images are stored under uploads/characters/<projectId>/ and served via GET /characters/file/* (no auth required, so <img> tags work directly).

AI image generation​

POST /characters/:id/generate-image calls the image generation pipeline using the character's description and traits as the prompt. The global image-generation prompt settings (admin-configurable per project) are prepended.

LLM context​

When LLM endpoints run analysis or generation for an episode, all characters in the project are included in the system context so the model can reference consistent names, appearances, and traits.

Frontend components​

ComponentPath
Character listCharacterListPanel
Character formCharacterFormModal
Image pickerCharacterImageSection
Dialog block assignmentSceneBlock (character dropdown)

Permission scopes​

ScopeWhat it guards
CHARACTER_CREATECreating a character
CHARACTER_EDITEditing name / description / traits
CHARACTER_DELETEDeleting a character
CHARACTER_IMAGE_GENERATEAI image generation
CHARACTER_IMAGE_UPLOADManual image upload
CHARACTER_IMAGE_DELETERemoving the portrait