{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "HomeAI Character Config", "version": "2", "type": "object", "required": ["schema_version", "name", "system_prompt", "tts"], "properties": { "schema_version": { "type": "integer", "enum": [1, 2] }, "name": { "type": "string" }, "display_name": { "type": "string" }, "description": { "type": "string" }, "background": { "type": "string", "description": "Backstory, lore, or general prompt enrichment" }, "dialogue_style": { "type": "string", "description": "How the persona speaks or reacts, with example lines" }, "appearance": { "type": "string", "description": "Physical description, also used for image prompting" }, "skills": { "type": "array", "description": "Topics the persona specialises in or enjoys talking about", "items": { "type": "string" } }, "system_prompt": { "type": "string" }, "model_overrides": { "type": "object", "properties": { "primary": { "type": "string" }, "fast": { "type": "string" } } }, "tts": { "type": "object", "required": ["engine"], "properties": { "engine": { "type": "string", "enum": ["kokoro", "chatterbox", "qwen3", "elevenlabs"] }, "voice_ref_path": { "type": "string" }, "kokoro_voice": { "type": "string" }, "elevenlabs_voice_id": { "type": "string" }, "elevenlabs_voice_name": { "type": "string" }, "elevenlabs_model": { "type": "string", "default": "eleven_monolingual_v1" }, "speed": { "type": "number", "default": 1.0 } } }, "gaze_presets": { "type": "array", "description": "GAZE image generation presets with trigger conditions", "items": { "type": "object", "required": ["preset"], "properties": { "preset": { "type": "string" }, "trigger": { "type": "string", "default": "self-portrait" } } } }, "custom_rules": { "type": "array", "description": "Trigger/response overrides for specific contexts", "items": { "type": "object", "properties": { "trigger": { "type": "string" }, "response": { "type": "string" }, "condition": { "type": "string" } } } }, "notes": { "type": "string" } }, "additionalProperties": true }