# `Sagents.Horde.ClusterConfig`

Configuration helpers for Horde clustering.

## Configuration Examples

### Auto-discovery (all nodes in cluster)

    config :sagents, :horde,
      members: :auto

### Static member list

    config :sagents, :horde,
      members: [
        {Sagents.Horde.AgentsSupervisorImpl, :node1@host},
        {Sagents.Horde.AgentsSupervisorImpl, :node2@host}
      ]

### Dynamic via MFA tuple

    config :sagents, :horde,
      members: {MyApp.HordeConfig, :get_members, []}

### Regional clustering (Fly.io example)

    # In config/runtime.exs
    region = System.get_env("FLY_REGION") || "default"

    config :sagents, :horde,
      members: {Sagents.Horde.ClusterConfig, :regional_members, [region]}

# `auto_members`

Returns members for auto-discovery mode.

Includes all connected nodes plus the current node.

# `regional_members`

Returns members for regional clustering.

Only includes nodes with matching region metadata.
Useful for Fly.io deployments where you want agents to stay
within a geographic region.

## Examples

    # In config/runtime.exs
    region = System.get_env("FLY_REGION") || "default"

    config :sagents, :horde,
      members: {Sagents.Horde.ClusterConfig, :regional_members, [region]}

# `resolve_members`

Resolve cluster members for a given module name.

Reads the `:members` config from `:sagents, :horde` and resolves it
to a list of `{module, node}` tuples suitable for Horde.

# `validate!`

Validates Horde configuration at startup.

Raises if configuration is invalid.

---

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