Roles
Core objects
Skills vs services
Two things look similar. They aren’t.- A skill is a capability schema.
storage.objectsays “an object-storage service exposes these operations”. Skills are the contract. - A service is a concrete instance of a skill from a specific provider. “Exa search via agentic.market” is a service. Services are what you actually buy.
- Native: peaqOS executes the skill server-side or on a registered machine-side runtime endpoint. No human handoff.
- External handoff: the orchestrator returns a structured handoff (URL, contact, setup steps) and the agent or operator completes the purchase out of band. Used when a provider integration is partner-required or credentials-required.
Identity proof flow
Machine registration with the orchestrator is gated by a DID-controller . The flow:- Call
POST /machine-identity/challengeswith the machine’sidentityRef. The orchestrator looks up the controller addresses from peaqOS MCR data and returns a short-livedchallengeIdplus amessage. - Sign
messagewith the controller’s usingpersonal_sign. - Submit
{ challengeId, signature }asidentityProofwhen callingPOST /machines. The orchestrator verifies the signature recovers to one of the controller addresses before persisting. The stored proof is re-checked against MCR data on subsequent machine-bound writes.
Pairing flow
Pairing an agent to a machine follows the same -sign-verify pattern, scoped to the agent’s key:- Call
POST /machines/:machineId/agent-pairings/challengeswithagentAddress,agentProvider,agentRole, and optionalagentDid. The orchestrator returns anAgentPairingChallengewith achallengeId, a machine-boundmessage, and anexpiresAt. - The signs
message(EIP-191personal_sign) with the wallet key behindagentAddress. - Call
POST /machines/:machineId/agent-pairingswithagentProof: { challengeId, signature }and the . The orchestrator verifies the signature recovers toagentAddress, persists the pairing withverificationmetadata, and returns theAgentPairingwith a signed HS256 session JWT inpairingToken. Store the token 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. A policy change invalidates the current token’sdelegationPolicyHash, so rotate after everyPATCHto the delegation policy.
Order lifecycle
A successful purchase walks the order state machine:disputed if the buyer raises a dispute after delivery; cancelled if a refund settles before delivery; failed if execution errors; handoff if the service ships as an external handoff rather than a native skill run.
Each successful execution writes an Outcome and a Run. Outcomes record the service result; runs record the execution metadata (skill, route, status). Both are queryable via GET /runs and GET /machines/:machineId/outcomes.
Payments follow their own state machine, coupled to the order:
not_required short-circuits the payment lifecycle for free or pre-authorised services.
Payment rails
The orchestrator quotes services in the rail the provider supports:
Payment proof modes:
recorded: operator attestation. The orchestrator stores the proof but does not verify on-chain.rpc: the orchestrator queries an RPC for the receipt and the ERC-20 Transfer log, validating sender, recipient, token, and amount. Solana proofs are alwaysrecorded.
PEAQOS_PAYMENT_RPC_URL (or PEAQ_EVM_RPC_URL / PEAQOS_EVM_RPC_URL) to enable RPC verification by default.
Delegation, bounded
The orchestration layer enforces the delegation policy server-side. Spend limits, allow/denylists, and skill restrictions are checked at request time, not just at pairing time. Mutating the policy throughPATCH /machines/:machineId/agent-pairings/:pairingId takes effect immediately for new calls.
Revoking a pairing (DELETE) terminates the agent’s authority at once.
Multichain shape
Scale keeps peaq canonical for identity and registry state. Across supported chains:- peaqID, Machine NFT, and the stay on peaq
- Machine NFTs and deploy on supported chains ( first)
- IdentityLite, DIDLite, and StakingLite mirror peaq state on each supported chain (Agung and Base Sepolia at launch); a dedicated MCR oracle on satellites is reserved
- Machine Agents can pay across chains using the chain and token a service quotes in
eip155:* CAIP-2 identifiers through the wallet layer. See Wallets (OWS) and the Omni-chain concept for the satellite-chain contract surface (DIDLite, IdentityLite, StakingLite).

