PRs are welcome!
-
clusterverb for distributed Erlang topology - Secret resolution (envelope encryption for ZFS properties)
- Burrito binary builds (single executable)
- SMF manifest generation
-
zoneverb (zonecfg/zoneadm) - illumos-specific testing
-
nodeverb for hardware capability declaration - GPU detection (nvidia-smi, Metal, ROCm)
-
modelverb for ML artifact tracking -
jobverb for distributed job state - Checkpoint as ZFS snapshot
- Smart routing (match model requirements to node capabilities)
- Linux + OpenZFS support
- See docs/gpu-cluster.md
- mDNS/DNS-SD agent discovery
- Web dashboard (LiveView?)
- Metrics export (Prometheus)
- More health check types (TCP, HTTP endpoints)
- Release tarball unpacking + symlink (currently stubbed)
- More examples in
lib/zed/examples/ - Video walkthrough
- Comparison guides (vs Ansible, vs K8s, vs Nomad)
-
Fork & clone
git clone https://github.com/YOUR_USERNAME/zed.git cd zed mix deps.get -
Run tests
mix test # Unit tests (run anywhere) mix test --include zfs_live # ZFS tests (requires FreeBSD + ZFS)
-
Make changes
- Follow existing code style (pattern matching, pipes)
- Add tests for new functionality
- Update docs if needed
-
Submit PR
- Clear description of what and why
- Link to relevant issue if exists
mix deps.get
mix test # 37 unit tests pass without ZFS# In a jail with delegated ZFS dataset
zfs create tank/zed-test
zfs allow -ldu $USER create,destroy,mount,snapshot,rollback tank/zed-test
mix test --include zfs_live # 58 tests totalSee docs/MULTI_HOST_TEST.md for setting up agent jails.
- Pattern matching over conditionals
- Pipes (
|>) for data transformation withfor happy-path chains- No unnecessary abstractions
- Tests for public functions
# Good
def process(data) do
data
|> validate()
|> transform()
|> persist()
end
# Good
with {:ok, validated} <- validate(data),
{:ok, transformed} <- transform(validated) do
persist(transformed)
endlib/zed/
├── dsl.ex # Macro DSL (use Zed.DSL)
├── ir.ex # Intermediate representation
├── ir/validate.ex # Compile-time validation
├── converge.ex # Main convergence API
├── converge/
│ ├── diff.ex # Desired vs actual state
│ ├── plan.ex # Ordered execution plan
│ └── executor.ex # Execute steps
├── zfs/
│ ├── dataset.ex # Dataset operations
│ ├── property.ex # com.zed:* properties
│ ├── snapshot.ex # Snapshot operations
│ └── replicate.ex # zfs send/receive
├── platform/
│ ├── freebsd.ex # rc.d, jails
│ ├── illumos.ex # SMF, zones (stub)
│ └── linux.ex # Dev/test only
├── agent.ex # Per-host GenServer
└── cluster.ex # Multi-host coordination
Open an issue or start a discussion. We're friendly.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.