""" Hermes-Agent-Status (Control-Plane-Read). MC betreibt Hermes NICHT — es zeigt nur Status + verlinkt das standalone hermes-webui. Voller Zugriff + Tools/MCP werden in Hermes' eigener Config verdrahtet (siehe docs/HERMES_SETUP.md). """ import httpx from config import HERMES_API_URL, HERMES_HOME, HERMES_WEBUI_URL, yaml def _reach(url: str, path: str = "") -> bool: try: with httpx.Client(timeout=3.0) as c: return c.get(f"{url}{path}").status_code < 500 except Exception: return False def agent_status() -> dict: """Erreichbarkeit von Gateway (:8642) + WebUI (:8787) + lokale Hinweise.""" home = HERMES_HOME brain_model = "auto" config_path = home / "config.yaml" if config_path.exists(): try: with config_path.open("r", encoding="utf-8") as f: cfg = yaml.load(f) or {} if isinstance(cfg, dict): brain_model = cfg.get("model", {}).get("model", "auto") except Exception: pass return { "gateway_url": HERMES_API_URL, "webui_url": HERMES_WEBUI_URL, "gateway_reachable": _reach(HERMES_API_URL, "/v1/models"), "webui_reachable": _reach(HERMES_WEBUI_URL), "home_exists": home.exists(), "brain_model": brain_model, # Best-effort: welche Verdrahtung lokal sichtbar ist (auf der Box aussagekräftig). "has_config": (home / "config.yaml").exists() or (home / "config.json").exists(), "has_skills": (home / "skills").exists(), "has_memories": (home / "memories").exists(), }