Distributed compute / Connect a machine

One command,
one revocable credential.

A machine joins a network by running hetero-worker with a one-use code from Hostwatch. It keeps a credential only it holds, reports itself every fifteen seconds, and follows the settings you choose for it.

What a machine can lend

MachineLendsStage
Mac with Apple siliconIts GPU and unified memory, and its CPUMetal (hetero-stage), CPU (hetero-stage-cpu)
PC with a graphics cardThe card’s memory, on Windows or LinuxWebGPU through Vulkan or DX12 (hetero-stage-gpu)
Any Linux, macOS or Windows machineProcessor and RAM; in a container, its memory limitThe portable CPU kernels (hetero-stage-cpu)

1. Build the worker

The worker is part of weavatrix-hetero, built from source with Rust (rustup.rs). During the beta its repository is shared with participating organizations: ask Support for access. On a Mac the Metal stage needs Xcode’s command-line tools; on a PC the card’s Vulkan or DX12 driver; on Windows the MSVC build tools.

git clone https://github.com/Weavatrix/weavatrix-hetero.git
cd weavatrix-hetero
cargo build --release -p hetero-jobs -p hetero-cpu -p hetero-gpu -p hetero-cli
# On a Mac, the Metal stage too:
cargo build --release -p hetero-qwen --features heteropack --bin hetero-stage

The binaries land in target/release: hetero-worker beside the stages it starts, and hetero, the CLI.

2. Create a join code

In Hostwatch, open Compute, choose the network and how long the code lives (15 minutes, an hour or a day), and create it. Owners and admins of the organization can do this; the code joins exactly one machine and is shown once.

3. Run the command it shows

target/release/hetero-worker \
  --hub https://gethostwatch.com/api/compute/hub \
  --join ABCD-EFGH-JKLM \
  --token-file ~/.hetero/compute.token \
  --models ~/.hetero/models

The worker writes the machine’s credential to --token-file (readable by its owner only), then keeps running. The machine appears on the Compute page within seconds, lending half its power. Leave it running under launchd, systemd or a Windows service; on a restart, leave out --join.

Useful options: --name to name the machine, --listen-host 0.0.0.0 --advertise ADDRESS when coordinators reach it on another interface (a container, a VPN), --port-base 7811 for fixed ports to open in a firewall.

In a container

docker run -d --name hetero-worker --cpus 4 --memory 8g -p 7811:7811 \
  -v /opt/hetero:/opt/hetero:ro -v hetero-state:/state \
  debian:trixie-slim /opt/hetero/hetero-worker \
  --hub https://gethostwatch.com/api/compute/hub --join ABCD-EFGH-JKLM \
  --token-file /state/compute.token --models /state/models \
  --listen-host 0.0.0.0 --advertise HOST-ADDRESS --port-base 7811

The worker reads the container’s memory limit and CPU quota, so a share of it is a share of what the container may use.

4. Choose its share

On its card, set the power share, which backends lend and how much memory, its hours, the jobs it takes, and whether it joins the community pool. Every setting →

Remove a machine

Remove it from its card. Its credential stops working at once, its running jobs end, and the worker stops. To bring it back, create a new code.

NextControl and permissions