oraios/serena · warning · ValueError

Config overview not yet available

Error message

Config overview not yet available

What it means

The dashboard exposes a `/get_config_overview` HTTP endpoint that returns `self._current_config_overview`. This field is populated asynchronously after startup, so if the endpoint is queried before the overview has been computed, the handler raises ValueError('Config overview not yet available'). It is a startup race, not a configuration defect.

Source

Thrown at src/serena/dashboard.py:311

        def clear_tool_stats_route() -> dict[str, str]:
            self._clear_tool_stats()
            return {"status": "cleared"}

        @self._app.route("/clear_logs", methods=["POST"])
        def clear_logs() -> dict[str, str]:
            self._memory_log_handler.clear_log_messages()
            return {"status": "cleared"}

        @self._app.route("/get_token_count_estimator_name", methods=["GET"])
        def get_token_count_estimator_name() -> dict[str, str]:
            estimator_name = self._tool_usage_stats.token_estimator_name if self._tool_usage_stats else "unknown"
            return {"token_count_estimator_name": estimator_name}

        @self._app.route("/get_config_overview", methods=["GET"])
        def get_config_overview() -> dict[str, Any]:
            result = self._current_config_overview
            if result is None:
                raise ValueError("Config overview not yet available")
            return result

        @self._app.route("/shutdown", methods=["PUT"])
        def shutdown() -> dict[str, str]:
            self._agent.shutdown()
            return {"status": "shutting down"}

        @self._app.route("/get_available_languages", methods=["GET"])
        def get_available_languages() -> dict[str, Any]:
            result = self._get_available_languages()
            return result.model_dump()

        @self._app.route("/add_language", methods=["POST"])
        def add_language() -> dict[str, str]:
            request_data = request.get_json()
            if not request_data:
                return {"status": "error", "message": "No data provided"}
            request_add_language = RequestAddLanguage.model_validate(request_data)

View on GitHub (pinned to 7fcbca7e62)

Solutions

  1. Wait and retry the request after a short delay until startup completes.
  2. Check the dashboard's readiness/started state (or poll a ready endpoint) before calling /get_config_overview.
  3. Poll with backoff in client code instead of a single immediate request.
  4. In the library, initialize `_current_config_overview` to an empty dict or return a 503 until ready.

Example fix

// client before
const cfg = await fetch(`${base}/get_config_overview`).then(r => r.json());
// after
await waitForDashboardReady(base);
const cfg = await fetch(`${base}/get_config_overview`).then(r => r.json());
Defensive patterns

Strategy: retry

Validate before calling

import time, requests
def config_overview_ready(base: str) -> bool:
    try:
        r = requests.get(f"{base}/get_config_overview", timeout=2)
        return r.status_code == 200
    except requests.RequestException:
        return False

Try / catch

import time, requests
for _ in range(10):
    try:
        r = requests.get(f"{base}/get_config_overview", timeout=5)
        if r.status_code == 200:
            overview = r.json(); break
    except requests.RequestException:
        pass
    time.sleep(1)
else:
    raise RuntimeError("dashboard config overview never became available")

Prevention

When it happens

Trigger: Calling GET /get_config_overview on the dashboard web app immediately after the dashboard starts, before the background task that sets `_current_config_overview` has finished.

Common situations: Automated scripts or health checks polling the dashboard endpoint right after Serena starts; UI dashboards that fetch config before the agent finishes loading.

Related errors


AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29). Data as JSON: /api/errors/4e8b4a3e8d1e5e53. Report an issue: GitHub.