👷 Worker Node

Overview

Worker nodes are the computational backbone of the SIMD network. They execute CFD simulation jobs assigned by the orchestrator and return results when complete.

Workers can be configured with various capabilities:

  • GPU Workers — Equipped with NVIDIA GPUs for accelerated simulations
  • CPU Workers — Use CPU-only computation for compatible workloads
  • Docker Support — Can run containerized simulation environments
  • Python Runtime — Have Python environment for scripted jobs

Subcommands

CommandAliasDescription
simd initsetupInitialize a new worker node
simd worker—Start and connect to orchestrator
simd system-checkcheckCheck system capabilities

Step 1: Initialize Worker

Before connecting to the network, initialize your worker node. This sets up the required directories, generates keys, and installs dependencies:

Terminal
sudo simd init

Expected output:

Output
==========================================
  SIMD Worker Node Initialization
==========================================

Extracting setup files...
Setup files extracted to: "/root/.simd/docker"

==========================================
SIMD Worker Node Setup
==========================================

[1/6] Detected OS: ubuntu 24.04

[2/6] Updating system packages...
Hit:1 http://us-east-2.ec2.archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://us-east-2.ec2.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]                                                                                           
...

[3/6] Installing basic dependencies...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
curl is already the newest version (8.5.0-2ubuntu10.6).

[4/6] Installing Docker...
Docker already installed

[5/6] Installing NVIDIA drivers and container toolkit...
NVIDIA GPU detected
NVIDIA drivers already installed
Tesla T4, 535.274.02
NVIDIA Container Toolkit already installed

[6/6] Building SIMD OpenFOAM Docker image...
[+] Building 0.5s (14/14) FINISHED  

Docker image built successfully

==========================================
Setup Complete!
==========================================

Next steps:
  1. Log out and log back in (for docker group)
  2. Run: simd-network worker --orchestrator <address>

To verify setup:
  - Docker: docker --version
  - NVIDIA: nvidia-smi
  - GPU in Docker: docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi


==========================================
  Initialization complete!
==========================================

CPU-Only Mode

If your machine doesn't have an NVIDIA GPU, use the --skip-nvidia flag:

Terminal
sudo simd init --skip-nvidia

Step 2: System Check

Verify your worker's capabilities before connecting to the network:

Terminal
simd system-check

Expected output:

Output
>>> System Check @ 1765898367
   [x] WireGuard tools: true
   [x] Python 3:        true
   [x] Docker:          true
   [x] NVIDIA/CUDA:     true
   GPU: Tesla T4 (15360 MB)
   CPU: Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
   RAM: 15788 MB
   OS: Ubuntu 24.04.3 LTS
   Kernel: 6.14.0-1018-aws

Get JSON output for automation:

Terminal
simd check --json
Example output:
Output
{
  "checked_at_unix": 1765898402,
  "has_wireguard_tools": true,
  "has_python": true,
  "has_docker": true,
  "has_cuda": true,
  "gpu": {
    "name": "Tesla T4",
    "vram_mb": 15360
  },
  "cpu_model": "Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz",
  "ram_mb": 15788,
  "os_pretty": "Ubuntu 24.04.3 LTS",
  "kernel": "6.14.0-1018-aws",
  "public_ip": null,
  "vpn_ip": null,
  "network": {
    "ip_route_get_1.1.1.1": "1.1.1.1 via 172.31.0.1 dev ens5 src 172.31.2.102 uid 1000 
    cache",
    "hostname_I": "172.31.2.102 172.18.0.1 172.17.0.1 10.0.0.3"
  }
}
ubu

Step 3: Connect to Orchestrator

Connect your worker to an orchestrator node using its multiaddr:

Terminal
sudo simd worker   --port 4002   --orchestrator /ip4/34.172.234.124/tcp/4001

Expected output:

Output
==========================================
  SIMD Worker Node
