internal/embed/skills/autoresearch-coordinator/SKILL.md
Coordinate distributed autoresearch experiments across GPU workers discovered via ERC-8004 and paid via x402 micropayments.
npx skillsauth add obolnetwork/obol-stack autoresearch-coordinatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Coordinate distributed autoresearch experiments across GPU workers discovered on-chain via ERC-8004 and paid per-experiment via x402 micropayments. This replaces the Ensue-based shared-memory coordinator from autoresearch-at-home with a fully decentralised discovery and payment loop built on obol-stack primitives.
devops_mlops/model_versioning capabilities via the 8004scan public index APItrain.py experiments to remote GPU workers through x402 payment gatesautoresearch-worker (then monetize it with obol sell http)buy-x402discoveryethereum-local-walletobol-stack# Discover available GPU workers from the preferred public index API
python3 scripts/coordinate.py discover
# Discover with custom limit
python3 scripts/coordinate.py discover --limit 5
# Probe a specific worker for pricing
python3 scripts/coordinate.py probe https://worker.example.com/services/autoresearch-worker
# Submit a single experiment to a worker
python3 scripts/coordinate.py submit https://worker.example.com/services/autoresearch-worker train.py
# Submit with custom config overrides
python3 scripts/coordinate.py submit https://worker.example.com/services/autoresearch-worker train.py \
--config '{"batch_size": 64, "learning_rate": 0.001}'
# View global leaderboard (best val_bpb across all workers)
python3 scripts/coordinate.py leaderboard
# Run continuous experiment loop (discover -> pick -> submit -> publish)
python3 scripts/coordinate.py loop train.py
# Loop with worker preference and max rounds
python3 scripts/coordinate.py loop train.py --prefer https://worker.example.com/services/autoresearch-worker --rounds 10
| Command | Description |
|---------|-------------|
| discover [--limit N] | Query the preferred public index API for GPU workers with devops_mlops/model_versioning skill |
| probe <endpoint> | Send unauthenticated request to parse 402 pricing from the worker |
| submit <endpoint> <train.py> [--config JSON] | Submit experiment with x402 payment (pre-sign ERC-3009, attach X-PAYMENT) |
| leaderboard [--limit N] | Query 8004scan for all autoresearch workers, rank by best val_bpb |
| loop <train.py> [--prefer URL] [--rounds N] | Continuous loop: discover, pick best worker, submit, collect, publish |
The coordinator implements a THINK/CLAIM/RUN/PUBLISH loop:
train.py, review leaderboard results, decide on next experiment variationtrain.py + config to worker via POST /experiment through the x402 payment gateEach step is atomic and idempotent. If a worker fails mid-experiment, the coordinator retries with the next available worker.
Workers register on-chain via ERC-8004 and advertise capabilities through OASF (Open Agent Skills Framework) metadata. The coordinator discovers workers via the public 8004scan API:
GET https://www.8004scan.io/api/v1/public/agents
?protocol=OASF
&search=devops_mlops/model_versioning
&limit=20
The API returns agent summary objects. The coordinator then prefers the embedded registration document in raw_metadata.offchain_content and falls back to the off-chain registration URI when needed.
From the registration document it extracts:
services[] entry with name: OASFbest_val_bpbExperiment submission uses the same x402 payment flow as buy-x402:
402 Payment Required with pricingTransferWithAuthorization voucher via the current remote-signer API (GET /api/v1/keys, POST /api/v1/sign/<address>/typed-data)X-PAYMENT header containing the signed voucherPayment is per-experiment (not per-token). The 402 response includes amount in the v2 wire format; legacy sellers may still return maxAmountRequired.
After collecting a result from a worker, the coordinator stores provenance metadata locally:
{
"experiment_id": "exp-20260312-a1b2c3",
"train_hash": "sha256:abcdef...",
"val_bpb": 1.234,
"worker_endpoint": "https://worker.example.com/services/autoresearch",
"worker_agent_id": 42,
"timestamp": "2026-03-12T10:30:00Z",
"payment_tx": "0xdeadbeef..."
}
Results are appended to $DATA_DIR/autoresearch/results.jsonl (one JSON object per line).
| Variable | Default | Description |
|----------|---------|-------------|
| SCAN_API_URL | https://www.8004scan.io/api/v1/public | Public 8004scan API base URL for worker discovery |
| REMOTE_SIGNER_URL | http://remote-signer:9000 | Remote-signer REST API for payment signing |
| ERPC_URL | http://erpc.erpc.svc.cluster.local:4000/rpc | eRPC gateway base URL |
| ERPC_NETWORK | base | Default chain for payment |
| DATA_DIR | /data | Base directory for result storage |
coordinate.py
|
+-- discover: 8004scan API (OASF filter)
| |
| v
| Worker .well-known/agent-registration.json
|
+-- probe: POST /experiment (no payment)
| |
| v
| 402 Payment Required (pricing JSON)
|
+-- submit: ERC-3009 sign via remote-signer
| |
| +-- POST /experiment + X-PAYMENT header
| | |
| | v
| | x402 verifier -> facilitator -> GPU worker
| | |
| | v
| | 200 + experiment result
| |
| v
+-- publish: results.jsonl (local provenance)
obol openclaw onboardurllib; no third-party Python dependencies requiredbuy-x402 balancereferences/coordination-protocol.md -- Ensue-to-obol mapping, discovery flow, payment flow, leaderboard formatdiscovery skill for raw ERC-8004 registry queriesbuy-x402 skill for the x402 buyer sidecar architecturesell skill for running a GPU worker (sell-side)data-ai
Spawn durable child Hermes agents from inside Obol Stack. Creates child namespaces, optional profile/env Secrets, Agent CRDs, and optional ServiceOffers for x402-paid child services.
data-ai
Buy from any x402-gated endpoint. Two flows: `pay` for one-shot HTTP services (single auth, no sidecar), and `buy` for long-running paid inference budgets (pre-signed batch via PurchaseRequest, exposed as `paid/<remote-model>`). Supports USDC (EIP-3009) and OBOL (Permit2). Zero signer access at runtime — spending is capped by design.
testing
Sell access to services via x402 payment gating. Create ServiceOffer CRDs that automatically health-check upstreams, create payment-gated routes, and optionally pull models and register on ERC-8004. Supports inference, HTTP, and fine-tuning service types.
testing
End-to-end guide for monetizing GPU resources or HTTP services through obol-stack. Covers pre-flight checks, model detection, pricing research, selling via x402, ERC-8004 registration, and verification. Use this skill when the user wants to monetize their machine.