ruvnet/ruflo · error

[router] tools bypass requested but LLM_ROUTER_TOOLS_MODEL i

Error message

[router] tools bypass requested but LLM_ROUTER_TOOLS_MODEL is not set

What it means

Log warning in pickToolsCapableModel: a tools bypass was requested (active MCP servers detected) but the LLM_ROUTER_TOOLS_MODEL env var is unset, so no preferred tools model can be selected and undefined is returned.

Source

Thrown at ruflo/src/ruvocal/src/lib/server/router/toolsRoute.ts:37

	try {
		const reqMcp = (locals as LocalsWithMcp | undefined)?.mcp;
		const byConfig =
			Array.isArray(reqMcp?.selectedServers) && (reqMcp?.selectedServers?.length ?? 0) > 0;
		const byName =
			Array.isArray(reqMcp?.selectedServerNames) && (reqMcp?.selectedServerNames?.length ?? 0) > 0;
		return Boolean(byConfig || byName);
	} catch {
		return false;
	}
}

export function pickToolsCapableModel(
	models: ProcessedModel[] | undefined
): ProcessedModel | undefined {
	const preferredRaw = (config as unknown as Record<string, string>).LLM_ROUTER_TOOLS_MODEL;
	const preferred = preferredRaw?.trim();
	if (!preferred) {
		logger.warn("[router] tools bypass requested but LLM_ROUTER_TOOLS_MODEL is not set");
		return undefined;
	}
	if (!models?.length) return undefined;
	const found = models.find((m) => m.id === preferred || m.name === preferred);
	if (!found) {
		logger.warn(
			{ configuredModel: preferred },
			"[router] configured tools model not found; falling back to Arch routing"
		);
		return undefined;
	}
	logger.info({ model: found.id ?? found.name }, "[router] using configured tools model");
	return found;
}

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Set LLM_ROUTER_TOOLS_MODEL to a configured model name, or do not request the tools bypass route.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at ruflo/src/ruvocal/src/lib/server/router/toolsRoute.ts:37 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/f42dd202a4ad7504. Report an issue: GitHub.