Tutorial: Operator End to End
Operator, end to end.
// empty machine to withdrawn stake · 14 steps · live CLI + contracts
Every step in order, each paired with the exact command or Console action and the result you should see. CLI steps run on the machine; Console steps run at app.parallelix.io. Commands copy without the leading prompt; nodeId, stake, and rewards are your own.
Note·Before you start
- A machine that can stay online: macOS (Apple Silicon or Intel) or Linux. Windows is supported through WSL2 only; native Windows is not.
- A wallet holding at least 50,000 $PRLX for the stake, plus a little ETH for gas on Ethereum mainnet. Account for the 4% buy tax when acquiring $PRLX, so buy a little over the floor.
- MetaMask in the browser you open the Console with. The node key from step 4 is separate and never the staking wallet.
- // 01Install the stacknode cli
On the machine that will run the node, run the one-line installer. On a fresh Linux GPU box it installs Node, the Ollama inference runtime, the default model, and the parallelix-node CLI. macOS works the same way; on Windows, run it inside WSL2.
parallelix.nodegpu-box · installer$curl -fsSL https://parallelix.io/install.sh | shnode 22.xruntimeollamainference runtimellama3.2default model · 4.7 GBparallelix-nodev1.2.1next · run: parallelix-node probeOSLINUXRUNTIMEOLLAMACLI1.2.1// samplestep 01curl -fsSL https://parallelix.io/install.sh | sh→Node, Ollama, llama3.2, and parallelix-node installed and ready.
- // 02Probe the hardwarenode cli
Detect the GPU and VRAM, confirm Ollama is running, and print the tier the machine maps to. CPU is tier 1; GPU is tier 2/3/4 by VRAM. Note the tier; you declare it on-chain in step 6.
parallelix.nodegpu-box · probe$parallelix-node probecpu 16 coresmemory 64 GBgpu NVIDIA RTX 4090 · 24 GB VRAMollama running (v0.x)maps to tier 3GPU · highGPURTX 4090VRAM24 GBTIER3// samplestep 02parallelix-node probe→Prints the detected GPU and 'maps to tier N'. Note the tier.
- // 03Pull a modelnode cli
Confirm a model is installed, or pull one. The installer already pulled llama3.2; this is how you add or check others. At least one model must be present before start.
parallelix.nodegpu-box · models$parallelix-node models pull llama3.2pulling llama3.2 into ollamamanifestresolvedlayers4.7 GBllama3.2 readyopen-source modelMODELLLAMA3.2SIZE4.7 GBRUNTIMEOLLAMA// samplestep 03parallelix-node models pull llama3.2→The model is listed under `parallelix-node models`.
- // 04Initialise the node keynode cli
Generate the separate, low-value secp256k1 node key (never your staking wallet) and print the nodeKeyHash. This key signs liveness and results only. Copy the nodeKeyHash; you paste it into the register form.
parallelix.nodegpu-box · init$parallelix-node initnode key generated~/.parallelix/node.key · 0600config written~/.parallelix/config.jsonregister on-chain (Console), using:tier 3 (GPU · high)nodeKeyHash0x9c27a4f1...e83bKEYSECP256K1PERMS0600TIER3// samplestep 04parallelix-node init→Prints the tier and the nodeKeyHash to register on-chain. Copy the nodeKeyHash.
- // 05Connect your walletconsole
Open app.parallelix.io and connect the wallet holding your $PRLX with MetaMask (it forces the account picker). The Console is the on-chain half; it never touches the node key.
// Console · DashboardOpen in console // operator · dashboardYour nodes3 activenodestateuptimeweight#4217active99.2%GPU · 2.5x#4218active98.0%GPU · 3.0x#4220active94.7%CPU · 1.0x#4231idle0%—nodes online3 / 4avg uptime97.3%stake posted410k $PRLXaccrued reward23,515 $PRLXRewards accrue from the 25% Operator Rewards bucket, weighted stake x tier x uptime. Idle nodes (no compute online) earn nothing.
→The connected address shows in the Console header on Ethereum mainnet.
- // 06Approve and registerconsole
In Staking, choose the tier from step 2 and a stake of at least 50,000 $PRLX, paste the nodeKeyHash, then approve $PRLX and sign registerNode(stakeAmount, tier, nodeKeyHash) on NodeRegistryLocker. One stake = one node = one permanent nodeId.
contract callregisterNode(stakeAmount, tier, nodeKeyHash)
Node registration pipelineNode layer · 4 steps // Console · Staking · registerOpen in console // operator · stake & registerone stake = one node- 01
Hardware tier
Declare CPU or GPU tier. The CLI verifies it.
- 02
Stake amount
Lock >= 50,000 $PRLX. Higher stake, higher weight.
- 03
Sign registerNode
registerNode(stake, tier, nodeKeyHash) -> nodeId
node #4231 registered · principal returned in full on unstake (7-day cooldown, no slashing)→The transaction confirms and the Console assigns your nodeId.
- 01
- // 07Start the nodenode cli
Attach this machine to the on-chain node. The daemon heartbeats and serves dispatched inference requests through Ollama. Use --gpu or --cpu to force the mode. Replace <id> with the nodeId from step 6.
parallelix.nodegpu-box · node #4217$parallelix-node start --node-id 4217 --gpunode onlinenodeId #4217heartbeatliveness · 10srequest inbound · ai-inference · acceptedserving inference · llama3.2 (open-source)proof-of-executionsha256 commitmentuptime 99.4%rewards streamingSTATEACTIVEPOESHA-256REWARDSSTREAMING// samplestep 07parallelix-node start --node-id 4217 --gpu// Console · ParalleliX AI · open-source model running parallelix ai // open-source model · running8 liverequests routed to capable nodesoss-modelsnode-1199%rtx-4090node-1391%rtx-4090node-1588%a6000node-0487%rtx-4090node-0878%a6000node-0772%a6000node-0261%rtx-4090node-09··rtx-3090answers streamingcredits · metered off-chain1980 TFLOPS · fp168 streamingEach whole inference request streams on its own node across the pool. Your node serves requests it is matched to and accrues uptime while it does.
→Shows 'active · heartbeats N · served N'. The node is online and accruing.
- // 08Install as a servicenode cli
To run 24/7, install the node as a systemd (Linux) or launchd (macOS) service that survives reboot and auto-restarts. This replaces the foreground start. On Windows, run it inside WSL2 where the Linux path applies.
parallelix.nodegpu-box · systemd$parallelix-node service --node-id 4217 --gpuinstalled + startedservice 'parallelix-node'logs: journalctl -u parallelix-node -fstop: sudo systemctl stop parallelix-nodesurvives rebootauto-restart on crashMANAGERSYSTEMDBOOTENABLEDRESTARTON-FAIL// samplestep 08parallelix-node service --node-id 4217 --gpu→Installed and started as a managed background service.
- // 09Watch earnings streamconsole
On the Earnings page, the claimable total ticks up per-second while the node is online. Reward weight is stake x tier; earned(nodeId) grows every block from the per-second stream.
// Operator earnings looplive ParalleliX AI · inference requests- 01
Stake
$PRLX on NodeRegistryLocker
- 02
Run
uptime heartbeats
- 03
Serve
one whole AI request
- 04
Prove
SHA-256 commitment
- 05
Earn
per-second stream
Rewards stream from the 25% Operator Rewards bucket, unlocked linearly via Sablier (~34,200 $PRLX/day), streamed per-second to online nodes by stake x tier. No slashing: principal returns in full on unstake.
// Console · EarningsOpen in console // operator · earningsaccrues every blockclaimable23,515.31$PRLX// daily share
weight = stake x tier x uptime
share = daily_pool x weight / Σ weight
source: 25% Operator Rewards bucket · ~34,200 $PRLX/day via Sablierclaim(nodeId)wallet signs · paid to owner→A live per-second ticker showing accrued $PRLX per node.
- // 10Claimconsole
Pull the accrued balance to your wallet at any time, to wei precision. claimMany batches a claim across every node with a balance. Claiming does not interrupt accrual.
contract callclaim(nodeId)
// Operator rewards · release scheduleschedule cap 25.0M $PRLXlinear ~1.04M / movia Sablier~34,200 / dayStreamed per-second to online nodes by stake x tier. In steady state, an 85% share of ParalleliX AI usage payments funds rewards. The live released figure is on-chain via Sablier.
→The accrued $PRLX transfers to your wallet; the ticker resets and keeps climbing.
- // 11Pause and resumeconsole · optional
On the Nodes page, Pause is an owner-signed force-idle: it takes a node offline without unstaking (it moves to Idle and stops accruing). Resume brings it back online.
→The node shows Paused / Idle, then Active again on resume.
- // 12Request unstakeconsole · optional
When you want your principal back, call requestUnstake(nodeId). The node stops earning and a 7-day cooldown begins. cancelUnstake(nodeId) aborts it and returns the node to service.
contract callrequestUnstake(nodeId)
→The node moves to Cooling with a countdown; the daemon self-stops on the 403.
- // 13Wait out the cooldownconsole · optional
The 7-day cooldown timer runs on the node card. There is no slashing: the principal is safe the whole time.
→After 7 days the node exposes Withdraw stake.
- // 14Withdrawconsole · optional
Call withdrawStake(nodeId). The full principal returns to your wallet and the nodeId is permanently retired. To rejoin, register a new node.
contract callwithdrawStake(nodeId)
→Full stake returned; the nodeId is retired and not reusable.