Hex.pm Hexdocs CI License: MIT Sponsor

Phoenix FLAME overlay for Iroh (iron) and Zenoh. First-class package in this line, not a throwaway.

gale         HTTP/3 (server + client)
ingot_cluster  Iroh + Zenoh cluster / libcluster
dusk         Zenoh-first cluster
orian        BLAKE3 / S3 / S5 storage
zeiroh       FLAME Iroh/Zenoh backends; launch ingot_cluster or dusk
crucible     boot the machine (local, docker, wrap Fly/K8s/EC2)

Zeiroh runs work (FLAME.call). Crucible creates the box. IngotCluster or Dusk join nodes. Gale talks HTTP.

See EVAL.md (honest limits) and SCALING.md (provisioner + overlay).

Deps

{:zeiroh, "~> 0.1"}
{:ingot_cluster, "~> 0.1", hex: :ingot_cluster, optional: true}
{:dusk, "~> 0.1", optional: true}        # Zenoh-first
{:gale, "~> 0.1", optional: true}        # HTTP
{:flame, "~> 0.5"}

Host still picks one of iroh_beam or zenohex.

CLI

mix zeiroh.install
# prefers a Burrito single binary (ERTS inside); else Mix escript
# mix zeiroh.binary   # burrito_out/zeiroh_<os>
# Linux/macOS: ~/.local/bin    Windows: %LOCALAPPDATA%\elixcoder\bin

zeiroh backends
zeiroh flame --overlay both
zeiroh version

Inside a Mix project: mix zeiroh backends.

Launch

{Zeiroh, overlay: :both, live: false}
{Zeiroh, package: :ingot_cluster, iroh: true, zenoh: [live: false]}
{Zeiroh, package: :dusk, live: false}

FLAME

config :flame, :backend, {Zeiroh.FLAME.Backend,
  overlay: :both,           # :iroh | :zenoh | :both
  provisioner: :local}      # crucible: :docker | :fly | :k8s | :ec2
config :flame, :backend, {Zeiroh.FLAME.Iroh, alpns: ["zeiroh/flame"]}
config :flame, :backend, {Zeiroh.FLAME.Zenoh, connect: "tcp/127.0.0.1:7447"}

Today remote_boot is in-process unless a Crucible/Fly/K8s provisioner is wired with terminator_sup. Overlay advertise still runs.

MIT.