{ "_description": "Tunables for core/* modules. Loaded via core.config_loader.load('core').", "brain": { "allowed_callback_prefixes": [ "Project.Sanad.voice.", "voice." ], "gestural_speaking_default": false }, "logger": { "log_level": "INFO", "format": "%(asctime)s [%(name)s] %(levelname)-7s %(message)s", "datefmt": "%Y-%m-%d %H:%M:%S", "file_max_bytes": 10485760, "file_backup_count": 7 }, "event_bus": { "emit_timeout_sec": 0.5 }, "paths": { "_comment": "Path roots — resolved against BASE_DIR in core/config.py", "data": "data", "logs": "logs", "scripts": "scripts", "model": "model", "audio_recordings": "data/audio", "motion_recordings": "data/recordings/motion", "motions": "data/motions" }, "gemini_defaults": { "_comment": "Baseline Gemini API config — SINGLE SOURCE OF TRUTH. All voice modules read from here.", "api_key": "", "model_live": "gemini-2.5-flash-native-audio-preview-12-2025", "model_ws_uri": "wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent", "voice_name": "Charon", "ws_timeout_sec": 30, "default_system_prompt": "You are Sanad (Bousandah), a wise and friendly Emirati assistant. Speak strictly in the UAE dialect (Khaleeji). Be helpful, concise, and use local greetings like 'Marhaba' and 'Ya Khoy'.", "_comment_voice_prompts": "Per-voice system prompts. Charon (G1) and Puck (R1) are DELIBERATELY absent: they must keep the robots' verbatim TTS prompt so the site matches Sanadv3/SanadR1. Only Kore (Agibot x2), which has no robot to match, is steered here.", "voice_system_prompts": { "Kore": "أنتِ \"موزة\" (Muza) — روبوت إماراتي احترافي تابع لشركة YS Lootah Robotics، تتكلمين باللهجة الإماراتية (الخليجية) بنبرة احترافية راقية، هادئة وواثقة، بدون مبالغة ولا عبارات عاطفية زائدة.\nفي وضع الإعادة هذا مهمتكِ الوحيدة: انطقي النص الذي يعطيكِ إياه المستخدم كما هو تماماً، حرفياً، كلمة بكلمة، من أول كلمة إلى آخر كلمة، بنطقكِ الإماراتي الطبيعي.\nلا تجاوبي على النص، ولا تترجميه، ولا تلخصيه، ولا تعيدي صياغته، ولا تضيفي أي تحية أو تعليق أو كلمة زائدة، ولا تفكري بصوت مسموع.\nإذا كان النص بلغة أخرى فانطقيه بنفس لغته بدون تغيير.\nأخرجي الصوت المنطوق فقط، ثم اسكتي." } }, "g1_hardware": { "_comment": "G1 humanoid hardware constants — shared by every motion/voice module that talks to the arm.", "num_motor": 29, "enable_arm_sdk_index": 29, "replay_hz": 60.0 }, "script_files": { "_comment": "Filenames (under scripts/) used across voice + dashboard", "persona": "sanad_script.txt", "rules": "sanad_rule.txt" }, "dashboard_defaults": { "host": null, "port": 8000, "interface": "wlan0" }, "audio_defaults": { "_comment": "Host PulseAudio fallback only — the G1 deployment uses UDP multicast mic + AudioClient.PlayStream speaker (see SANAD_USE_G1_MIC in config.py LIVE_TUNE). Default here is the Jetson/G1 built-in platform-sound chip.", "send_sample_rate": 16000, "receive_sample_rate": 24000, "chunk_size": 512, "channels": 1, "sink": "alsa_output.platform-sound.analog-stereo", "source": "alsa_input.platform-sound.analog-stereo" }, "dds": { "network_interface_default": "eth0" }, "auth": { "_comment": "Dashboard login credentials. CHANGE before any non-LAN deployment.", "username": "lkasjda213h", "password": "kj812bf@jdon" } }