{ "version": "1.0.1", "gateway": { "port": 18789, "host": "0.0.0.0", "auth": { "enabled": true, "multiUser": true } }, "ollama": { "endpoint": "http://localhost:11434", "timeout": 120, "concurrency": { "llm_workers": 1, "tool_workers": 3 } }, "llm": { "provider": "ollama", "providers": { "ollama": { "endpoint": "http://localhost:11434", "model": "gemma4:31b-cloud" }, "lm_studio": { "endpoint": "http://192.168.0.7:1234", "model": "qwen/qwen3.6-35b-a3b", "disable_thinking": true }, "llama_cpp": { "endpoint": "http://host.docker.internal:8080", "model": "" }, "openai": { "api_key": "", "model": "gpt-4o" }, "openai_codex": { "model": "gpt-5.3-codex" }, "google": { "endpoint": "https://generativelanguage.googleapis.com/v1beta/openai", "api_key": "vault:llm.google.api_key", "model": "gemini-3.5-flash-lite" }, "ollama_local": { "endpoint": "http://192.168.0.8:11434", "model": "gemma4:26b", "wake_url": "http://192.168.0.240:8100" }, "anthropic": { "api_key": "", "model": "claude-sonnet-4-6" } } }, "models": { "primary": "gemma4:31b-cloud", "fallback": "kimi-k2.6:cloud", "roles": { "manager": "gemma4:31b-cloud", "executor": "gemma4:31b-cloud", "verifier": "gemma4:31b-cloud", "background_task": "" }, "profiles": { "mistral-large-3:675b-cloud": { "extraSystemPrompt": "You have a documented tendency to skip tool calls and answer fluently and confidently from memory instead — on news, weather, and factual/product questions (specs, prices, versions, comparisons) alike, sometimes inventing specific-sounding numbers or even nonexistent events. Before answering ANYTHING with a checkable real-world fact, call the relevant tool (web_search, weather_kma, etc.) first — do not trust your own confidence as a substitute for checking. If a tool call fails or returns nothing useful, say so plainly instead of filling the gap from memory." }, "kimi-k2.6:cloud": { "extraSystemPrompt": "You have a documented tendency to massively over-search — observed doing 7+ (once 50+) web_search/web_fetch calls for a single broad request like \"오늘 국제 뉴스 정리\", searching topic-by-topic (Ukraine, Gaza, tariffs, ...) instead of a couple of broad searches. A hard cap now blocks you past 5 web_search/web_fetch calls per turn — but don't rely on the cap. Plan your search angles up front, pick the 1-3 most important ones, and write the answer once you have enough. Exhaustive topic-by-topic coverage is not the goal." }, "gemma4:26b": { "extraSystemPrompt": "You are running on 지서버 as gemma4:26b (via Ollama). weather_kma carries no air-quality data: for 미세먼지/PM2.5/PM10/황사 call weather_airkorea instead — re-calling weather_kma with the same arguments will never return air quality.", "fixedNumCtx": 262144 }, "muse-glimmer:latest": { "fixedNumCtx": 131072 } } }, "tools": { "enabled": [ "shell", "read", "write", "edit", "search" ], "permissions": { "shell": { "workspace_only": true, "confirm_destructive": true, "blocked_patterns": [ "rm -rf /", "del C:\\Windows", "format" ] }, "files": { "allowed_paths": [], "blocked_paths": [ "/etc", "/System", "C:\\Windows", "/usr", "/bin" ] }, "browser": { "profile": "automation", "headless": false } } }, "skills": { "directory": "/srv/homeclaw/.smallclaw/skills", "registries": [ "https://clawhub.ai" ], "auto_update": false }, "memory": { "provider": "chromadb", "path": "/srv/homeclaw/.smallclaw/memory", "embedding_model": "nomic-embed-text" }, "memory_options": { "auto_confirm": true, "audit": true, "truncate_length": 1000 }, "ppt": { "engine": "python", "template": "business", "skin": "cream", "unsplash_key": "vault:ppt.unsplash_key", "pexels_key": "vault:ppt.pexels_key", "pixabay_key": "vault:ppt.pixabay_key" }, "heartbeat": { "enabled": true, "interval_minutes": 30, "workspace_file": "HEARTBEAT.md" }, "workspace": { "path": "/srv/homeclaw/.smallclaw/workspace", "codeDir": "code" }, "agents": [ { "id": "pubmed_researcher", "name": "PubMed Researcher", "description": "논문 다건 검색·요약·전문 수집 자율 수행. pubmed_search, pubmed_fetch, pubmed_fulltext 도구 사용.", "emoji": "🔬", "maxSteps": 12, "tools": { "profile": "pubmed" } } ], "session": { "maxMessages": 2000, "compactionThreshold": 0.7, "memoryFlushThreshold": 0.75, "historyTurns": 8 }, "channels": { "telegram": { "enabled": false, "botToken": "", "allowedUserIds": [ 8540415328 ], "streamMode": "full", "userMap": {}, "voiceEnabled": false }, "discord": { "enabled": false, "botToken": "", "applicationId": "", "guildId": "", "channelId": "", "webhookUrl": "" }, "whatsapp": { "enabled": false, "accessToken": "", "phoneNumberId": "", "businessAccountId": "", "verifyToken": "", "webhookSecret": "", "testRecipient": "" }, "kakao": { "appKey": "", "channelEnabled": true, "userMap": { "f4e1b2324f39263fa60ef646cb5362b2a9e51e94ce76d1291d1dfd0be40dee1102": "papa" } } }, "orchestration": { "enabled": false, "secondary": { "provider": "ollama", "model": "glm-5.3-flash:cloud" }, "triggers": { "consecutive_failures": 2, "stagnation_rounds": 3, "loop_detection": true, "risky_files_threshold": 6, "risky_tool_ops_threshold": 220, "no_progress_seconds": 90 }, "preflight": { "mode": "complex_only", "allow_secondary_chat": false }, "limits": { "assist_cooldown_rounds": 3, "max_assists_per_turn": 3, "max_assists_per_session": 18, "telemetry_history_limit": 100 }, "browser": { "max_advisor_calls_per_turn": 5, "max_collected_items": 80, "max_forced_retries": 0, "min_feed_items_before_answer": 12 }, "file_ops": { "enabled": true, "primary_create_max_lines": 80, "primary_create_max_chars": 3500, "primary_edit_max_lines": 12, "primary_edit_max_chars": 800, "primary_edit_max_files": 1, "verify_create_always": true, "verify_large_payload_lines": 25, "verify_large_payload_chars": 1200, "watchdog_no_progress_cycles": 3, "checkpointing_enabled": true }, "preempt": { "enabled": false, "stall_threshold_seconds": 45, "max_preempts_per_turn": 1, "max_preempts_per_session": 3, "restart_mode": "detached_hidden" }, "subagent_mode": false }, "hooks": { "enabled": false, "token": "", "path": "/hooks" }, "voice": { "enabled": true, "stt": { "provider": "whisper_gpu", "model": "ggml-base.bin", "language": "ko" }, "tts": { "provider": "omnivoice_gpu", "model": "ko_KR-kss-medium", "voice": "ko-KR-SunHiNeural" }, "engine": { "port": 8765, "sttModel": "medium", "speakerWav": "/srv/homeclaw/.smallclaw/voice/speaker_ko.wav", "device": "cuda" } }, "telegram": { "enabled": false, "botToken": "", "allowedUserIds": [ 8540415328 ], "streamMode": "full", "userMap": {}, "voiceEnabled": false }, "search": { "preferred_provider": "searxng", "search_rigor": "verified", "google_cx": "", "ollama_model": "", "searxng_url": "http://localhost:8888", "ollama_api_key": "vault:search.ollama_api_key", "tavily_api_key": "vault:search.tavily_api_key", "google_api_key": "vault:search.google_api_key" }, "agent_policy": { "force_web_for_fresh": true, "memory_fallback_on_search_failure": true, "auto_store_web_facts": true, "natural_language_tool_router": true, "retrieval_mode": "standard" }, "openweather": { "api_key": "vault:openweather.api_key" }, "pubmed": { "api_key": "vault:pubmed.api_key" }, "news": { "newsdata_api_key": "vault:news.newsdata_api_key" }, "email": { "accounts": [ { "id": "applecherry", "imap_host": "121.183.65.201", "imap_port": 993, "imap_tls": true, "imap_reject_unauthorized": false, "smtp_host": "121.183.65.201", "smtp_port": 587, "smtp_secure": false, "smtp_reject_unauthorized": false, "username": "kim@applecherry.net", "password": "vault:email.accounts.applecherry.password" }, { "id": "evangel", "imap_host": "mail.evangel.xyz", "imap_port": 993, "imap_tls": true, "imap_reject_unauthorized": false, "smtp_host": "mail.evangel.xyz", "smtp_port": 587, "smtp_secure": false, "smtp_reject_unauthorized": false, "username": "kim@evangel.xyz", "password": "vault:email.accounts.evangel.password" }, { "id": "daum", "imap_host": "imap.daum.net", "imap_port": 993, "imap_tls": true, "imap_reject_unauthorized": true, "smtp_host": "smtp.daum.net", "smtp_port": 465, "smtp_secure": true, "smtp_reject_unauthorized": true, "username": "kimsgms@hanmail.net", "password": "vault:email.accounts.daum.password" } ] }, "traffic": { "its_api_key": "vault:traffic.its_api_key" }, "nvr": { "host": "192.168.0.95", "port": 80, "rtspPort": 80, "rtspPathTemplate": "/ch{channel}_{stream}.264", "username": "admin", "password": "vault:nvr.password", "channelLabels": { "0": "선룸", "1": "옥상", "2": "대문", "3": "뒷산", "4": "거실", "5": "마당" }, "channelStream": { "3": 1 }, "extraCameras": [ { "id": 1000, "label": "프린터실", "host": "192.168.0.32", "rtspPort": 554, "username": "octoprint", "password": "vault:nvr.extraCameras.1000.password", "rtspPath": "/stream1", "ptz": true, "onvifPort": 2020, "go2rtcSrc": "cam" } ] }, "writer": { "providers": {} }, "collabora": { "baseUrl": "https://col.applecherry.net", "publicUrl": "https://ai.applecherry.net" }, "legal": { "law_go_kr_api_key": "vault:legal.law_go_kr_api_key" }, "mfds": { "dur_api_key": "vault:mfds.dur_api_key" } }