Tutorial: Operator End to End
Operator, end to end.
// empty machine to withdrawn stake · 12 steps · live CLI v2.0.0 + 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 generated by setup 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, and the parallelix-node CLI. macOS works the same way; on Windows, run it inside WSL2. The installer offers to run setup immediately.
parallelix.nodegpu-box · installer$curl -fsSL https://parallelix.io/install.sh | shnode 22.xruntimeollamainference runtimeparallelix-nodev2.0.0next · run: parallelix-node setupOSLINUXRUNTIMEOLLAMACLI2.0.0// samplestep 01curl -fsSL https://parallelix.io/install.sh | sh→Node, Ollama, and parallelix-node installed and ready.
- // 02Run setupnode cli
Run parallelix-node setup. Five guided steps: [1/5] hardware detect (tier), [2/5] Ollama check (waits if starting), [3/5] model recommend and pull (largest fitting 90% of VRAM; any Ollama model works), [4/5] node key generation (separate low-value secp256k1 key, never your staking wallet), [5/5] prints a prefilled Console staking link. After you stake, setup polls the coordinator and auto-detects your nodeId, saves it to config, then offers service install. Re-running setup resumes safely.
parallelix.nodegpu-box · setup$parallelix-node setup[1/5] hardwareRTX 4090 · 24 GB · tier 3[2/5] ollamarunning[3/5] modelqwen2.5:14b · pulled[4/5] node keygenerated · 0600[5/5] stake now app.parallelix.io/operate/stake?...detected nodeId 4217saved to configTIER3KEYSECP256K1NODE#4217// samplestep 02parallelix-node setup→Hardware, model, node key, and staking link ready. After staking, nodeId is saved automatically.
- // 03Connect 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.
- // 04Approve and registerconsole
Open the prefilled staking link from setup (tier and nodeKeyHash are pre-filled). Choose a stake of at least 50,000 $PRLX, then approve $PRLX and sign registerNode(stakeAmount, tier, nodeKeyHash) on NodeRegistryLocker. One stake = one node = one permanent nodeId. Setup detects the nodeId automatically once the transaction confirms.
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; setup detects the nodeId and saves it to config.
- 01
- // 05Start the nodenode cli
If setup finished with the service install, the node is already running. Otherwise, start it in the foreground: the daemon heartbeats and serves dispatched inference requests through Ollama. --node-id is optional if setup saved it to config.
parallelix.nodegpu-box · node #4217$parallelix-node start --gpunode onlinenodeId #4217heartbeatliveness · 10srequest inbound · ai-inference · acceptedserving inference · qwen2.5:14b (open-source)proof-of-executionsha256 commitmentuptime 99.4%rewards streamingSTATEACTIVEPOESHA-256REWARDSSTREAMING// samplestep 05parallelix-node start --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.
→Dashboard shows status, models, lifetime earnings, and a live request feed. The node is online and accruing.
- // 06Install 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 on failure. Setup offers this at the end; you can also run it manually. On Windows, run it inside WSL2 where the Linux path applies.
parallelix.nodegpu-box · systemd$parallelix-node service --gpuinstalled + startedservice 'parallelix-node'logs: journalctl -u parallelix-node -fstop: sudo systemctl stop parallelix-nodesurvives rebootrestart on failureMANAGERSYSTEMDBOOTENABLEDRESTARTON-FAIL// samplestep 06parallelix-node service --gpu→Installed and started as a managed background service.
- // 07Watch 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 second 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.
- // 08Claimconsole
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.
- // 09Pause 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.
- // 10Request 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. The daemon self-stops cleanly when the coordinator signals in_cooldown.
contract callrequestUnstake(nodeId)
→The node moves to Cooling with a countdown; the daemon self-stops on the coordinator signal.
- // 11Wait 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.
- // 12Withdrawconsole · 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.