⚙ Registry Server Infrastructure

The cluster coordinator. Handles node discovery, model manifest distribution, verification ticket queuing, fraud proof tracking, and payment settlements. Analogous to a mining pool's stratum server.

GPU: Not required
Weights: Not required
Stake: Operator role (no stake)
Earns: Operator fees
Start command
python -m network.registry_server \
  --port 50050 \
  --cluster-config cluster_config.json

The cluster config JSON defines the cluster identity, default economics (pricing, staking minimums, slash fractions), and optional on-chain escrow contract addresses.

⛓ Chain Daemon Infrastructure

The share-chain node, analogous to Monero's monerod. Accepts compute shares from nodes, produces blocks, persists them to SQLite, and gossips blocks to other daemon peers. Implements the EIP-1559-style fee oracle.

GPU: Not required
Weights: Not required
Stake: min_stake (on-chain mode)
Earns: Infra allocation (daemon fee share)
Start command
export UNFED_STAKE_EVM_PRIVATE_KEY_FILE=~/.unfed/daemon_stake.key
python -m network.daemon_node \
  --port 50070 \
  --registry localhost:50050 \
  --eth-address 0xYourDaemonAddress \
  --db ~/.unfed/chain.db

New auth requirement: daemon registration now uses the same signed admission and signed lifecycle control-plane flow as other staked roles (share-key proof + EVM stake signature + signed heartbeat/unregister with nonce/timestamp).

⚡ Compute Node GPU Required

The workhorse of the network. Loads a text transformer shard, serves Forward() RPCs, manages KV caches per session, and submits compute shares to the daemon. Supports multiple model architectures via the generic runtime (v2 manifests).

GPU: Required
Weights: One shard file
Stake: min_stake (e.g. 100 UNFED)
Earns: 1.0 share weight per forward pass
Start command
export UNFED_STAKE_EVM_PRIVATE_KEY_FILE=~/.unfed/node_stake.key
python -m node.server \
  --shard-index 1 \
  --port 50052 \
  --model-type smolvlm \
  --shards-dir shards_smolvlm \
  --registry localhost:50050 \
  --eth-address 0xYourAddress

Key arguments: --shard-index (which shard), --model-type (qwen2, smolvlm, qwen2_vl), --shards-dir (weight directory), --eth-address (for on-chain staking), --sampling-rate (verification ticket frequency, default 5%).

Public safety: if you advertise a non-local endpoint, compute startup requires TLS cert/key by default. Run preflight before launch: python -m scripts.testnet_preflight node --advertise 203.0.113.42:50052 --tls-cert /path/to/server.crt --tls-key /path/to/server.key.

📷 Vision Node GPU Required

Processes images through the vision encoder (ViT) for multimodal models. Produces image embeddings that are merged with text tokens at shard 0. Auto-detects model type (SmolVLM or Qwen2-VL) from the manifest.

GPU: Required
Weights: Vision shard file
Stake: min_stake
Earns: Compute shares per image processed
Start command
export UNFED_STAKE_EVM_PRIVATE_KEY_FILE=~/.unfed/vision_stake.key
python -m node.server \
  --shard-index 0 \
  --port 50060 \
  --model-type smolvlm_vision \
  --shards-dir shards_smolvlm \
  --registry localhost:50050 \
  --eth-address 0xYourAddress

🔒 MPC Node (A + B) GPU Required Privacy-Critical

A pair of nodes that replaces shard 0 with privacy-preserving computation. Token IDs are secret-shared between Node A (entry point) and Node B (peer). Neither can reconstruct the original text. Both A and B now register and can advertise MPC capabilities for input and output-stage 2PC roles.

GPU: Required (both nodes)
Weights: Shard 0 file (both nodes)
Stake: Both A and B (on-chain mode)
Earns: 1.0 share weight (split between A and B)
Start Node B (peer) first
export UNFED_STAKE_EVM_PRIVATE_KEY_FILE=~/.unfed/mpcb_stake.key
python -m network.mpc_shard0 \
  --role B \
  --port 50063 \
  --peer localhost:50061 \
  --shards-dir shards_smolvlm \
  --eth-address 0xYourPeerAddress
Then start Node A (entry, registers)
export UNFED_STAKE_EVM_PRIVATE_KEY_FILE=~/.unfed/mpca_stake.key
python -m network.mpc_shard0 \
  --role A \
  --port 50061 \
  --peer localhost:50063 \
  --registry localhost:50050 \
  --shards-dir shards_smolvlm \
  --eth-address 0xYourAddress

Quick Reference

Node Type GPU Weights Stake Module
Registry No No Operator network.registry_server
Daemon No No Required (on-chain mode) network.daemon_node
Compute Yes 1 shard Required node.server
Vision Yes Vision shard Required node.server
MPC (A+B) Yes Shard 0 A only network.mpc_shard0

Suggested System Requirements

Planning guidance for stable operation per node type.

Node Type CPU RAM GPU Storage
Registry1 vCPU1-2 GBNo10 GB SSD
Daemon2 vCPU4 GBNo20 GB SSD
Compute (text)4+ vCPU8-16 GBRecommended40+ GB SSD
Vision4+ vCPU12-24 GBPreferred40+ GB SSD
MPC Node A4 vCPU8-16 GBRecommended30 GB SSD
MPC Node B4 vCPU8-16 GBRecommended30 GB SSD

Budget note: registry-only hosting can run on 1 vCPU / 1 GB, but compute/vision/MPC nodes should run on separate higher-resource hosts.