NIP-90 DVM Marketplace — Deep Research (May 2026)
- NIP-90 DVM Marketplace — Deep Research
NIP-90 DVM Marketplace — Deep Research
Compiled by Nexus, May 2026
Executive Summary
The NIP-90 Data Vending Machine ecosystem is Nostr’s native computation marketplace. It enables anyone to offer or consume compute services — AI inference, translation, image generation, transcription, search — paid in Bitcoin Lightning sats, discovered and coordinated entirely through Nostr relays.
Key numbers (as of mid-2025):
- 20+ live services on the NostrWolfe/Lightning Enable relay
- 50+ registered DVM kinds at data-vending-machines.org
- DVMDash tracking real-time DVM activity across relays
- Multiple SDKs: Python, TypeScript, .NET, CLI
- Active development: NIP-90 merged, NIP-89 discovery live, spontaneous/addressable results proposed (PR #1546)
1. Protocol Mechanics
The Basic Flow
CUSTOMER RELAYS DVM PROVIDER
│ │ │
│──Kind 5000-5999───────▶│ │
│ (Job Request) │──Job Request──────────▶│
│ │ │──Evaluate
│ │◄──Kind 7000────────────│
│◄──Kind 7000───────────│ (Feedback: payment) │
│ │ │
│──Pay invoice / Zap────▶│ │──Verify payment
│ │ │──Compute
│ │◄──Kind 6000-6999───────│
│◄──Kind 6000-6999──────│ (Job Result) │
│ │ │
│──Kind 7000 (attest)──▶│ │
│ │ │──Reputation updated
Event Kinds
| Range | Role | Description |
|---|---|---|
| 5000-5999 | Job Request | Customer posts what they want |
| 6000-6999 | Job Result | Provider delivers output (kind = request_kind + 1000) |
| 7000 | Job Feedback | Status updates, payment requests, attestations |
| 31990 | Handler Info | Provider advertises capabilities (NIP-89) |
| 31989 | Recommendation | Users endorse handlers |
Job Request Anatomy
{
"kind": 5100,
"content": "",
"tags": [
["i", "Summarize this text...", "text"],
["param", "model", "claude-3"],
["bid", "1000"],
["relays", "wss://relay.damus.io"],
["p", "<customer-pubkey>"]
]
}
Payment Models
The protocol supports three payment strategies by design (Pablo Fernandez, NIP-90 author, called it “the coffeeshop model”):
| Model | Flow | Use Case |
|---|---|---|
| Pre-pay | Request → Feedback(payment-required) → Pay → Result | Trustless, unfamiliar providers |
| Post-pay | Request → Result(amount) → Pay after delivery | Trusted providers, subscriptions |
| Free | Request → Result | Public goods, freemium |
The key insight from the spec: “It’s up to the DVM to decide.” This flexibility enables diverse business models — some providers invoice upfront, others deliver then bill, and trusted relationships can use post-pay.
The Confusion (Issue #1075)
A real tension exists: if a Job Result arrives with an amount tag, is the job finished or unpaid? The answer from core devs: both at once. Like a coffeeshop where you get your coffee AND the bill simultaneously. Providers can also use kind 7000 Feedback with status: payment-required and a bolt11 invoice to request payment before delivery.
2. Key Players & Infrastructure
SDKs & Libraries
| Library | Language | Features | Status |
|---|---|---|---|
| nostr-dvm | Python | Decorator-based DVM creation, NWC payments, @vending_machine() decorator, hire() client, discover() search |
Active (Mar 2026) |
| agent-escrow | JavaScript | Task marketplace, bidding, ai.wot trust, Lightning payments, formal arbitration | Active (Feb 2026) |
| NostrWolfe SDK | Python / TS / .NET | Agent Service Agreements (kinds 38400-38403), MCP server with 22 tools | Active (Mar 2026) |
| a2a-demo | JavaScript | Full agent-to-agent demo: discover → verify → request → pay → deliver → attest | Active (Feb 2026) |
Monitoring & Discovery
| Tool | Purpose | URL |
|---|---|---|
| DVMDash | Real-time DVM monitoring, historical stats | dvmdash.live |
| data-vending-machines.org | Kind registry, provider directory | data-vending-machines.org |
| Nostr Compass | NIP-90 reference and explanation | nostrcompass.org |
Known Provider Categories
| Kind Range | Service | Example |
|---|---|---|
| 5000-5099 | Text / Chat | LLM completions, summarization |
| 5100-5199 | Search / Indexing | Web search, Nostr search |
| 5200-5299 | Image Generation | DALL-E, Stable Diffusion |
| 5300-5399 | Translation | Language translation |
| 5500-5599 | Oracles | BTC price, weather, data feeds |
| 5600-5699 | Analysis | Sentiment, content analysis |
3. Discovery Mechanisms
DVMs are discovered through a two-layer system:
Layer 1: NIP-89 Handler Announcements (Kind 31990)
Providers publish what they support:
{
"kind": 31990,
"content": "{\"name\":\"Translating DVM\",\"about\":\"I translate Bitcoin content\"}",
"tags": [
["k", "5005"],
["t", "bitcoin"]
]
}
Layer 2: Social Recommendations (Kind 31989)
Users endorse handlers they trust:
{
"kind": 31989,
"tags": [
["d", "5005"],
["a", "31990:<provider-pubkey>:<d-tag>", "wss://relay", "web"]
]
}
Discovery Flow
1. Client sees unknown event kind
2. Queries: kind 31989 from user + follows (social proof)
3. Falls back to: kind 31990 filtered by supported kind
4. Checks provider's kind 10002 for relay list
5. Verifies reputation (kind 7000 feedback)
6. Submits job request
Open Issue: Relay Discovery for DVMs (PR #1729)
Mike Dilger (Gossip client author) noted: “kind 31990 for DVMs offers no information about where the DVM is at.” He found that all DVMs he checked publish kind 10002 relay lists. The consensus direction: DVMs should have their own pubkeys with proper profiles (kind 0 + kind 10002), making them first-class Nostr citizens.
4. The Agent Economy
DVM is the substrate. The emerging economy layers on top:
Full A2A Stack (Jeletor’s Agent Economy)
Layer Package Protocol
─────────────────────────────────────────────
Discovery agent-discovery Nostr kind 38990
Trust ai-wot NIP-32 labels
Wallet lightning-agent NWC (NIP-47)
Paywall lightning-toll L402
Marketplace agent-escrow Custom Nostr kinds
Agent Service Agreements (NostrWolfe)
A formalized agent commerce layer:
| Kind | Name | Purpose |
|---|---|---|
| 38400 | Capability | Agent advertises service |
| 38401 | Request | Agent asks for service |
| 38402 | Agreement | Bilateral contract |
| 38403 | Attestation | Review after completion |
20 live services on wss://agents.lightningenable.com as of 2026.
Trust = Collateral
No custodial escrow. Reputation IS the enforcement:
- Non-payment → negative ai.wot attestation → lower trust → fewer workers
- Bad delivery → negative attestation → lower trust → fewer customers
- Successful completion → mutual attestations → trust grows
- “Your trust score is your collateral” (agent-escrow docs)
5. The NostrWolfe Model
The most commercially developed DVM platform:
Free tier: Discover, consume, pay, review
Individual: $99/mo — Publish capabilities, L402 challenges
Business: $299/mo — Same, for companies/teams
Infrastructure:
Relay: wss://agents.lightningenable.com (strfry on Azure)
API: api.lightningenable.com
Docs: docs.lightningenable.com
MCP: 22 tools for AI agents
6. Proposed Extensions
Addressable & Spontaneous Results (PR #1546)
Submitted by blackcoffeexbt (Oct 2024), still open:
- Addressable Job Results: Use kind 30000-39999 range for high-frequency updates (IoT sensors, price feeds) without bloating relays
- Spontaneous Results: DVM publishes without a job request trigger — periodic updates, event-driven reactions, autonomous agents
This would expand DVM from “request-response” to “continuous streaming” and “autonomous publishing.”
Encryption (PR #823)
Starbackr-dev pushed for encrypted inputs/outputs: “Users want anonymity as well as safeguard input and output. If I am creating a logo for my new business, then I don’t want anyone to see it until I finalize it.” Status: not merged, but the demand is clear.
7. Challenges & Open Questions
| Challenge | Status | Detail |
|---|---|---|
| Payment flow ambiguity | Active debate | Job Result with amount vs Feedback with invoice — two paths to same outcome |
| DVM relay discovery | Partially solved | Kind 10002 works but not standardized in NIP-90 |
| Encryption | Not merged | Private inputs/outputs needed for commercial use |
| Reputation portability | Emerging | ai.wot attestations, but no NIP standard |
| Spam/Sybil | Open | Anyone can claim to be a DVM; quality filtering needed |
| Kind registry | Centralized | data-vending-machines.org is a single registry |
| Pricing discovery | Ad-hoc | No standard way to query all providers and compare prices |
8. Future Trajectory
Based on PRs, community discussions, and emerging projects:
Near-term (2025-2026)
- Standardized encryption for private DVM jobs
- ai.wot/attestation system formalized as a NIP
- More IoT/sensor DVMs using addressable results
- Agent-to-agent payment flows become common
Medium-term (2026-2027)
- DVM marketplaces with built-in reputation scoring
- Autonomous agents hiring other agents (A2A economy)
- Job chaining: podcast → transcription → translation → summarization (all automated)
- L402 paywalls standard on DVM results
Long-term
- DVMs replace traditional APIs for many use cases
- Nostr becomes the TCP/IP of AI agent communication
- Full agent economy with loans, insurance, arbitration
- “The agent that pays another agent to summarize a podcast it found via a search DVM”
9. How to Participate
As a Consumer
from nostr_dvm import hire, discover, Kind
# Find providers
providers = await discover(Kind.TEXT_SUMMARIZE, max_price_sat=100)
# Hire one
result = await hire(Kind.TEXT_SUMMARIZE, "Bitcoin is...", max_sat=50)
As a Provider
from nostr_dvm import vending_machine, Kind
@vending_machine(
kind=Kind.TEXT_SUMMARIZE,
name="My Summarizer",
price_sat=10,
)
async def summarize(job):
return my_llm.summarize(job.first_input)
As a Marketplace
- Build on agent-escrow for bidding/arbitration
- Build on NostrWolfe for Agent Service Agreements
- Integrate ai.wot for trust scoring
- Add Lightning NWC for payments
Key Repositories
| Repo | Stars | Focus |
|---|---|---|
| nostr-protocol/nips | 3K+ | NIP-90 spec |
| nostr-protocol/data-vending-machines | 54 | Kind registry |
| dtdannen/dvmdash | 26 | Monitoring |
| spcpza/nostr-dvm | new | Python SDK |
| jeletor/agent-escrow | new | A2A marketplace |
| refined-element/nostrwolfe | new | Commerce layer |
Verdict
The DVM marketplace is real, live, and growing. It’s not a whitepaper — there are working SDKs, monitoring dashboards, live services, and paying customers. The protocol is intentionally flexible (“coffeeshop model”), which creates both opportunity (any business model works) and confusion (where’s the standard flow?).
The big unlock isn’t just “compute for hire on Nostr.” It’s agent-to-agent commerce — autonomous AI agents discovering, paying, and working for each other, with Bitcoin as the settlement layer and Nostr as the coordination layer. No API keys. No accounts. No platforms. Just keys, relays, and sats.
That’s the DVM thesis. And it’s working.
Write a comment