{"record":{"id":"1bb8df6b9dbc6c80","repo":"ruvnet/ruflo","slug":"router-configured-tools-model-not-found-falling","errorCode":null,"errorMessage":"[router] configured tools model not found; falling back to Arch routing","messagePattern":"\\[router\\] configured tools model not found; falling back to Arch routing","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"ruflo/src/ruvocal/src/lib/server/router/toolsRoute.ts","lineNumber":43,"sourceCode":"\t\treturn Boolean(byConfig || byName);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function pickToolsCapableModel(\n\tmodels: ProcessedModel[] | undefined\n): ProcessedModel | undefined {\n\tconst preferredRaw = (config as unknown as Record<string, string>).LLM_ROUTER_TOOLS_MODEL;\n\tconst preferred = preferredRaw?.trim();\n\tif (!preferred) {\n\t\tlogger.warn(\"[router] tools bypass requested but LLM_ROUTER_TOOLS_MODEL is not set\");\n\t\treturn undefined;\n\t}\n\tif (!models?.length) return undefined;\n\tconst found = models.find((m) => m.id === preferred || m.name === preferred);\n\tif (!found) {\n\t\tlogger.warn(\n\t\t\t{ configuredModel: preferred },\n\t\t\t\"[router] configured tools model not found; falling back to Arch routing\"\n\t\t);\n\t\treturn undefined;\n\t}\n\tlogger.info({ model: found.id ?? found.name }, \"[router] using configured tools model\");\n\treturn found;\n}\n","sourceCodeStart":25,"sourceCodeEnd":52,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/ruflo/src/ruvocal/src/lib/server/router/toolsRoute.ts#L25-L52","documentation":"Log warning in pickToolsCapableModel: LLM_ROUTER_TOOLS_MODEL is set but no loaded model matches it by id or name, so the configured tools model is discarded and routing falls back to Arch selection.","triggerScenarios":"Thrown at ruflo/src/ruvocal/src/lib/server/router/toolsRoute.ts:43 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Correct LLM_ROUTER_TOOLS_MODEL to match a model present in the models configuration, or remove the setting to use Arch routing."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}