| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # HuggingMes + Hermes WebUI β Configuration Template | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # This template is deployed to /opt/data/config.yaml in the HF Space. | |
| # Environment variables from .env.local override values at boot time. | |
| # | |
| # Priority: Environment variables > This config > Hermes defaults | |
| # | |
| # Documentation: https://hermes-agent.nousresearch.com/docs/user-guide/configuration | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # ββ Model Configuration ββββββββββββββββββββββββββββββββββββββββββββββ | |
| # The LLM model and provider to use. | |
| # Override via env: LLM_MODEL, HERMES_MODEL, CUSTOM_BASE_URL, CUSTOM_API_KEY | |
| # | |
| # Examples: | |
| # openrouter/free β OpenRouter free-tier models | |
| # anthropic/claude-sonnet-4 β Anthropic Claude | |
| # openai/gpt-4o β OpenAI GPT-4o | |
| # deepseek/deepseek-chat β DeepSeek | |
| # google/gemini-2.0-flash β Google Gemini | |
| # | |
| # For custom endpoints (e.g., Xiaomi MiMo, NVIDIA NIM): | |
| # Set CUSTOM_BASE_URL and CUSTOM_API_KEY in .env.local | |
| # The start.sh script will auto-configure model.base_url and model.api_key | |
| model: | |
| default: "mimo-v2.5-pro" | |
| provider: "custom" # Using Xiaomi MiMo custom endpoint | |
| # base_url: "" # Auto-set from CUSTOM_BASE_URL | |
| # api_key: "" # Auto-set from CUSTOM_API_KEY | |
| # context_length: 1000000 # Auto-set from CUSTOM_MODEL_CONTEXT_LENGTH | |
| # max_tokens: 8192 # Auto-set from CUSTOM_MODEL_MAX_TOKENS | |
| # ββ Agent Behavior ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| agent: | |
| max_turns: 90 # Maximum conversation turns per session | |
| tool_use_enforcement: auto # auto, required, or off | |
| # ββ Terminal Configuration ββββββββββββββββββββββββββββββββββββββββββββ | |
| # Working directory for shell commands and file operations. | |
| # Override via env: MESSAGING_CWD | |
| terminal: | |
| backend: local # local, docker, or ssh | |
| cwd: "/opt/data/workspace" # Default workspace directory | |
| timeout: 180 # Command timeout in seconds | |
| # ββ Context Compression ββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Automatically compress long conversations to stay within token limits. | |
| compression: | |
| enabled: true | |
| threshold: 0.50 # Trigger compression at 50% of context window | |
| target_ratio: 0.20 # Compress to 20% of original size | |
| # ββ Display Settings βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # UI and notification preferences. | |
| # Override via env: HERMES_BACKGROUND_NOTIFICATIONS | |
| display: | |
| skin: default # UI theme (default, minimal, etc.) | |
| tool_progress: true # Show tool execution progress | |
| show_reasoning: false # Show model reasoning steps | |
| show_cost: true # Show token cost per request | |
| background_process_notifications: "result" # result, none, or progress | |
| # ββ Security Settings ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # CRITICAL: Always enable secret redaction to prevent credential leakage. | |
| security: | |
| redact_secrets: true # Auto-mask API keys in tool output | |
| redact_pii: false # Auto-mask PII (phone numbers, emails) | |
| tirith_enabled: false # Enable Tirith security scanner | |
| # ββ Approval Mode βββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Control how destructive commands are handled. | |
| # Options: manual (always prompt), smart (LLM decides), off (no prompts) | |
| approvals: | |
| mode: smart # Recommended: smart for autonomous operation | |
| # ββ Memory Configuration βββββββββββββββββββββββββββββββββββββββββββββ | |
| # Persistent memory across sessions. | |
| memory: | |
| memory_enabled: true # Enable cross-session memory | |
| user_profile_enabled: true # Enable user profile persistence | |
| provider: builtin # builtin, honcho, mem0 | |
| # ββ Checkpoints ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Filesystem snapshots for rollback capability. | |
| checkpoints: | |
| enabled: true | |
| max_snapshots: 10 # Maximum checkpoints to keep | |
| auto_prune: true # Auto-cleanup old checkpoints | |
| # ββ Sessions βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Session management and cleanup. | |
| sessions: | |
| auto_prune: true # Auto-cleanup old sessions | |
| prune_days: 3 # Delete sessions older than N days | |
| # ββ Model Catalog ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Disable to reduce context bloat. | |
| model_catalog: | |
| enabled: false # Set true to show model picker in UI | |
| # ββ Delegation (Subagents) βββββββββββββββββββββββββββββββββββββββββββ | |
| # Configuration for delegated subtasks. | |
| delegation: | |
| max_iterations: 50 # Max tool calls per subagent | |
| max_spawn_depth: 1 # Max nesting depth (1 = no nesting) | |
| max_concurrent_children: 3 # Max parallel subagents | |
| # ββ Platform Configuration βββββββββββββββββββββββββββββββββββββββββββ | |
| # Messaging platform integrations. | |
| # Telegram is auto-configured from TELEGRAM_BOT_TOKEN env var. | |
| platforms: | |
| telegram: | |
| enabled: false # Auto-enabled when TELEGRAM_BOT_TOKEN is set | |
| # extra: | |
| # base_url: "" # Auto-set from TELEGRAM_BASE_URL | |
| # base_file_url: "" # Auto-set from TELEGRAM_BASE_FILE_URL | |
| # Uncomment to enable other platforms: | |
| # discord: | |
| # enabled: true | |
| # extra: | |
| # bot_token: "${DISCORD_BOT_TOKEN}" | |
| # | |
| # slack: | |
| # enabled: true | |
| # extra: | |
| # bot_token: "${SLACK_BOT_TOKEN}" | |
| # ββ Telegram Access Control ββββββββββββββββββββββββββββββββββββββββββ | |
| # Comma-separated user IDs allowed to interact with the bot. | |
| # Override via env: TELEGRAM_ALLOWED_USERS, TELEGRAM_USER_ID | |
| telegram: | |
| allow_from: [] # Empty = allow all (not recommended for production) | |
| # ββ STT (Speech-to-Text) βββββββββββββββββββββββββββββββββββββββββββββ | |
| # Voice message transcription. | |
| stt: | |
| enabled: false # Enable voice transcription | |
| provider: local # local, groq, openai, mistral | |
| local: | |
| model: base # tiny, base, small, medium, large-v3 | |
| # ββ TTS (Text-to-Speech) βββββββββββββββββββββββββββββββββββββββββββββ | |
| # Voice response generation. | |
| tts: | |
| provider: edge # edge, elevenlabs, openai, minimax, mistral, neutts | |
| # ββ MCP Servers ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Model Context Protocol servers for extended tool access. | |
| # IMPORTANT: Use 'mcp_servers:' key, NOT 'mcp:' | |
| mcp_servers: | |
| cloudflare: | |
| url: https://mcp.cloudflare.com/mcp | |
| timeout: 120 | |
| headers: | |
| Authorization: Bearer ${CLOUDFLARE_API_TOKEN} | |
| inbox: | |
| url: https://mcp-inbox.cmz.web.id/mcp | |
| timeout: 120 | |
| headers: | |
| X-MCP-Secret: ${INBOX_MCP_SECRET} | |
| n8n: | |
| url: https://ruang101-n8n.hf.space/mcp-server/http | |
| timeout: 120 | |
| headers: | |
| Authorization: Bearer ${N8N_MCP_API_KEY} | |
| tavily: | |
| url: https://mcp.tavily.com/mcp/?tavilyApiKey=${TAVILY_API_KEY} | |
| exa: | |
| url: https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa,web_search_advanced_exa | |
| headers: | |
| x-api-key: ${EXA_API_KEY2} | |
| anysearch: | |
| url: https://api.anysearch.com/mcp | |
| headers: | |
| Authorization: Bearer ${ANYSERCH_API_KEY} | |
| google-maps-tools: | |
| url: https://mapstools.googleapis.com/mcp | |
| type: http | |
| secrets: | |
| bitwarden: | |
| enabled: true | |
| access_token_env: BWS_ACCESS_TOKEN | |
| project_id: afa31408-cc79-4dfb-8a35-b4590142ba94 | |
| cache_ttl_seconds: 300 | |
| override_existing: true | |
| auto_install: true | |
| server_url: '' | |
| # ββ Toolsets βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Explicit tool list. Remove tools to reduce model schema size. | |
| # Default: all tools enabled. | |
| # toolsets: | |
| # - hermes-cli | |
| # - browser | |
| # - file | |
| # - terminal | |
| # - code_execution | |
| # - delegation | |
| # - memory | |
| # - session_search | |
| # - skills | |
| # - web | |
| # - vision | |
| # - image_gen | |
| # - tts | |
| # - cronjob | |
| # - todo | |
| # ββ Auxiliary Models βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Models for vision, compression, session search, etc. | |
| auxiliary: | |
| vision: | |
| provider: auto # auto, openrouter, google, etc. | |
| model: "" # Leave empty for auto-detection | |
| compression: | |
| provider: auto | |
| model: "" | |
| # ββ Cloudflare Integration βββββββββββββββββββββββββββββββββββββββββββ | |
| # For Telegram proxy and keepalive. | |
| # Override via env: CLOUDFLARE_WORKERS_TOKEN, CLOUDFLARE_PROXY_URL | |
| # cloudflare: | |
| # proxy_url: "" # Auto-set from CLOUDFLARE_PROXY_URL | |
| # keepalive_cron: "*/10 * * * *" | |
| # ββ Custom Provider Configuration ββββββββββββββββββββββββββββββββββββ | |
| # For non-standard API endpoints (e.g., Xiaomi MiMo, NVIDIA NIM). | |
| # These are auto-configured from env vars by start.sh. | |
| # | |
| # Environment variables: | |
| # CUSTOM_BASE_URL β model.base_url | |
| # CUSTOM_API_KEY β model.api_key | |
| # CUSTOM_MODEL_CONTEXT_LENGTH β model.context_length | |
| # CUSTOM_MODEL_MAX_TOKENS β model.max_tokens | |
| # CUSTOM_PROVIDER β model.provider (default: "custom") | |
| # ββ Advanced Settings ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Uncomment and customize as needed. | |
| # hooks: | |
| # pre_tool_call: "" # Script to run before each tool call | |
| # post_tool_call: "" # Script to run after each tool call | |
| # logging: | |
| # level: info # debug, info, warning, error | |
| # file: "" # Log file path (empty = stdout only) | |
| # ββ HF Space Specific ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # These settings are optimized for Hugging Face Spaces deployment. | |
| # Backup dataset for state persistence | |
| # Override via env: BACKUP_DATASET_NAME | |
| backup_dataset: "huggingmes-backup" | |
| # Sync settings for HF Dataset backup | |
| # Override via env: SYNC_INTERVAL, SYNC_POLL_INTERVAL, SYNC_DEBOUNCE_SECONDS | |
| sync: | |
| interval: 60 # Seconds between sync cycles | |
| poll_interval: 2 # Seconds between change detection polls | |
| debounce_seconds: 3 # Seconds to wait after last change | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # END OF CONFIGURATION | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |