# libcluster_mesh v0.1.0 - Table of Contents

> libcluster strategies for mesh VPNs (Tailscale, NetBird, LOLIPOP Zero Trust Link, plain WireGuard) that discover peers by polling the local mesh daemon — no cloud API, no API keys, no static host lists

## Pages

- [libcluster_mesh](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- Overview
  - [LibclusterMesh](LibclusterMesh.md): [libcluster](https://hexdocs.pm/libcluster) strategies for mesh VPNs that
discover peers by polling the local mesh daemon.

- Strategies
  - [Cluster.Strategy.LolipopZTL](Cluster.Strategy.LolipopZTL.md): libcluster strategy that discovers peers by polling the local
[LOLIPOP Zero Trust Link](https://lolipop.jp/) (ZTL) daemon via
`ztlctl status`.
  - [Cluster.Strategy.Netbird](Cluster.Strategy.Netbird.md): libcluster strategy that discovers peers by polling the local
[NetBird](https://netbird.io/) daemon via `netbird status --json`.
  - [Cluster.Strategy.TailscaleLocal](Cluster.Strategy.TailscaleLocal.md): libcluster strategy that discovers peers by polling the local Tailscale
daemon via `tailscale status --json`.
  - [Cluster.Strategy.WireGuard](Cluster.Strategy.WireGuard.md): libcluster strategy for plain WireGuard meshes, polling
`wg show <interface> dump`.

- Internals
  - [LibclusterMesh.CIDR](LibclusterMesh.CIDR.md): Minimal IPv4 CIDR matching, for selecting cluster members on meshes that
have no hostnames (e.g. plain WireGuard).

  - [LibclusterMesh.Config](LibclusterMesh.Config.md): Validated configuration shared by all mesh strategies.
  - [LibclusterMesh.NetbirdStatus](LibclusterMesh.NetbirdStatus.md): Parses `netbird status --json` output into `LibclusterMesh.Peer` structs.
  - [LibclusterMesh.Parse](LibclusterMesh.Parse.md): Field-level parsing shared by the mesh status parsers.
  - [LibclusterMesh.Peer](LibclusterMesh.Peer.md): A peer on the mesh network, as reported by the local mesh daemon.
  - [LibclusterMesh.Poller](LibclusterMesh.Poller.md): Shared GenServer poll loop for mesh strategies.
  - [LibclusterMesh.Runner](LibclusterMesh.Runner.md): Behaviour for running an external command and capturing its output.
  - [LibclusterMesh.Runner.SystemCmd](LibclusterMesh.Runner.SystemCmd.md): Default `LibclusterMesh.Runner`, running the mesh CLI through a port.
  - [LibclusterMesh.TailscaleStatus](LibclusterMesh.TailscaleStatus.md): Parses `tailscale status --json` output into `LibclusterMesh.Peer` structs.
  - [LibclusterMesh.WireGuardDump](LibclusterMesh.WireGuardDump.md): Parses `wg show <interface> dump` output into `LibclusterMesh.Peer` structs.
  - [LibclusterMesh.ZTLStatus](LibclusterMesh.ZTLStatus.md): Parses `ztlctl status` output (YAML) into `LibclusterMesh.Peer` structs.

