ruvnet/ruflo · error

Too Many Requests

Error message

Too Many Requests

What it means

HTTP 429 'Too Many Requests' response produced by createRateLimiterMiddleware when limiter.consume(key) reports the quota for the client key (IP or x-forwarded-for) is exhausted; rate-limit headers (limit, remaining) are attached before the response.

Source

Thrown at v3/@claude-flow/shared/src/resilience/rate-limiter.ts:410

 */
export function createRateLimiterMiddleware(limiter: RateLimiter) {
  return (req: { ip?: string; headers?: Record<string, string> }, res: {
    status: (code: number) => { json: (body: unknown) => void };
    setHeader: (name: string, value: string) => void;
  }, next: () => void): void => {
    // Get key from IP or header
    const key = req.ip || req.headers?.['x-forwarded-for'] || 'anonymous';

    const result = limiter.consume(key);

    // Set rate limit headers
    res.setHeader('X-RateLimit-Limit', String(result.total));
    res.setHeader('X-RateLimit-Remaining', String(result.remaining));
    res.setHeader('X-RateLimit-Reset', String(Math.ceil(result.resetAt.getTime() / 1000)));

    if (!result.allowed) {
      res.setHeader('Retry-After', String(Math.ceil(result.retryAfter / 1000)));
      res.status(429).json({
        error: 'Too Many Requests',
        retryAfter: result.retryAfter,
        resetAt: result.resetAt.toISOString(),
      });
      return;
    }

    next();
  };
}

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Back off and retry after the rate limit window resets (respect Retry-After if provided).
  2. Reduce request frequency, batch operations, or request a higher rate limit quota.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at v3/@claude-flow/shared/src/resilience/rate-limiter.ts:410 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


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