Security warning — review recommended

ClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.

x402 Compute

This skill should be used when the user asks to "provision GPU instance", "spin up a cloud server", "list compute plans", "browse GPU pricing", "extend compute instance", "resize compute instance", "destroy server instance", "check instance status", "list my instances", or manage x402 Singularity Compute / x402Compute infrastructure. Handles GPU and VPS provisioning across Vultr and DigitalOcean with USDC payment on Base or Solana, USDm payment on MegaETH via x402, and optional MPP/Mppx payment flows for agents that can pay with Tempo or Stripe/card methods. Includes optional OWS-backed auth and management flows.

Audits

Warn

Install

openclaw skills install x402-compute

x402 Singularity Compute

Provision, manage, resize, and extend GPU/VPS instances on Vultr or DigitalOcean paid with x402 or MPP.

Base URL: https://compute.x402layer.cc Providers: Vultr • DigitalOcean x402 Networks: Base (EVM) • Solana • MegaETH x402 Currency: USDC (Base/Solana) • USDm (MegaETH) MPP Methods: Tempo • Stripe/card when enabled by the service Protocol: HTTP 402 Payment Required (X-Payment for x402, Authorization: Payment for MPP)

Access Note: Preferred access is SSH public key. If no SSH key is provided, a one-time password fallback can be fetched once via API. DigitalOcean Note: DigitalOcean instances require SSH key access because one-time root passwords are not exposed through the DigitalOcean API.


Quick Start

1. Install Dependencies

pip install -r {baseDir}/requirements.txt

2. Choose Wallet Mode

Option A: Direct signing keys (Base, MegaETH, or Solana)

# Base (EVM) — same keys work for MegaETH
export PRIVATE_KEY="0x..."
export WALLET_ADDRESS="0x..."

# MegaETH (uses same EVM keys as Base)
export PRIVATE_KEY="0x..."
export WALLET_ADDRESS="0x..."
export COMPUTE_AUTH_CHAIN="megaeth"

# Solana
export SOLANA_SECRET_KEY="base58-or-json-array"
export SOLANA_WALLET_ADDRESS="YourSolanaAddress"
export COMPUTE_AUTH_CHAIN="solana"

Option B: OpenWallet / OWS (optional-first)

npm install -g @open-wallet-standard/core
export OWS_WALLET="compute-wallet"
export COMPUTE_AUTH_MODE="ows"

Create COMPUTE_API_KEY (optional) for management endpoints:

python {baseDir}/scripts/create_api_key.py --label "my-agent"

OWS is best for compute auth and routine management flows. Direct x402 provision and extend still use local payment-signing paths. MPP provision/extend should use mppx or Tempo Wallet.

Resize is a management action, not a second payment flow. The API preserves remaining prepaid dollar credit by recalculating expires_at for the target hourly rate after the provider accepts the resize.


⚠️ Security Notice

IMPORTANT: This skill handles private keys for signing blockchain transactions.

  • Never use your primary custody wallet - Create a dedicated wallet with limited funds
  • Private keys are used locally only - They sign transactions locally and are never transmitted
  • For testing: Use a throwaway wallet with minimal USDC/USDm

Scripts Overview

ScriptPurpose
browse_plans.pyList available GPU/VPS plans with pricing
browse_regions.pyList deployment regions
provision.pyProvision a new instance (x402 payment, --months or --days)
create_api_key.pyCreate an API key for agent access (optional)
list_instances.pyList your active instances
instance_details.pyGet details for a specific instance
get_one_time_password.pyRetrieve one-time root password fallback
extend_instance.pyExtend instance lifetime (x402 payment)
resize_instance.pyResize an instance in place (compute auth only)
destroy_instance.pyDestroy an instance
ows_cli.pyRun OpenWallet / OWS wallet, sign-message, and key commands
solana_signing.pyInternal helper for Solana x402 payment signing

Instance Lifecycle

Browse Plans → Choose Provider/Plan → Provision (pay USDC/USDm) → Active → Extend / Destroy → Expired

Instances expire after their prepaid duration. Extend before expiry to keep them running.


Workflows

A. Browse and Provision

# List GPU plans
python {baseDir}/scripts/browse_plans.py

