# ══════════════════════════════════════════════════════════════════════ # 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 # ══════════════════════════════════════════════════════════════════════