Skip to main content
Activate is the entry point to peaqOS. One transaction on , mints its Machine NFT, stores its peaqID document, and bonds it on a subscription tier under Economics 2.0.
Versions. The one-transaction flow on this page needs @peaqos/peaq-os-sdk 0.7.0+, peaq-os-sdk 0.7.1+ (Python 3.10 or newer), or peaq-os-cli 0.0.8+ running on peaq-os-sdk 0.7.1+. Releases before 2026-09-11 carry the MachineBridgeAdapter address from before the 2026-09-08 re-point and fail preflight with PEER_MISMATCH. The earlier register-then-mint flow (registerMachine, mintNft, writeMachineDIDAttributes) still works in the SDKs when you do not select a Tokenomics 2.0 deployment, and is documented in the legacy section below. The CLI has no legacy path since 0.0.8.

What ships

Machine ID

The machine ID is derived, not sequential:
Only machineType and the exact credentialSubject bytes contribute. Neither can change after activation, and the same pair can never be activated twice. IDs are full-width uint256 values (routinely 77 digits): bigint in JavaScript, int in Python, and a decimal string in JSON, URLs, and CLI output. The 2.0 DID form is did:peaq:<decimal machine id>, not an address.

How activation works

Select a deployment (peaq-mainnet or agung-2026-08-28), preview the quote, then activate. Contract addresses travel with the deployment record inside the SDK; you never set them.
Add --payment usdt --slippage-bps 50 to settle the PEAQ-quoted bond in USDT. --for 0xMachine --machine-key ./machine.key switches to machine-owned, operator-controlled mode (see Two ownership modes). Full flag table on CLI: activate.

What the call does

  1. Validates every input locally.
  2. Verifies the connected chain, that all seven Tokenomics 2.0 contracts have bytecode, that the peer addresses match InfoDesk.peer(role), and that MachineSubscription.fullMode() is true.
  3. Computes the machine ID and quotes the bond: bond = requiredPeaqAmount(tier), voucher = min(pendingVoucherCredit, bond), net = bond - voucher.
  4. Resolves the PEAQ token from InfoDesk.peaqToken(), checks balance and allowance, and approves exactly net to MachineSubscription if the allowance is short.
  5. Re-reads the quote, simulates, and submits the one MachineStateAndSync.activateMachine transaction.
  6. Requires three correlated receipt events (MachineOnboarded, MachineMinted, Activated) and reconciles the resulting state (ownerOf, controllerOf, subscription tier and period, isHomedLocally) before returning.
The transaction sender becomes the machine’s owner and bond payer. manufacturer is recorded on-chain and never verified by the contract. On peaq, PEAQ is the native-balance precompile at 0x…0809, so bond and gas come out of the same balance: a wallet holding exactly the net amount still fails on gas.
A transaction whose receipt does not arrive in time is reported as pending (PENDING_TRANSACTION in the Python SDK, RECEIPT_UNAVAILABLE in the JS SDK, PENDING at exit 2 in the CLI) with its hash. It may still mine. Never submit a second activation for the same machine; reconcile the recorded hash instead (reconcile_activation_transaction in Python, re-running the same command in the CLI).

Two ownership modes

Rights differ by role and both parties should know them:
Operator-sponsored onboarding has no 2.0 equivalent. MachineStateAndSync.activateMachine makes msg.sender the owner and the payer, so there is no way for an operator to activate a machine it does not own. registerFor / register_for throw SPONSORED_ACTIVATION_UNSUPPORTED in Tokenomics mode. The supported fleet pattern is the machine-owned, operator-controlled mode above. Full guide: Fleet onboarding.

Confirm activation

Or open the machine on the Machine Explorer: https://machines.peaq.xyz/machine/<decimal machine id> for a machine activated under Economics 2.0, https://machines.peaq.xyz/machine/0x<address> for a Tokenomics 1.0 or mirrored legacy machine. The explorer indexes from chain, so allow a few minutes after the transaction. Do not test activation by querying mcr.peaq.xyz/machine/did:peaq:0x…: 2.0 machines live on mcr-20.peaq.xyz and are addressed by decimal ID. Call queryMcr / query_mcr on a tokenomics20 client (@peaqos/peaq-os-sdk 0.7.0, peaq-os-sdk 0.7.1) or GET https://mcr-20.peaq.xyz/mcr/did:peaq:<decimal id> instead. See API reference.

After activation

Legacy flow (Tokenomics 1.0)

Machines onboarded before Economics 2.0 live in IdentityRegistry with a 1 PEAQ native bond and a separate MachineNFT token. The SDKs keep this path when you construct a client without tokenomics20: registerMachine / register_machine (self-managed) or registerFor / register_for (proxy), then mintNft, tokenIdOf, and writeMachineDIDAttributes. Each of these emits a deprecation warning and throws a typed error in Tokenomics mode. The 1.0 MCR API at mcr.peaq.xyz serves these machines by did:peaq:0x<address>. Legacy machines can be mirrored into Economics 2.0 through the MachineMigrationHub; that path is operated by peaq for partner fleets, not exposed in the SDKs. See Economics 2.0: legacy machines.

Concepts

Economics 2.0

Tiers, bonds, credits, grace and runoff, trust validators.

peaqID

W3C DID, DID document, portable identity.

Machine NFT

The ERC-721 whose token ID is the machine ID.

Smart contracts

Addresses on peaq mainnet and agung.

Gas Station

2FA-gated faucet for initial machine gas.

Machine Credit Rating

Rating from a machine’s history.

SDK reference

Guides

Self-managed onboarding

Single machine, owner-operated.

Fleet onboarding

Machine-owned, operator-controlled: N machines from one operator.