# `ExternalService.RateLimiter.Local`
[🔗](https://github.com/jvoegele/external_service/blob/main/lib/external_service/rate_limiter/local.ex#L1)

The default rate limiter backend: a node-local token bucket.

You get this without configuring anything. It allows a burst of up to `:limit`
calls and then paces the rest at one call per `:per / :limit`, refilling one
call at a time rather than handing out a fresh full burst at each window
boundary.

It is **node-local**: counters live in this node's memory, so N nodes running
the same service each enforce the limit separately and the external service can
see up to N times the configured rate. For a limit shared across a cluster, use
`ExternalService.RateLimiter.Hammer`.

State is a single `:atomics` slot per service, so this backend needs no owning
process, no supervision tree, and no dependency.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
