Get started with Ployz: deploy your first workload
This guide takes you from a fresh machine to a running Ployz cluster with a deployed workload. You will install the CLI and daemon, initialize a mesh network, add a node, deploy an application, and confirm it is serving traffic. The entire sequence runs in under five minutes on a supported machine.
Install Ployz
Section titled “Install Ployz”Run the one-line installer. It detects your platform, downloads the latest release, installs the binaries to ~/.local/bin, and registers the daemon as a user service.
curl -fsSL https://ployz.sh | bashThe installer prints a summary of what it installed and where. When it finishes, confirm the daemon is running:
ployzctl statusExpected output:
daemon: runningruntime: docker # macOS defaultsocket: /tmp/ployz/ployzd.sockInitialize a mesh
Section titled “Initialize a mesh”A mesh is the WireGuard overlay network that connects your cluster nodes. Initialize one on this machine and give it a name that identifies the cluster.
ployzctl mesh init my-clusterThis command generates a WireGuard key pair for this node, starts the overlay interface, initializes NATS as the cluster state substrate, and prints the join token other machines will use to enter the mesh.
mesh initialized: my-clusternode id: node_01jx...overlay: 10.101.0.1/24join token: ployz-join-...Save the join token. You will pass it to machine add when joining additional nodes.
Add a machine
Section titled “Add a machine”To add a second machine to the cluster, run machine add from the first machine. Pass the SSH address of the new node as a positional argument. Ployz SSHs in, installs the daemon if needed, joins it to the mesh, and verifies reachability.
ployzctl machine add --network my-cluster user@203.0.113.42Expected output:
machine added: node_02jx... address: 203.0.113.42 overlay: 10.101.0.2/24 status: activeConfirm both machines appear in the cluster:
ployzctl machine lsID REGION ROLE STATUSnode_01jx... local active runningnode_02jx... - active runningDeploy a workload
Section titled “Deploy a workload”Deploy a container image to the cluster using deploy service. Provide a service name, the image, the namespace, and the port mapping.
ployzctl deploy service web \ --image nginx:alpine \ --namespace default \ --publish 80:80Ployz moves through visible phases — plan, apply, commit — and reports each one. The deploy completes or fails cleanly. When the command returns, the workload is either live or the deploy has failed with a clear error.
Verify the workload
Section titled “Verify the workload”Check that all machines and workloads are running:
ployzctl statusdaemon: runningruntime: dockersocket: /tmp/ployz/ployzd.sockTo inspect what is deployed in a namespace, preview the current state against your manifest:
ployzctl deploy preview -f deploy.tomlMake a request to the workload through its cluster-internal address (requires being on the overlay network):
curl http://web.default.cluster.localBranch for a PR environment (optional)
Section titled “Branch for a PR environment (optional)”To create an isolated environment for a pull request, branch the namespace. Services are copied by default; volumes start fresh.
ployzctl branch apply default pr-42 \ --service-mode branch \ --volume-mode freshDeploy the PR build into the branched namespace:
ployzctl deploy service web \ --image nginx:alpine \ --namespace pr-42 \ --publish 80:80When done, the branch namespace can be removed with another deploy targeting that namespace.
Next steps
Section titled “Next steps”Manual install, building from source, platform notes, and daemon configuration options.
Understand the primitives-not-policies philosophy and how Ployz compares to Kubernetes.