internal/embed/skills/sell/SKILL.md
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.
npx skillsauth add obolnetwork/obol-stack sellInstall 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.
Sell access to services via ServiceOffer custom resources. Each ServiceOffer describes a service to expose publicly with x402 micropayments (USDC via EIP-3009 or OBOL via Permit2, selected with --token). The cluster's serviceoffer-controller performs reconciliation; monetize.py process now waits for controller convergence and refreshes /skill.md.
ethereum-networksethereum-local-walletobol-stack# List all service offers across namespaces
python3 scripts/monetize.py list
# Create a new offer to monetize a local Ollama model
python3 scripts/monetize.py create my-inference \
--model qwen3.5:9b \
--runtime ollama \
--upstream ollama \
--namespace llm \
--port 11434 \
--per-request 0.001 \
--network base-sepolia \
--pay-to 0xYourWalletAddress
# Check status of an offer
python3 scripts/monetize.py status my-inference --namespace llm
# Process all pending offers (waits for controller convergence)
python3 scripts/monetize.py process --all
# Process a single offer
python3 scripts/monetize.py process my-inference --namespace llm
# Delete an offer (cascades Middleware + HTTPRoute via OwnerRef)
python3 scripts/monetize.py delete my-inference --namespace llm
| Command | Description |
|---------|-------------|
| list | List all ServiceOffer CRs across namespaces |
| status <name> --namespace <ns> | Show conditions and endpoint for one offer |
| create <name> --model ... --namespace ... | Create a new ServiceOffer CR |
| process <name> --namespace <ns> | Wait for a single offer to converge |
| process --all | Wait for all non-Ready offers to converge |
| delete <name> --namespace <ns> | Delete an offer and its owned resources |
The serviceoffer-controller drives these stages:
RegistrationRequest; the controller publishes /.well-known/agent-registration.json and performs ERC-8004 side effects when configuredThe x402-verifier watches published ServiceOffers directly, so deleting or pausing the offer removes enforcement without a separate rendered route object.
payment.payTo: USDC recipient wallet address (x402: payTo)payment.network: Chain for payments (e.g., base-sepolia, base)payment.price.perRequest: Flat per-request price in USDCpayment.price.perMTok: Per-million-tokens price in USDC (inference)payment.price.perHour: Per-compute-hour price in USDC (fine-tuning)payment.scheme: Payment scheme (default: exact)Phase 1 pricing behavior:
perRequest or price wins if explicitly providedperMTok is accepted and converted to a temporary enforced request price using perMTok / 1000approxTokensPerRequest = 1000perMTok value is still persisted in pricing metadata and shown in status outputServiceOffer CR (obol.org/v1alpha1)
|
+-- serviceoffer-controller
| +-- Health-check upstream
| +-- Create Middleware (ForwardAuth -> x402-verifier)
| +-- Create HTTPRoute (path -> upstream, with middleware)
| +-- Register on-chain (ERC-8004, optional)
|
+-- x402-verifier
| +-- Watch published ServiceOffers
| +-- Derive in-memory pricing rules + upstream auth
|
+-- monetize.py process
+-- Wait for controller convergence (no-op — controller owns all resources)
references/serviceoffer-spec.md — Full CRD field referencereferences/registrationrequest-spec.md — Child CRD used for publication and ERC-8004 side effectsreferences/x402-pricing.md — x402 pricing model detailsdata-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
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.
data-ai
Discover AI agents registered on the ERC-8004 Identity Registry. Search for agents by querying on-chain registration events, look up agent details (URI, owner, wallet), and fetch agent metadata. Read-only queries routed through the in-cluster eRPC gateway.