Dusk

Hex.pmHexdocsCILicense: MITSponsorHex.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.