# `Ankusa.Routes.Store.ETS`
[🔗](https://github.com/jamescarr/ankusa/blob/ankusa-v0.7.0/packages/ankusa/lib/ankusa/routes/store/ets.ex#L1)

The default route store: definitions in this node's memory, with a hard cap
and a config seed.

`config.routes.seed` loads at boot, which is what makes a standalone (no
Redis) deployment survivable across restarts: a route an operator added
*through the API* is gone on restart, but the seed is not. The process owns
the instance's snapshot table (`Ankusa.Routes.Snapshot`), and every mutation
writes the rows it changes there, so the guard sees the change on the very
next request — no TTL wait, no polling.

Seeding happens **only at boot**, into an empty store — on every *instance*
boot: a seed route deleted through the API returns at the next restart
unless it is also removed from `config.routes.seed`. (Only the Redis store
seeds once per namespace.) A store process that crashes and is restarted
inside a running instance does not seed again: it resumes from the snapshot
table it left, API-created routes included.

The process registers under `Ankusa.via(instance, :routes_store)`; there is
no global name, so two instances in one VM never collide.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

---

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