==========================================
  Node ID: 12D3KooWDJUFekzwCRGbcj1kTb4Fz6PxeLCFsrdmrYAr2V45k9M9
  Key Dir: "/root/.simd/worker"
==========================================
2025-12-16T15:21:21.921171Z  INFO simd::network: Worker WG pubkey: 8GqBh5K5PdGfNC1cOV2XZ3iKe0/+xSxEqHp9iYTD118=
2025-12-16T15:21:21.921967Z  INFO libp2p_swarm: local_peer_id=12D3KooWDJUFekzwCRGbcj1kTb4Fz6PxeLCFsrdmrYAr2V45k9M9
2025-12-16T15:21:21.922263Z  INFO simd::network: Worker listening on /ip4/127.0.0.1/tcp/4002
2025-12-16T15:21:21.922285Z  INFO simd::network: Worker listening on /ip4/172.31.2.102/tcp/4002
2025-12-16T15:21:21.922300Z  INFO simd::network: Worker listening on /ip4/172.18.0.1/tcp/4002
2025-12-16T15:21:21.922316Z  INFO simd::network: Worker listening on /ip4/172.17.0.1/tcp/4002
2025-12-16T15:21:21.922339Z  INFO simd::network: Worker listening on /ip4/10.0.0.3/tcp/4002
2025-12-16T15:21:21.962193Z  INFO simd::network: Discovered orchestrator PeerId: 12D3KooWEdHrqTLoXqXfqPSheytnjhR9jh9WLJpF8Q4FuwD3LTwN
2025-12-16T15:21:21.962222Z  INFO simd::network: Connected to orchestrator 12D3KooWEdHrqTLoXqXfqPSheytnjhR9jh9WLJpF8Q4FuwD3LTwN
2025-12-16T15:21:22.010855Z  INFO simd::network: HandshakeAck: vpn_ip=10.0.0.3, endpoint=34.172.234.124
2025-12-16T15:21:22.010873Z  INFO simd::network: Configuring WireGuard VPN tunnel...
2025-12-16T15:21:22.010878Z  INFO simd::network:   Interface: simd0
2025-12-16T15:21:22.010887Z  INFO simd::network:   My VPN IP: 10.0.0.3
2025-12-16T15:21:22.010893Z  INFO simd::network:   Orchestrator endpoint: 34.172.234.124:51820
2025-12-16T15:21:32.174155Z  WARN simd::network: VPN tunnel verification failed: VPN peer 10.0.0.1 not reachable
2025-12-16T15:21:32.174179Z  WARN simd::network:   The worker will continue but VPN connectivity is not confirmed.
2025-12-16T15:21:32.174187Z  INFO simd::network: Bearer token: ccc4455221450750c35cd45079a453281a61dec1898adcce5587d1813fc3da00
2025-12-16T15:21:32.174194Z  INFO simd::network: Running system check...
2025-12-16T15:21:36.957275Z  INFO simd::network: System check complete: ram=15788MB, gpu=Tesla T4, python=true, docker=true, cuda=true
2025-12-16T15:21:36.957298Z  INFO simd::network: NodeStatus sent to orchestrator, waiting for jobs...
2025-12-16T15:21:36.957390Z  WARN libp2p_kad::behaviour: Failed to trigger bootstrap: No known peers.
2025-12-16T15:21:36.957499Z  INFO simd::network: Worker listening on /ip4/10.0.0.3/tcp/4002
2025-12-16T15:21:36.999440Z  INFO simd::network: Orchestrator acknowledged, worker is ready

Troubleshooting

Connection Issues

If you can't connect to the orchestrator:

  • Verify the orchestrator address is correct and complete
  • Check that port 4001 is open on both ends
  • Ensure both nodes are on the same network

GPU Not Detected

If your GPU isn't detected:

Terminal
# Check NVIDIA driver
nvidia-smi

# Verify CUDA installation
nvcc --version

# Re-run init to detect GPU
sudo simd init