{"record":{"id":"b1f6f83486f24bac","repo":"oraios/serena","slug":"no-active-project","errorCode":null,"errorMessage":"No active project","messagePattern":"No active project","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/serena/dashboard.py","lineNumber":661,"sourceCode":"            all_languages = [lang.value for lang in LanguageServerId.iter_all(include_experimental=True)]\n\n            # Filter out already added languages for the active project\n            project = self._agent.get_active_project()\n            if project:\n                current_languages = [lang.value for lang in project.project_config.language_servers]\n                available_languages = [lang for lang in all_languages if lang not in current_languages]\n            else:\n                available_languages = all_languages\n\n            return ResponseAvailableLanguages(languages=sorted(available_languages))\n\n        return self._agent.execute_task(run, logged=False)\n\n    def _get_memory(self, request_get_memory: RequestGetMemory) -> ResponseGetMemory:\n        def run() -> ResponseGetMemory:\n            project = self._agent.get_active_project()\n            if project is None:\n                raise ValueError(\"No active project\")\n\n            content = project.memory_manager.load_memory(request_get_memory.memory_name)\n            return ResponseGetMemory(content=content, memory_name=request_get_memory.memory_name)\n\n        return self._agent.execute_task(run, logged=False)\n\n    def _save_memory(self, request_save_memory: RequestSaveMemory) -> None:\n        def run() -> None:\n            project = self._agent.get_active_project()\n            if project is None:\n                raise ValueError(\"No active project\")\n            project.memory_manager.save_memory(request_save_memory.memory_name, request_save_memory.content, is_tool_context=False)\n\n        self._agent.execute_task(run, logged=True, name=\"SaveMemory\")\n\n    def _delete_memory(self, request_delete_memory: RequestDeleteMemory) -> None:\n        def run() -> None:\n            project = self._agent.get_active_project()","sourceCodeStart":643,"sourceCodeEnd":679,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/serena/dashboard.py#L643-L679","documentation":"The dashboard's get-memory handler (`_get_memory`) runs a task that calls `agent.get_active_project()`. When no project has been activated, it returns None and the handler raises ValueError('No active project'). Serena requires an active project context before any memory can be loaded.","triggerScenarios":"Calling the dashboard /get_memory endpoint while the agent has no active project — e.g. before `activate_project` was ever called, or after switching/shutdown cleared the active project.","commonSituations":"Tools or clients invoking memory endpoints on a fresh Serena session without activating a project; sessions started outside a project directory; the active project failing to load at startup.","solutions":["Activate a project first (call the activate_project tool / equivalent agent API), then retry get_memory.","Start Serena from within the project directory so a project is auto-activated.","Check for an active project client-side before calling memory endpoints.","Verify the project path is correct and loads — an activation failure can leave no active project."],"exampleFix":"// before\ncallTool(\"get_memory\", {memory_name: \"notes\"});\n// after\nif (!hasActiveProject()) callTool(\"activate_project\", {path: \"/repo\"});\ncallTool(\"get_memory\", {memory_name: \"notes\"});","handlingStrategy":"validation","validationCode":"active = agent.get_active_project() if hasattr(agent, \"get_active_project\") else None\nif active is None:\n    activate_project(project_path)  # or call the activate_project tool first","typeGuard":"def has_active_project(agent) -> bool:\n    return agent.get_active_project() is not None","tryCatchPattern":"try:\n    resp = requests.get(f\"{dashboard}/get_memory\", params={\"memory_name\": name})\n    resp.raise_for_status()\nexcept ValueError:\n    activate_project(project_path)\n    resp = requests.get(f\"{dashboard}/get_memory\", params={\"memory_name\": name})","preventionTips":["Always activate a project before any memory endpoint call.","Start the agent from within the project directory so activation is automatic.","Check the active project via get_active_project or the dashboard state before memory operations.","Confirm project activation succeeded (path has valid .serena config) before proceeding."],"tags":["dashboard","memory","project-state","http"],"backgroundTag":"no-active-project","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}