@peaqos/peaq-os-sdk, peaq-os-sdk (Python 3.10 or newer) or peaq-os-cli release; a Solana home needs CLI 0.0.19, Python SDK 0.11.2 or JS SDK 0.11.2, or newer (older CLIs onboard, but cannot send the machine’s events (0.0.17) or manage it (0.0.18) afterwards). The earlier register-then-mint flow (registerMachine, mintNft, writeMachineDIDAttributes) is the Tokenomics 1.0 path. It serves machines already onboarded under Tokenomics 1.0, on an SDK client constructed without a Tokenomics 2.0 deployment, and is documented in the legacy section below. New machines use the activation flow on this page. The CLI has no legacy path.
What ships
Machine ID
The machine ID is derived, not sequential:machineType and the exact credentialSubject bytes contribute. Neither can change after activation, and the same pair cannot be activated a second time while the machine exists. 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.
- CLI
- JavaScript
- Python
--payment usdt --slippage-bps 50) is not configured on peaq mainnet; pay the bond in PEAQ. --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
- Validates every input locally.
- Verifies the connected chain, that all seven Tokenomics 2.0 contracts have bytecode, that the peer addresses match
InfoDesk.peer(role), and thatMachineSubscription.isEconomicAuthority()is true. - Computes the machine ID, reads
MachineStateAndSync.isTechnicalPausedGlobal()andisTechnicalPaused(machineId)(a set flag stops here withTECHNICALLY_PAUSED, before any approval), and quotes the bond:bond = requiredPeaqAmount(tier),voucher = min(pendingVoucherCredit, bond),net = bond - voucher. - Resolves the PEAQ token from
InfoDesk.peaqToken(), checks balance and allowance, and approves exactlynettoMachineSubscriptionif the allowance is short. - Re-reads the quote, simulates, and submits the one
MachineStateAndSync.activateMachinetransaction. - Requires three correlated receipt events (
MachineOnboarded,MachineMinted,Activated) and reconciles the resulting state (ownerOf,controllerOf, subscription tier and period,isHomedLocally) before returning.
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.
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 an operator cannot activate a machine it does not own, and 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.
Home chain: Solana
A machine can be created on Solana instead of peaq. The identity, DID document and NFT become Solana accounts that name a Solana key as owner, and that key pays the bond on Solana, in PEAQ or USDC, through the subscription terminal; peaq books it. The flow is seven stages instead of one transaction: a peaq operator wallet registers the Solana owner wallet on peaq (once per owner wallet), the owner opens an activation request on Solana, peaq’s Trust Validator node credits it, the owner settles it, peaq books the bond, and the owner mints the machine (native_onboarding) and sends the link push (linkage) back to peaq, where the node delivers it with no messaging fee. The CLI runs all seven from one peaqos activate --chain solana command, or one stage at a time with --phase; the Python and JavaScript SDKs cover the same stages: register_solana_operator / registerSolanaOperator for the registration, then activate_machine / activateMachine for the rest. The full walkthrough, with the costs and the scripts that onboarded the proven machines, is Onboard a machine on Solana.
Confirm activation
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.
The MCR addresses 2.0 machines by decimal ID: mcr.peaq.xyz answers a did:peaq:0x<address> DID with 400 Invalid machine DID format. Call queryMcr / query_mcr on a tokenomics20 client, or GET https://mcr.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 inIdentityRegistry 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.
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
activateMachine/activate_machine: the one-transaction activation on peaq, or the Solana phases with aphasein both SDKs.previewMachineActivation/preview_machine_activation: quote without signing.getMachineActivationState/get_machine_activation_state: confirm the result.fundFromGasStation/fund_from_gas_station: request gas for a fresh wallet.generateKeypair/generate_keypair: create a machine keypair.- Machines homed on Solana: SDK JS: Solana (SVM), SDK Python: Solana.
Guides
Onboarding quickstart
Terminal walkthrough: CLI, wallets, costs, activation on peaq or Solana, recovery.
Self-managed onboarding
Single machine, owner-operated.
Fleet onboarding
Machine-owned, operator-controlled: N machines from one operator.
Solana onboarding
Home the machine on Solana: pay the bond on Solana in PEAQ or USDC, mint the machine there, link it back to peaq.

