horde

Set up Horde distributed process infrastructure for Elixir/Phoenix apps.

1|Updated May 7, 2026
One-click install
npx skills add https://github.com/agoodway/GoodSkills --skill horde
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: horde
Source: https://github.com/agoodway/GoodSkills/tree/main/skills/horde
Command: npx skills add https://github.com/agoodway/GoodSkills --skill horde

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Horde helps you coordinate uniquely registered GenServer processes across multiple BEAM nodes, so you can reliably run cluster-wide distributed infrastructure without duplicate instances or manual node bookkeeping.

Core Features & Use Cases

  • Cluster-wide registry: Provides unique key registration across nodes using Horde.Registry and via tuples.
  • Dynamic distributed supervision: Enables a Horde-backed dynamic supervisor that distributes started children across the cluster and redistributes on node changes.
  • Operational safety hooks: Includes a cluster monitor pattern to validate joining nodes via a trusted suffix allowlist (defense-in-depth).

Quick Start

Use the horde skill to bootstrap Horde in your Phoenix app by running the command: npx skills add agoodway/GoodSkills --skill horde and then configure your app using the /horde bootstrap subcommand.

Frequently Asked Questions about horde

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run distributed Elixir processes across BEAM nodes without duplicates?

To run distributed Elixir processes across BEAM nodes without duplicates, use a cluster-wide registry and dynamic supervisor to ensure GenServer processes remain unique and automatically redistribute across nodes. This prevents duplicate instances and manual node bookkeeping.

What is the best way to register a singleton GenServer process across an Elixir cluster?

Registering a singleton GenServer process across an Elixir cluster requires a distributed registry using via tuples. This cluster-wide registry guarantees process uniqueness across multiple nodes and enables reliable start, lookup, and ensure_started workflows for your distributed supervision tree.

How do I set up distributed supervision in a Phoenix application?

To set up distributed supervision in a Phoenix application, implement HordeRegistry, HordeSupervisor, and ClusterMonitor modules, then wire them into your supervision tree. This distributes started children across the cluster and automatically redistributes them when node membership changes.

Can I automatically redistribute dynamic supervisor children when a BEAM node joins or leaves?

Yes, you can automatically redistribute dynamic supervisor children when a BEAM node joins or leaves by using a distributed dynamic supervisor. It monitors cluster membership changes and dynamically redistributes started child processes across the remaining Elixir nodes.

How do I validate joining nodes in a distributed Elixir cluster?

You validate joining nodes in a distributed Elixir cluster by implementing a cluster monitor pattern with a trusted suffix allowlist. This defense-in-depth operational safety hook checks incoming BEAM nodes against approved suffixes before allowing them to join the cluster.

Do I need via tuples to look up GenServers in a distributed Elixir registry?

Yes, you need via tuples to look up GenServers in a distributed Elixir registry. Using via tuples with the cluster-wide registry allows you to reliably start, lookup, and ensure_started uniquely registered processes across all connected BEAM nodes.