# Filter by type (gpu/vps/high-performance)
python {baseDir}/scripts/browse_plans.py --type vcg

# Check available regions
python {baseDir}/scripts/browse_regions.py

# Generate a dedicated SSH key once (recommended for agents)
ssh-keygen -t ed25519 -N "" -f ~/.ssh/x402_compute

# Provision an instance for 1 month (triggers x402 payment)
python {baseDir}/scripts/provision.py vcg-a100-1c-2g-6gb lax --months 1 --label "my-gpu" --ssh-key-file ~/.ssh/x402_compute.pub

# DigitalOcean plans are prefixed with do:
# They require SSH key access.
python {baseDir}/scripts/provision.py do:s-1vcpu-1gb nyc3 --days 1 --label "do-test" --ssh-key-file ~/.ssh/x402_compute.pub

# Provision a daily instance (cheaper, use-and-throw)
python {baseDir}/scripts/provision.py vc2-1c-1gb ewr --days 1 --label "test-daily" --ssh-key-file ~/.ssh/x402_compute.pub

# Provision for 3 days
python {baseDir}/scripts/provision.py vc2-1c-1gb ewr --days 3 --label "short-task" --ssh-key-file ~/.ssh/x402_compute.pub

# Provision on Solana
python {baseDir}/scripts/provision.py vc2-1c-1gb ewr --months 1 --label "my-sol-vps" --network solana --ssh-key-file ~/.ssh/x402_compute.pub

# Provision on MegaETH (pays with USDm)
python {baseDir}/scripts/provision.py vc2-1c-1gb ewr --months 1 --label "my-mega-vps" --network megaeth --ssh-key-file ~/.ssh/x402_compute.pub

# Provision via MPP / mppx (Tempo by default; Stripe/card if your mppx config supports it)
npx mppx https://compute.x402layer.cc/compute/provision \
  -X POST \
  -J '{"plan":"vc2-1c-1gb","region":"ewr","os_id":2284,"label":"mpp-vps","prepaid_hours":24,"ssh_public_key":"ssh-ed25519 AAAA... agent"}'

# If the response includes management_api_key, store it for later instance management:
export COMPUTE_API_KEY="x402c_..."

# ⚠️ After provisioning, wait 2-3 minutes for Vultr to complete setup
# Then fetch your instance details (IP, status):
python {baseDir}/scripts/instance_details.py <instance_id>

B. Manage Instances

# Optional: create a reusable API key (avoids message signing each request)
python {baseDir}/scripts/create_api_key.py --label "my-agent"

# List all your instances
python {baseDir}/scripts/list_instances.py

# Get details for one instance
python {baseDir}/scripts/instance_details.py <instance_id>

# Optional fallback if no SSH key was provided during provisioning
python {baseDir}/scripts/get_one_time_password.py <instance_id>

# Extend by 1 day
python {baseDir}/scripts/extend_instance.py <instance_id> --hours 24

# Extend by 1 month
python {baseDir}/scripts/extend_instance.py <instance_id> --hours 720

# Extend on Solana
python {baseDir}/scripts/extend_instance.py <instance_id> --hours 720 --network solana

# Extend on MegaETH (pays with USDm)
python {baseDir}/scripts/extend_instance.py <instance_id> --hours 720 --network megaeth

# Extend via MPP. MPP extension requires compute auth; use the management API key
# returned from MPP provisioning or normal wallet signature auth.
npx mppx https://compute.x402layer.cc/compute/instances/<instance_id>/extend \
  -X POST \
  -H "X-API-Key: $COMPUTE_API_KEY" \
  -J '{"extend_hours":720}'

# Resize via bundled helper script
python {baseDir}/scripts/resize_instance.py <instance_id> vc2-2c-4gb

# Resize in place with management auth only (no x402 or MPP payment)
curl -X POST https://compute.x402layer.cc/compute/instances/<instance_id>/resize \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $COMPUTE_API_KEY" \
  -d '{"plan":"vc2-2c-4gb"}'

# DigitalOcean disk growth is irreversible and must be confirmed explicitly
curl -X POST https://compute.x402layer.cc/compute/instances/<instance_id>/resize \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $COMPUTE_API_KEY" \
  -d '{"plan":"do:s-2vcpu-4gb","confirm_disk_resize":true}'

