Hex.pm Hexdocs CI License: MIT Sponsor Hex.pm downloads

Funding

If you find Dusk useful, please consider sponsoring to support ongoing development:


Zenoh brokered cluster for Elixir. Short name, horizon-at-sundown.

gale    Phoenix HTTP/3
ingot   Iroh + Zenoh (Hex: `ingot_cluster`)
dusk    Zenoh + Iroh
orian   BLAKE3 / S3 / S5 storage
zeiroh  Phoenix FLAME overlay
{:dusk, "~> 0.1"}
{:zenohex, "~> 0.10"}
mix dusk.install
# prefers a Burrito single binary (ERTS inside); else Mix escript
# mix dusk.binary   # burrito_out/dusk_<os>
# Linux/macOS: ~/.local/bin    Windows: %LOCALAPPDATA%\elixcoder\bin
dusk backends
dusk match "a/**" a/b
dusk hash ./file --algo blake3
dusk put ./file

Inside a Mix project: mix dusk backends.

{Dusk, connect: "tcp/127.0.0.1:7447", key: "dusk/cluster/**"}

{Dusk, iroh: [alpns: ["dusk/1"]], zenoh: [connect: "tcp/127.0.0.1:7447"]}
zenohd --listen tcp/0.0.0.0:7447

Zig NIF for key-expr match. MIT. github.com/niranjanaryan/dusk

libcluster

config :libcluster,
  topologies: [
    dusk: [
      strategy: Dusk.Strategy.Zenoh,
      config: [connect: "tcp/127.0.0.1:7447", key: "dusk/cluster/nodes"]
    ]
  ]

Phoenix FLAME

config :libcluster,
  topologies: [
    dusk_iroh: [strategy: Dusk.Strategy.Iroh, config: [alpns: ["dusk/1"]]]
  ]

config :flame, :backend, {Dusk.FLAME.Backend, overlay: :both, live: false}

Limits: local spawn loop, not elastic FLAME (FLAME.Terminator / remote boot). Eval: EVAL.md. Scaling: SCALING.md.

Storage: Dusk.Storage.put/2 (:memory, :s3, :s5). Hashes: HASH.md.