Combines homeai-character (service status, character profiles, editor) and homeai-desktop (chat with voice I/O) into homeai-dashboard on port 5173. - 4-page sidebar layout: Dashboard, Chat, Characters, Editor - Merged Vite middleware: health checks, service restart, bridge proxy - Bridge upgraded to ThreadingHTTPServer (fixes LAN request queuing) - TTS strips emojis before synthesis - Updated start.sh with new launchd service names - Added preload-models to startup sequence Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
82 lines
2.3 KiB
JSON
82 lines
2.3 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "HomeAI Character Config",
|
|
"version": "1",
|
|
"type": "object",
|
|
"required": ["schema_version", "name", "system_prompt", "tts"],
|
|
"properties": {
|
|
"schema_version": { "type": "integer", "const": 1 },
|
|
"name": { "type": "string" },
|
|
"display_name": { "type": "string" },
|
|
"description": { "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_model": { "type": "string", "default": "eleven_monolingual_v1" },
|
|
"speed": { "type": "number", "default": 1.0 }
|
|
}
|
|
},
|
|
|
|
"live2d_expressions": {
|
|
"type": "object",
|
|
"description": "Maps semantic state to VTube Studio hotkey ID",
|
|
"properties": {
|
|
"idle": { "type": "string" },
|
|
"listening": { "type": "string" },
|
|
"thinking": { "type": "string" },
|
|
"speaking": { "type": "string" },
|
|
"happy": { "type": "string" },
|
|
"sad": { "type": "string" },
|
|
"surprised": { "type": "string" },
|
|
"error": { "type": "string" }
|
|
}
|
|
},
|
|
|
|
"vtube_ws_triggers": {
|
|
"type": "object",
|
|
"description": "VTube Studio WebSocket actions keyed by event name",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": { "type": "string", "enum": ["hotkey", "parameter"] },
|
|
"id": { "type": "string" },
|
|
"value": { "type": "number" }
|
|
}
|
|
}
|
|
},
|
|
|
|
"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" }
|
|
}
|
|
} |