Sagents.Horde.ClusterConfig (Sagents v0.5.1)

Copy Markdown

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]}

Summary

Functions

Returns members for auto-discovery mode.

Returns members for regional clustering.

Resolve cluster members for a given module name.

Validates Horde configuration at startup.

Functions

auto_members(module_name)

Returns members for auto-discovery mode.

Includes all connected nodes plus the current node.

regional_members(module_name, region)

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(module_name)

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.