Setup Guide

Turn any machine into a Synet provider node. Hardware probe, identity, settlement, and pairing all handled by the CLI. No manual key management.

One command

Curl pipe install. Probes hardware, generates keys, starts daemon.

Any hardware

NVIDIA, AMD, Apple Silicon, or CPU. Auto-detected on first run.

Get paid

Every 100ms the aggregator posts a Merkle root. You claim, you earn.

No password

The install command IS the credential. One-time link token, 15-min TTL.

1

Create an account

Drop your email on the home page. We mint an account and a one-time install command. The install command encodes your account ID so the daemon knows who it belongs to.
No password. The install command is the credential. It contains your account ID and a one-time link token valid for 15 minutes.
2

Run the install on the box

SSH into the machine and paste the install command. It downloads synetd, runs a hardware probe, generates an EOA (for payouts), generates a libp2p key, and starts the daemon as a systemd service.
curl -fsSL https://get.synet.run/install.sh | sh -s -- --pair-code PAIR-XXXX-XXXX
  • Hardware probe: detects GPU vendor, VRAM, compute capability, memory bandwidth
  • EOA generation: secp256k1 keypair for on-chain claim transactions
  • libp2p key: ed25519 for peer identity and heartbeat signatures
  • Systemd service: auto-restarts on crash, logs to journald
3

Pair the box to your account

The install gets the daemon running, but it is not yet linked to your web dashboard. Use the CLI pairing flow to bind it.
Two ways to pair:
1. From the box: run synetctl pair --gateway http://your-dashboard:9090. It prints a code and a URL. Open the URL in a browser to claim the box.
2. From the dashboard: open the box node page (click any node in /nodes), go to the Setup tab, click "Generate pairing code", then open the printed URL.
4

Set your contribution

Pick how much bandwidth, RAM, and compute to contribute. Defaults are generous. You can change these anytime without restarting the daemon.
synetctl config --region africa-south --bandwidth 50 --ram 8 --gpu on
  • --region: your geographic region (affects aggregator routing)
  • --bandwidth: Mbps to contribute (upstream cap)
  • --ram: GB of system RAM to allocate
  • --gpu: on / off / auto (whether to expose GPU compute)
5

Verify it is live

Check the node is online and emitting heartbeats at 10 Hz. Per-interval rewards are claimable from the Earnings tab.
synetctl status
From the dashboard, the box should show online in /nodes and emitting intervals. Check the /stats page for aggregate fleet metrics.
6

Maintain

  • Update: synetctl update - pulls the latest binary, restarts cleanly
  • Drain: synetctl drain - finishes in-flight work, exits (use before shutting down)
  • Logs: journalctl -u synetd -f on Linux, or ~/.synetd/logs/ directly
  • Uninstall: synetctl uninstall - stops the service, removes the binary, keeps the keys
  • Unpair: synetctl config then re-pair with a new account using synetctl pair

To unpair all existing nodes and re-pair from scratch using the CLI, follow these three steps. This is the complete end-to-end pairing flow.

Step A - On the box

Generate a pairing code

Run the pair command on the machine running synetd. It POSTs to the dashboard gateway and gets back a one-time code.

synetctl pair --gateway http://127.0.0.1:9090
Output: PAIR-XXXX-XXXX and a URL like /pair?code=PAIR-XXXX-XXXX
Step B - In your browser

Open the pairing URL

Open the URL printed by the CLI in a browser. If you have an account, it binds the node. If not, it prompts you to create one first.

The code is valid for 15 minutes. One-shot: once used, it cannot be reused.
Step C - Verify

Check it is bound

The node now appears in /nodes under your account. Check its status and heartbeat intervals.

synetctl status
To unpair: the daemon does not have an explicit unpair command. To reset, clear localStorage in the browser (Sign out button), then re-run synetctl pair with a new or existing account.
How does pairing work technically?

The daemon synetctl pair command POSTs to /api/pair/create with its peer_id and (optionally) an account_id. The gateway generates a 12-char base32 code, stashes it in a 15-minute in-memory store keyed to the peer_id, and returns the code plus a URL like /pair?code=PAIR-XXXX-XXXX.

When you open the URL, the web side calls /api/pair/create with the code and your account_id. The gateway looks up the pending pair, verifies the account exists, and binds the peer_id to the account. After that, the peer_id is owned by the account until you unlink it.

What hardware tiers are supported?

Four tiers, all settle on the same contract:

  • Apple Silicon - M1/M2/M3/M4 series, Metal + MLX paths
  • NVIDIA - sm_80 (A100), sm_86 (RTX 30xx), sm_90 (H100) via CUDA
  • AMD - gfx90a (MI200), gfx1100 (RX 7000) via ROCm
  • CPU - x86_64 or arm64, no GPU required, lower per-interval reward

The daemon probes on startup and reports the tier to the regional aggregator. Routing decisions weight by tier.

What gets sent to the network?

Heartbeat proofs (interval counter + BLAKE3 Merkle root of model frames, signed with your ed25519 key), a one-time capability report (hardware tier, NAT type, sustained throughput, sustained thermal score), and the inference work itself.

No prompts, no model weights, no logs leave your machine. The EOA on the box only signs claim transactions against the escrow contract.

What if I go offline?

You stop earning. There is no penalty for being offline. The aggregator excludes you from the next interval bitmap and you do not appear in the next Merkle root. The dashboard reflects offline until the daemon comes back.

Can I run multiple nodes on one machine?

Yes - each node needs its own libp2p key and EOA. Use a separate --identity-path and --eoa-path per instance, and bind each to a different control port (e.g. --control-listen 0.0.0.0:9090 and :9091).

What settlement chain is this on?

MegaETH testnet for alpha. Same contract addresses and ABI as the planned mainnet config. Switching is one CLI flag.

Copied