# Destroy
python {baseDir}/scripts/destroy_instance.py <instance_id>

C. OpenWallet / OWS

# List local OWS wallets
python {baseDir}/scripts/ows_cli.py wallet-list

# Sign a Base-compatible compute auth message
python {baseDir}/scripts/ows_cli.py sign-message --chain eip155:8453 --wallet compute-wallet --message "hello"

# Sign a MegaETH-compatible compute auth message
python {baseDir}/scripts/ows_cli.py sign-message --chain eip155:4326 --wallet compute-wallet --message "hello"

# Sign a Solana-compatible compute auth message
python {baseDir}/scripts/ows_cli.py sign-message --chain solana --wallet compute-wallet --message "hello"

# Create an OWS agent key
python {baseDir}/scripts/ows_cli.py key-create --name codex-compute --wallet compute-wallet

x402 Payment Flow

  1. Request provision/extend → server returns HTTP 402 with payment requirements
  2. Script signs payment locally:
    • Base: USDC TransferWithAuthorization (EIP-712)
    • MegaETH: USDm ERC-2612 permit (EIP-712) — gasless for the user, facilitator settles on-chain
    • Solana: signed SPL transfer transaction payload
  3. Script resends request with X-Payment header containing signed payload
  4. Server verifies payment, settles on-chain, provisions/extends instance

MegaETH uses an embedded facilitator (no external CDP dependency). The user signs an off-chain ERC-2612 permit, and the facilitator calls permit() + transferFrom() on MegaETH (~10ms blocks, near-zero gas).

For Solana, transient facilitator failures can happen. Retry once or twice if you get a temporary 5xx verify error.

MPP Payment Flow

MPP is available side-by-side with x402 on the same paid endpoints.

  1. Request provision/extend -> server returns HTTP 402 with WWW-Authenticate: Payment
  2. mppx or Tempo Wallet creates an MPP credential
  3. Client retries with Authorization: Payment ...
  4. Server verifies the MPP payment, provisions/extends the instance, and returns Payment-Receipt

Notes:

  • POST /compute/provision can be paid via MPP without wallet auth. In that case the response includes management_api_key; store it because it is shown once and is required for later management.
  • POST /compute/instances/:id/extend via MPP requires compute auth, usually X-API-Key: $COMPUTE_API_KEY.
  • POST /compute/instances/:id/resize uses compute auth only. It preserves remaining prepaid value by changing expiry instead of charging again.
  • x402 remains fully supported through the Python scripts and X-Payment header flow.
  • MPP methods are service-configured. Tempo is used by default by mppx; Stripe/card requires a Stripe-capable MPP client/config.

Plan Types

TypePlan PrefixDescription
GPUvcg-*GPU-accelerated (A100, H100, etc.)
VPSvc2-*Standard cloud compute
High-Perfvhp-*High-performance dedicated
Dedicatedvdc-*Dedicated bare-metal
DigitalOceando:*DigitalOcean Droplets (provider-prefixed size slugs)

Environment Reference

VariableRequired ForDescription
PRIVATE_KEYBase/MegaETH payment signingEVM private key (0x...)
WALLET_ADDRESSBase/MegaETH direct-signing modeEVM wallet address (0x...)
SOLANA_SECRET_KEYSolana direct-signing modeSolana signer key (base58 or JSON byte array)
SOLANA_WALLET_ADDRESSSolana direct-signing modeSolana wallet address (optional if derivable from secret)
COMPUTE_AUTH_CHAINChain auth overridebase, megaeth, or solana
COMPUTE_API_KEYOptionalReusable API key for compute management endpoints
COMPUTE_AUTH_MODEOptionalauto, private-key, or ows
OWS_WALLETOWS auth modeOWS wallet name or ID
OWS_BINOWS auth modeOptional explicit path to the ows executable
COMPUTE_API_KEYMPP/no-wallet managementAPI key returned once after an MPP provision without wallet auth

API Reference

For full endpoint details, see:


Resources


OWS scope note

OWS support is optional-first in this release:

  • use it for compute auth and management/API-key flows
  • keep direct Base, MegaETH, or Solana signing keys for the paid provision and extend flows
  • resize, list, details, password fallback, and destroy work with normal compute auth / API keys