ruvnet/ruflo · error
[router] arch router failed with transient error, attempting
Error message
[router] arch router failed with transient error, attempting fallback
What it means
Log warning in makeRouterEndpoint: the arch router failed with a transient error (5xx, timeout, network) rather than a policy error (401/402/403); routing continues with the fallback model chain instead of hard-failing.
Source
Thrown at ruflo/src/ruvocal/src/lib/server/router/endpoint.ts:276
const routeSelection = await archSelectRoute(sanitizedMessages, undefined, params.locals);
// If arch router failed with an error, only hard-fail for policy errors (402/401/403)
// For transient errors (5xx, timeouts, network), allow fallback to continue
if (routeSelection.routeName === ROUTER_FAILURE && routeSelection.error) {
const { message, statusCode } = routeSelection.error;
if (isPolicyError(statusCode)) {
// Policy errors should be surfaced to the user immediately (e.g., subscription required)
logger.error(
{ err: message, ...(statusCode && { status: statusCode }) },
"[router] arch router failed with policy error, propagating to client"
);
throw statusCode ? new HTTPError(message, statusCode) : new Error(message);
}
// Transient errors: log and continue to fallback
logger.warn(
{ err: message, ...(statusCode && { status: statusCode }) },
"[router] arch router failed with transient error, attempting fallback"
);
}
const fallbackModel = config.LLM_ROUTER_FALLBACK_MODEL || routerModel.id;
const { candidates } = resolveRouteModels(routeSelection.routeName, routes, fallbackModel);
let lastErr: unknown = undefined;
for (const candidate of candidates) {
try {
logger.info(
{ route: routeSelection.routeName, model: candidate },
"[router] trying candidate"
);
const ep = await createCandidateEndpoint(candidate);
const gen = await ep({ ...params });
return metadataThenStream(gen, candidate, routeSelection.routeName);View on GitHub (pinned to fa13ee4ad6)
Solutions
- Verify the primary Arch router endpoint is reachable and LLM_ROUTER_ARCH_BASE_URL is correct; the fallback path is expected behavior for transient failures, so repeated occurrences indicate a network or service health problem to fix at the router.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at ruflo/src/ruvocal/src/lib/server/router/endpoint.ts:276 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/2b965db69da9399d.
Report an issue: GitHub.