First decision: where should the machine live?
A machine has a home chain: the chain that holds its identity, DID document and NFT. Today that is either peaq or Solana. The machine ID and the peaqID look the same either way, and both homes can use Stream to sell data.
A good rule of thumb: choose peaq unless the machine’s owner, its buyers or its payments already live on Solana. If you are not sure, start on peaq; it is the shorter path.
What it costs
Activation costs the tier bond plus gas. The bond is priced in US dollars per tier and paid in PEAQ at the oracle’s most recently committed price. The preview (--dry-run) prints the exact PEAQ amount before anything is submitted. To size a wallet before you run anything, divide the tier’s dollar price by the current PEAQ price.
The bond buys one 365-day subscription period, so budget it per machine per year. Renew with
peaqos machine subscription renew <machine_id> before the period ends. After it ends you get a grace period, currently 14 days, then a runoff, currently another 14 days, in which the bond decays to zero, and then the machine is terminated and its Machine NFT is burned. Renewing late does not refund lost time: the new period runs from the old period end, not from the day you renew, and it costs a full bond. Suspending a machine does not pause any of this. The subscription lifecycle describes the whole sequence.
On top of the bond you pay peaq gas (a few transactions, small) and, for a Solana home, SOL for network fees and account rent (the preview prints an estimate). The bond can be paid in USDT instead of PEAQ: on peaq that is --payment usdt --slippage-bps 50, and the second flag is required. On Solana the USDT flags differ; see the argument set. Gas is always PEAQ. Bonds are not withdrawable. Prices and the formula are on Economics 2.0.
Part 1: Set up once per fleet
Everything in this part you do once, and every machine you onboard afterwards reuses it.1
Install the CLI
You need Python 3.10 or newer. Installing into a virtual environment keeps it separate from anything else on your machine.You should see
peaq-os-cli 0.0.12 (peaq_os_sdk 0.8.0) or newer, which is what this page is written for. The ows extra adds the encrypted wallet vault used below; solana is only needed for a Solana home. Everything here is mainnet.2
Make a folder for the fleet and run the setup wizard
The CLI keeps three things in the folder you run it from: a The wizard asks a handful of questions. Choose mainnet, choose wallet as the key source when offered (it creates an encrypted wallet rather than a raw key), and when it asks for a wallet name type
.env file with your settings, your DID documents, and peaqos.log, a journal of every transaction it sends. The journal is what lets the CLI pick up safely after an interruption, so keep this folder and back it up. Your wallets are not in it: they live in the vault at ~/.ows/, which needs its own backup.fleet-owner for a peaq home or fleet-operator for a Solana home. It also asks for a passphrase; you need it for every command that signs with that wallet. Accept the defaults for the rest. It downloads the contract addresses for you, so stay online, and finishes by running peaqos whoami to show what it wrote.One value to change by hand: open
.env and set EVENT_REGISTRY_ADDRESS=0xA1e7F1d7B24dAb55Dc92491e6d9B89F6E925Ad1e, the Economics 2.0 event contract. The wizard writes the Tokenomics 1.0 address, and an event sent there for a 2.0 machine is rejected, not recorded. A Solana-homed machine records its events on Solana instead, but leave the value set: every command that builds a client needs it.3
Create and fund the wallet(s)
Wallets live in the vault at
~/.ows/, each protected by its own passphrase. For each wallet, run peaqos wallet export <name> once and store the seed phrase somewhere safe; nothing else can recover the key. The command prints the phrase to the terminal, so do not run it anywhere the output is logged. Creating a wallet does not put any funds in it: send PEAQ (and SOL, for a Solana home) to the addresses it prints.- Home on peaq
- Home on Solana
The wizard already created Copy the
fleet-owner and named it in .env as the signer. One wallet does everything: it pays the bond and gas and owns the machine.0x… address and send PEAQ to it: the bond plus at least 0.5 PEAQ. Below 0.5 PEAQ a real peaqos activate run stops to fund the wallet for you through the Gas Station, which the first time means enrolling an authenticator app from a QR code. Staying above 0.5 PEAQ avoids it, and --skip-funding turns it off.If you would rather each machine own its own NFT while you keep control as operator, give each machine its own raw key file and activate with --for and --machine-key; the fleet guide explains that pattern and how to make the key files.4
Write the DID document
The DID document is a small JSON file that describes the machine: which key speaks for it and where to find its data and documentation. Save it as Keep the three keys above and nothing else at the top level:
did.json in the fleet folder. You can reuse one template for the whole fleet and change only the URLs if they differ per machine.For a first fleet, point the verification method at the wallet that will own the machines. On peaq, controller is the wallet’s 0x… address. On Solana it is the owner wallet’s base58 address. publicKeyMultibase carries the verifying key in multibase form (z6Mk… for an Ed25519 key). No peaqos command prints this value: if the machine has its own Ed25519 key, encode that; if not, leave the placeholder text for now. The chain stores the DID document as given and does not check these values against the wallet, so a fleet can start with the owner as controller and replace both fields later, when the machine has its own key, with peaqos machine did set-verification-methods.did.json
id and controller are rejected there, because the machine’s ID is computed on chain and the CLI sets the controller itself. authentication lists which verification methods may authenticate, by position (0 is the first one). Solana has size limits on these fields, listed on the Solana page.Part 2: Activate each machine
Two inputs define a machine forever: a machine type, one word or phrase you use for the whole fleet (Sensor, Robot, Vehicle, Charger…), and a credential subject, some bytes that identify this particular unit. The serial number is the usual choice. Together they produce the machine ID, and that pair cannot be activated a second time while the machine exists, so pick them deliberately.
echo prints more than 0x before you go on. An unset SERIAL produces an empty credential subject, which is accepted and cannot be changed afterwards.
Now follow the tab for your home chain. Every activate and machine write first shows you what it is about to do and asks for confirmation, and most take --dry-run, which shows the same preview and stops.
- Home on peaq
- Home on Solana
1
Preview
Nothing is sent. The output shows the bond for your tier, any voucher credit, and the net PEAQ the wallet needs.
--manufacturer is any EVM address you choose to record as the maker; the network stores it but does not check it. --tier is entry, basic or pro. If the preview says the wallet is short, top it up and preview again.2
Activate
The same command without Activation is one atomic call: it mints the NFT, stores the DID document, bonds the tier and records peaq as the home. When your wallet’s allowance does not already cover the bond, the CLI sends a separate token approval before it, so you may see two transactions go out. The output includes the
--dry-run. Read the terms it prints and confirm. In a script, add --yes to confirm and --json for machine-readable output, and set OWS_PASSPHRASE (no PEAQOS_ prefix on this one) to the signing wallet’s passphrase or it still stops to ask.machine_id, a long decimal number. Keep it; every later command identifies the machine by it.3
Check
owner, your tier under subscription, and is_homed_locally: true. The machine’s peaqID is did:peaq:<machine_id>..env are reused either way; a peaq machine can run from the same fleet folder, a Solana machine gets its own folder. Keep a list of serial number to machine_id as you go: the machine ID is how every later command, and peaq support, identifies the machine.
Part 3: After activation
- Home on peaq
- Home on Solana
Record what the machine does. Events are how a machine builds its credit history. An activity event says “I did work”; a revenue event says “I earned this much” (in the currency’s smallest unit, so cents for USD). The second command reads the machine’s credit rating.Manage it.
qualify event submits straight away, with no preview and no confirmation prompt, so check the values before you run it.peaqos machine covers the lifecycle: status, suspend, resume, subscription renew, transfer, and the did set-… commands to update the DID document. The two subscription writes prompt for confirmation but have no --dry-run. Details on CLI: machine.peaqos stream publish encrypts and signs a data file, stream distribute delivers it to a buyer once their payment is confirmed, and stream grant hands a buyer access directly when you have checked payment yourself. Buyers pay with the native token or an ERC-20 on peaq or Base, or with SOL or an SPL token on Solana.
If something goes wrong
The CLI is designed so that a failed or interrupted step is safe to run again: it reads its journal first and never sends a duplicate transaction. Don’t deletepeaqos.log, don’t change the arguments, and rerun the step.
On peaq
On Solana
Exit codes:
1 means something in your input or a declined confirmation, 2 a chain or network failure, 3 a configuration problem such as a missing setting or extra. With --json, the error_code field says exactly which. Full tables live on CLI: exit codes and Solana onboarding: resume after an interruption.
Where to go next
- Activate: what activation creates and why it is one transaction
- Self-managed onboarding: the peaq flow from the SDKs instead of the CLI
- Fleet onboarding with an operator: machines that own themselves while you operate them
- Onboard a machine on Solana: every Solana flag, state and recovery path
- Wallets (OWS), Install, Economics 2.0

