{
  "shell": {
    "mode": "local",
    "timeout": 60,
    "max_retries": 3,
    "retry_interval": 3.0,
    "default_shell": "/bin/bash",
    "working_dir": null,
    "env": {},
    "conda_env": null
  },
  "web": {
    "timeout": 60,
    "max_retries": 3,
    "search": {
      "search_model": "claude-sonnet-4-20250514",
      "search_api_key": "${ANTHROPIC_API_KEY}",
      "search_base_url": "https://api.anthropic.com/v1",
      "max_searches_per_call": 8,
      "allowed_domains": [],
      "blocked_domains": [],
      "fallback_search_provider": "duckduckgo"
    },
    "fetch": {
      "summarize_model": "",
      "max_content_length": 100000,
      "request_timeout": 60,
      "user_agent": "OpenSpace WebFetch",
      "preapproved_domains": [
        "docs.python.org",
        "developer.mozilla.org"
      ]
    }
  },
  "mcp": {
    "timeout": 30,
    "max_retries": 3,
    "retry_interval": 2.0,
    "sandbox": false,
    "auto_initialize": true,
    "eager_sessions": false,
    "sse_read_timeout": 300.0,
    "check_dependencies": true,
    "auto_install": true
  },
  "gui": {
    "mode": "local",
    "timeout": 90,
    "max_retries": 3,
    "retry_interval": 5.0,
    "driver_type": "pyautogui",
    "failsafe": false,
    "screenshot_on_error": true,
    "enable_visual_analysis": true,
    "visual_analysis_mode": "fallback",
    "visual_analysis_timeout": 60.0,
    "visual_analysis_model": null,
    "pkgs_prefix": "import pyautogui; import time; pyautogui.FAILSAFE = {failsafe}; {command}"
  },
  "meta": {},
  "tool_search": {
    "embedding_model": "BAAI/bge-small-en-v1.5",
    "max_tools": 40,
    "search_mode": "hybrid",
    "enable_llm_filter": true,
    "llm_filter_threshold": 50,
    "enable_cache_persistence": true,
    "cache_dir": null
  },
  "tool_quality": {
    "enabled": true,
    "enable_persistence": true,
    "enable_quality_ranking": true
  },
  "skills": {
    "enabled": true,
    "skill_dirs": [],
    "listing_enabled": true,
    "listing_budget_context_percent": 0.01,
    "listing_max_description_chars": 250,
    "discovery_enabled": true,
    "discovery_max_results": 5,
    "post_tool_query_builder_enabled": false,
    "post_tool_query_builder_model": null,
    "post_tool_query_builder_max_chars": 4000,
    "quality_enabled": true
  },
  
  "tool_cache_ttl": 600,
  "tool_cache_maxsize": 500,

  "debug": false,
  "log_level": "INFO",
  "enabled_backends": [
    {
      "name": "shell",
      "provider_cls": "openspace.grounding.backends.shell.ShellProvider"
    },
    {
      "name": "web",
      "provider_cls": "openspace.grounding.backends.web.WebProvider"
    },
    {
      "name": "mcp",
      "provider_cls": "openspace.grounding.backends.mcp.MCPProvider"
    },
    {
      "name": "gui",
      "provider_cls": "openspace.grounding.backends.gui.GUIProvider"
    }
  ],
  
  "_comment_meta_backend": "Note: 'meta' backend is automatically registered and always available. It provides meta-level tools for querying backend state. Do not add it to enabled_backends as it requires special initialization."
}
