# `ADK.Plugin.Registry`
[🔗](https://github.com/zeroasterisk/adk-elixir/blob/main/lib/adk/plugin/registry.ex#L1)

Agent-based registry for global plugins.

Stores initialized `{module, state}` tuples. Start as part of your
application supervision tree or manually with `start_link/1`.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `clear`

```elixir
@spec clear() :: :ok
```

Clear all registered plugins.

# `list`

```elixir
@spec list() :: [{module(), term()}]
```

List all registered plugins as `[{module, state}]`.

# `register`

```elixir
@spec register(module() | {module(), term()}) :: :ok
```

Register a plugin. Accepts a module or `{module, config}`.

Calls `init/1` on the module if implemented, otherwise uses config as state.

# `start_link`

```elixir
@spec start_link(keyword()) :: Agent.on_start()
```

Start the plugin registry.

---

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