loom-rate-limiting

Installation
SKILL.md

Rate Limiting

Overview

Control the request rate a client can make: protect from abuse, enforce fair usage, shed load. Two decisions dominate correctness: which algorithm (burst tolerance vs accuracy vs memory) and how to make the counter atomic in a distributed setting. Everything else is headers and policy.

Algorithm Selection

Algorithm Burst behavior Accuracy Memory/key Use when
Fixed window Allows 2× limit at window boundary Poor 1 counter Cheap, coarse limits where boundary burst is acceptable
Sliding window log Exact, no boundary burst Exact O(limit) timestamps Low limits needing precision (e.g. 5 login attempts)
Sliding window counter Smooths boundary, small over/under ~99% 2 counters General-purpose distributed limiting (best default)
Token bucket Allows configurable burst up to capacity Rate-exact avg 2 numbers (tokens, ts) APIs that should tolerate bursts (most public APIs)
Leaky bucket No burst; smooths to constant output Shapes traffic Queue Protecting a fragile downstream at fixed throughput
GCRA Burst = capacity, single value Exact 1 timestamp (TAT) High-throughput distributed limiting; token-bucket equivalent, cheaper

Fixed-window boundary burst is the classic footgun: with limit=100/min, a client can send 100 at 00:59.9 and 100 at 01:00.1 — 200 requests in ~0.2s while never violating either window. If bursts matter, use sliding-window or token-bucket.

Installs
6
Repository
cosmix/loom
GitHub Stars
53
First Seen
Apr 29, 2026
loom-rate-limiting — cosmix/loom