ruvnet/ruflo · error
-32000
-32000
Error message
Rate limit exceeded
What it means
rateLimitMiddleware() checked the session/ip bucket and result.allowed was false — the client exceeded the configured request rate for the window. The response carries X-RateLimit-Remaining/Reset headers; the client should wait until resetIn elapses before retrying rather than treat this as a server fault.
Source
Thrown at v3/@claude-flow/mcp/src/rate-limiter.ts:251
config?: Partial<RateLimitConfig>
): RateLimiter {
return new RateLimiter(logger, config);
}
/**
* Express/Connect middleware for rate limiting
*/
export function rateLimitMiddleware(rateLimiter: RateLimiter) {
return (req: any, res: any, next: () => void) => {
const sessionId = req.headers['x-session-id'] || req.ip;
const result = rateLimiter.check(sessionId);
res.setHeader('X-RateLimit-Remaining', result.remaining);
res.setHeader('X-RateLimit-Reset', Math.ceil(Date.now() / 1000) + Math.ceil(result.resetIn / 1000));
if (!result.allowed) {
res.setHeader('Retry-After', result.retryAfter);
res.status(429).json({
jsonrpc: '2.0',
id: null,
error: {
code: -32000,
message: 'Rate limit exceeded',
data: { retryAfter: result.retryAfter },
},
});
return;
}
rateLimiter.consume(sessionId);
next();
};
}
View on GitHub (pinned to fa13ee4ad6)
Solutions
- Back off and retry after the rate limit window resets (respect Retry-After if provided).
- Reduce request frequency, batch operations, or request a higher rate limit quota.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at v3/@claude-flow/mcp/src/rate-limiter.ts:251 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/d3c3be1ec7b5aee5.
Report an issue: GitHub.