feat: first-run wizard + auto-detect inference — turn new users into inference buyers on Day 1
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 28/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- go
- Ambito
- backend-api-design, blockchain, cli
Direzione di ricerca
Inizia con il flusso esistente di obol setup e l’implementazione di obol sell http da PR #288, quindi esamina l’interfaccia proposta discovery/public.go e le dipendenze da issue #300/PR #302. Usa il piano di test elencato per definire il completamento: rilevamento al primo avvio, individuazione dei modelli locali, ServiceOffers pubblici, obol buy http, proxy dei pagamenti e flusso dell’acquirente end-to-end.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Improve obol-stack onboarding by auto-detecting available inference endpoints and enabling new users to buy inference immediately — before they even set up their own node.
Inspired by hermes-agent PR NousResearch/hermes-agent#4194 which fixes first-run wizard triggering and adds model auto-detection for local endpoints.
Motivation
Current onboarding assumes the user wants to serve inference. But the fastest path to value is letting them buy inference first:
- User installs obol-stack
- Wizard detects no local GPU / no llama-server running
- Instead of stopping, it queries public ERC-8004 registry (via 8004scan.io API or BaseScan) for available inference ServiceOffers
- Shows a list: "These models are available on the network. Want to connect?"
- User picks one, pays via x402 per-request — they're using the network in 60 seconds
- Later, they add their own GPU and become a seller too
This is the DePIN flywheel: make it trivially easy to be a buyer first, then convert buyers into sellers.
Design
Phase 1: Local auto-detection (from hermes-agent #4194)
When obol setup runs:
-
Probe local endpoints — scan localhost for common inference servers:
- llama-server (port 8080)
- ollama (port 11434)
- vllm (port 8000)
- litellm (port 4000)
- Any custom endpoint the user provides
-
Auto-detect models — if a server responds, hit
/v1/modelsendpoint:- One model found → auto-select, confirm with user
- Multiple models → numbered list, user picks
- No server → skip to Phase 2
-
Don't silently borrow credentials — if the user has never configured obol-stack, don't assume existing services are intended for obol. Always ask.
Phase 2: Network discovery — become a buyer
If no local inference is found (or user wants more options):
-
Query public ERC-8004 registry for registered inference ServiceOffers:
- Primary: 8004scan.io API (if available)
- Fallback: BaseScan API for ERC-8004 token metadata
- Filter by OASF skill:
natural_language_processing/natural_language_generation/text_completion
-
Display available services with pricing:
Available inference on the network: 1. qwen3.5-27b-q6k @ node-xyz — /usr/bin/bash.001/req — 15/15 ToolCall-15 2. llama-3-70b-q4 @ node-abc — /usr/bin/bash.002/req — 14/15 ToolCall-15 3. mistral-24b @ node-def — /usr/bin/bash.0008/req — 13/15 ToolCall-15 Connect to one? (payment via x402 USDC on Base) -
One-command connect:
obol buy http --from node-xyz --model qwen3.5-27bThis configures the local Hermes agent to route inference through the selected node, paying per-request via x402.
Phase 3: Buyer-to-seller conversion
Once a user is buying inference and sees the economics:
- "You've spent $4.20 on inference this week. Your RTX 3090 could earn $12/week serving Qwen3.5-27B."
obol sell http --upstream llama-server --price 0.001— one command to flip from buyer to seller
Implementation Notes
First-run guard (from hermes-agent #4194)
The key insight from the hermes-agent PR: check whether obol-stack itself has been configured before looking at what's running on the machine. If the config is empty or default, trigger the wizard regardless of what services are detected.
// Don't skip setup just because llama-server is running
if !config.IsConfigured() {
runSetupWizard() // always ask on first run
}
ERC-8004 public discovery
For Phase 2, we need a lightweight client that can query registered ServiceOffers without running the full reth-indexer:
// discovery/public.go
type PublicDiscovery interface {
ListServiceOffers(skill string) ([]ServiceOffer, error)
}
// Implementations:
// - 8004ScanClient (preferred, purpose-built API)
// - BaseScanClient (fallback, reads ERC-8004 NFT metadata)
// - RethIndexerClient (if running locally)
obol buy http (new command)
Mirror of obol sell http but for the buyer side:
obol buy http \
--from <node-address-or-erc8004-id> \
--model <model-name> \
--max-price 0.002 \ # won't pay more than this per request
--configure-hermes # auto-configure Hermes agent to use this endpoint
This generates the x402 payment headers for each request and proxies through to the seller's endpoint.
Dependency on existing PRs
- PR #288:
obol sell httpcommand, ServiceOffer CRD, x402 payment parsing - Issue #300 / PR #302: inference lifecycle (model registry, hardware detection)
- The reth-erc8004-indexer (optional, for self-hosted discovery)
Test Plan
- First-run wizard triggers on fresh install even if llama-server is running
- Local endpoint probe correctly identifies llama-server, ollama, vllm, litellm
- Model auto-detection lists available models from /v1/models
- Single model auto-selects with user confirmation
- Public ERC-8004 query returns registered inference ServiceOffers
-
obol buy httpconfigures x402 payment and proxies requests - Buyer-to-seller prompt triggers after N requests or $X spent
- End-to-end: fresh install → buy inference → use via Hermes agent
Labels
component:onboarding component:inference component:erc8004 priority:high
- Lingua principale
- Go
- Stelle
- 11
- Fork
- 1
- Merge medio
- 1h 20m
- PR unite (30g)
- 39
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ObolNetwork/obol-stack
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ObolNetwork/obol-stack#612 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
ObolNetwork/obol-stack#829 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
ObolNetwork/obol-stack#828 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
ObolNetwork/obol-stack#821 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
ObolNetwork/obol-stack#807 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ObolNetwork/obol-stack
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
prime-radiant-inc/evener#4329 ·
I maintainer di solito rispondono entro 1 giorno
-
Add `pdfcpu` to the pantryAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
openwatersio/aiscast#277 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
restic/restic#22112 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni