# `Kreuzberg.Plugin.Supervisor`
[🔗](https://github.com/kreuzberg-dev/kreuzberg/blob/main/lib/kreuzberg/plugin/supervisor.ex#L1)

OTP Supervisor for the Kreuzberg plugin system.

This supervisor manages the plugin system's core components, specifically
the Registry GenServer that maintains the registry of loaded plugins.

## Supervision Strategy

Uses a `:one_for_one` strategy, meaning if the Registry process terminates,
only that process will be restarted, not the entire supervision tree.

## Usage

The supervisor is typically started automatically as part of the Kreuzberg
application supervision tree. To start it manually:

    {:ok, pid} = Kreuzberg.Plugin.Supervisor.start_link([])

## Children

- `Kreuzberg.Plugin.Registry` - GenServer managing plugin registration and lookup

# `child_spec`

```elixir
@spec child_spec(keyword()) :: Supervisor.child_spec()
```

Return the supervisor child specification.

This is useful for including the plugin supervisor in a parent supervision tree.

## Returns
  * Child specification map

# `start_link`

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

Start the plugin supervisor.

## Options
  * `:name` - Registered process name (defaults to module name)

## Returns
  * `{:ok, pid()}` - Successfully started
  * `{:error, reason}` - Failed to start

---

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