Distributed Elixir

Whistle uses a Registry and a DynamicSupervisor to start and monitor running programs.

By default, we use Elixir's versions: Elixir.Registry and Elixir.DynamicSupervisor which spawn programs in a single node, if you've got multiple Elixir nodes connected, you might want to distribute programs and prevent launching the same program in two different nodes.

Horde is a very good drop in replacement for the Elixir core modules, as it supports the same API, you can swap the registry and supervisor used like this:

config :whistle,
  program_registry: Horde.Registry,
  program_supervisor: Horde.DynamicSupervisor