# `ConduitMcp.Application`
[🔗](https://github.com/nyo16/conduit_mcp/blob/v0.10.1/lib/conduit_mcp/application.ex#L1)

OTP application for ConduitMCP.

ConduitMCP is largely stateless — each HTTP request runs in its own Bandit
process — so the supervision tree is deliberately small. Its job is to own
the few long-lived ETS tables that must outlive short-lived request
processes:

  * `ConduitMcp.Cancellation.Owner` — always started.
  * `ConduitMcp.Tasks.EtsStore.Owner` — started only when the default
    in-memory tasks store is in use (skipped for a custom `:tasks_store`).
  * `ConduitMcp.OAuth.KeyProvider.JWKS.Owner` — started when the JWKS key
    provider is compiled in (i.e. when `Req` is available).

It also seeds the validation config into `:persistent_term` for O(1) reads on
every request.

---

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