What ships
| Component | Description |
|---|---|
| Machine Agent pairing | Bind a third-party AI agent (Claude, OpenAI, Virtuals, Teneo, etc.) to a machine via a signed EIP-191 challenge. peaqOS verifies the signature, persists the agent’s identity and verification metadata, and issues a signed HS256 session JWT (pairingToken) the agent presents as x-agent-pairing-token on market writes. Tokens rotate via a sessions endpoint. |
| Delegation policy | Per-transaction limit, daily spend limit, currency, and allowed/denied skill keys and service IDs. Enforced server-side on every market call. Policy changes invalidate the session token’s delegationPolicyHash; rotate after a PATCH. |
| Skill registry and service catalogue | Curated capabilities (oracle.price-feed, compute.marketplace, storage.object, data.location, identity.proof-of-person, device.control, machine.commerce, network.partner-console) and the concrete provider services that fulfil them. |
| Market search | POST /market/search takes machine context, requirements, region, budget, and execution preferences and returns ranked MarketQuotes with reasons. |
| Market orders | POST /market/orders locks a service from a quote into an order with state machine created → payment_pending → ready → executing → delivered → confirmed (or disputed / cancelled / failed / handoff). Server-side policy and spend checks fire on create. |
| Payment intent and escrow | payment-intent selects a rail; payment-proof records or RPC-verifies on-chain payment; payment/escrow-lock, payment/release, payment/refund cover the escrow lifecycle. Solana proofs are recorded; EVM proofs verify via RPC against the ERC-20 Transfer log. |
| Execute and runtime endpoints | POST /orders/:orderId/execute materialises the order as a task plus route, dispatches to a native provider or a machine-side runtime endpoint registered via PUT /machines/:machineId/runtime-endpoints/:providerKey or heartbeated by an on-machine runtime agent, and writes a Run and Outcome. |
| Confirm and dispute | POST /confirm closes the order and releases escrow; POST /dispute opens a dispute record and freezes payment. Pairings with non-terminal orders cannot be revoked (OPEN_MARKET_ORDERS). |
| Machine identity proof | DID-controller challenge and EIP-191 signature flow that ties orchestration writes to the on-chain machine identity. |
How it works
- Activate the machine. Run Activate to , , smart account, and post the bond. Pairing requires an active, bonded machine.
- Prove identity ownership.
POST /machine-identity/challengesreturns a message that the DID-controller key signs (). The signed proof is attached when the machine is registered with the orchestration service. - Provision a Machine Agent. Get an agent from any provider you trust: Claude, OpenAI, Virtuals, Teneo, your own runtime. peaq does not provide the agent.
- Pair the agent. is -based.
POST /machines/:machineId/agent-pairings/challengeswith the agent’sagentAddress,agentProvider,agentRole, and optionalagentDid. The response is anAgentPairingChallengewithchallengeId,message, andexpiresAt.- The Machine Agent signs
message(EIP-191personal_sign) with the wallet key behindagentAddress. POST /machines/:machineId/agent-pairingswithagentProof: { challengeId, signature }and the delegation policy. The orchestrator verifies the signature, persists the pairing withverificationmetadata, and returns theAgentPairingwith a signed session JWT inpairingToken. Store it client-side and send it asx-agent-pairing-tokenon market writes.- Tokens expire (default 1 hour). Rotate by issuing a fresh challenge and calling
POST /machines/:machineId/agent-pairings/:pairingId/sessionswith the new proof. Rotate after anyPATCHto the delegation policy.
- Search the market. The agent calls
POST /market/searchwith machine context, service type, capabilities, region, budget, and optionalproviderCredentials. The orchestrator returns rankedMarketQuotes with reasons for each ranking. - Place an order.
POST /market/orderswithmachineId,agentPairingId,serviceId, and optionalsearchId+quoteIdcreates an order (statuscreated). The orchestrator enforces the and per-transaction and daily spend limits at create. The recommended is copied from the service intoorder.payment. - Settle payment.
POST /market/orders/:orderId/payment-intentmints a payment record on the chosen rail. For wallet-based and x402 rails, submitPOST /payment-proofafter the transfer (EVM proofs are RPC-verified against the ERC-20 Transfer log). For rails, callPOST /payment/escrow-lockwith the on-chain lock transaction. Once funds clear, the order moves toready. - Execute.
POST /market/orders/:orderId/executematerialises the order as a task plus route, dispatches to a native provider or a machine-side runtime endpoint, and writes aRunplus anOutcome. Successful runs land indelivered. External-handoff services return a structured handoff and land inhandoff. - Confirm or dispute.
POST /market/orders/:orderId/confirmcloses the order and triggerspayment/releasefor held funds. If the service did not deliver,POST /market/orders/:orderId/disputeopens a dispute and freezes payment until peaq resolves it.
Read-only shortcut
Free, read-only operations can skip the order flow entirely.POST /market/services/:serviceId/execute runs the operation directly with machineId, agentPairingId, operation, and optional input / providerCredentials. The orchestrator dispatches through the same task + route + run + outcome machinery as executeMarketOrder but does not create an order, payment intent, or escrow record. Paid, external-handoff, and state-changing operations still go through POST /market/orders.
Payment model
peaqOS does not collect marketplace payments. The payment-intent and payment-proof endpoints record provider/service payment state only when the selected adapter requires direct provider payment. Operators or machines pay the selected provider directly through that provider’s supported rail. Raw payment headers are never stored.Payment rails
The orchestrator quotes services in the rail the provider supports. Active rails:| Rail | Where it shows up |
|---|---|
x402 | agentic.market services and most pay.sh services. Agent wallet responds to an HTTP 402 payment-required challenge; orchestrator replays the request with the agent’s payment headers via the paidHttp adapter. |
mpp | Solana micro-payment protocol. Used by some pay.sh services on Solana. |
vault-stripe / external | Card-mediated or external handoff. |
wallet / wdk-usdt-transfer | Direct USDT transfer on peaq (default token USDT, decimals from PEAQOS_USDT_DECIMALS). |
onchain-escrow / escrow | Funds locked into a service-specified escrow contract via payment/escrow-lock. |
not-required | Free or pre-authorised services. Order proceeds straight to ready. |
offchain-record | Off-chain attestation, recorded but not RPC-verified. |
Launch partners
At launch:- QVAC private inference (Tether strategic, co-announced).
- The agentic.market suite over x402: Claude, ChatGPT, 2Captcha, Firecrawl, Wolfram|Alpha, Exa.
- The pay.sh suite: Gemini, BigQuery, Document AI, StableUpload, Cloud Translation.
Delegation policy
PATCH /machines/:machineId/agent-pairings/:pairingId. Revoking a pairing (DELETE) terminates the agent’s delegated access immediately, unless the pairing has open market orders (OPEN_MARKET_ORDERS).
Multichain
peaqID, Machine NFT, and the stay canonical on peaq. Smart accounts and Machine NFTs deploy to supported chains (Agung and Base Sepolia at launch). Machine Agents pay across chains using the chain and token a service quotes in. A six-daemon Signer Daemon fleet watches finalized peaq and Agung events, packages them into EIP-712 batches, and pushes them to per-chain Lite contracts (DIDLite, IdentityLite, StakingLite). Read full architecture in the Omni-chain concept. See the roadmap for chain rollout.
Build with Scale
Machine Markets API
Base path, access model, error codes, and the full HTTP endpoint surface.
Machine Markets (concept)
How pairing, skills, services, orders, payments, and execution hang together.
peaqOS CLI: `scale`
peaqos scale agent pair, search, and the order family from your terminal.
