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. A machine can also be homed on Solana; that takes seven stages instead of one transaction, run from one CLI command or one SDK script (see Home chain: Solana). Requires the current @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:
Only 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.
USDT settlement (--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

  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.isEconomicAuthority() is true.
  3. Computes the machine ID, reads MachineStateAndSync.isTechnicalPausedGlobal() and isTechnicalPaused(machineId) (a set flag stops here with TECHNICALLY_PAUSED, before any approval), 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 with its hash (PENDING_TRANSACTION in the Python SDK, RECEIPT_UNAVAILABLE in the JS SDK, PENDING at exit 2 in the CLI), and 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 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

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. 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 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. 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

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.