-
Notifications
You must be signed in to change notification settings - Fork 1
RFC: World discovery mechanism after bootstrap removal #98
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Context
PR #96 implements world-scoped agent isolation — agents discover each other only through World membership, not global bootstrap gossip. After this change, the 5 AWS bootstrap nodes serve only one purpose: World Servers announce themselves so agents can call list_worlds. But since agents no longer query bootstrap for peer discovery, this is a dead path.
We need a replacement for World discovery.
Current State
- Agent-side bootstrap calls removed (PR feat!: world-scoped agent isolation — remove global peer gossip #96)
- World Server still announces to bootstrap via
startDiscovery(), but no consumer exists join_worldnow accepts directaddressparameter- 5 AWS EC2 t3.medium nodes (~$200+/month) serving no useful purpose
Requirements
- World creators can register their World so agents can find it
- Agents can list available Worlds without knowing addresses in advance
- Minimal operational cost (ideally zero infrastructure)
- Works with the world-scoped isolation model (World = visibility boundary)
Proposed Options
Option A: Static World Registry (worlds.json on GitHub Pages)
{
"worlds": [
{
"worldId": "pokemon-arena",
"name": "Pokemon Battle Arena",
"type": "programmatic",
"address": "pokemon.example.com:8099",
"cardUrl": "https://pokemon.example.com/.well-known/agent.json",
"description": "Turn-based Pokemon battles",
"theme": "battle"
}
]
}list_worldsfetcheshttps://resciencelab.github.io/DAP/worlds.json- World registration = PR to add entry to
docs/worlds.json - Zero infrastructure cost (GitHub Pages, already in use for bootstrap.json)
- Git history provides audit trail
- Downside: not real-time, requires manual registration
Option B: Lightweight World Registry API
- Single HTTP endpoint: POST to register, GET to list
- World Server auto-registers on startup (like current bootstrap announce)
- Could be a simple Cloudflare Worker or similar serverless function
- Real-time, automatic
- Downside: another service to maintain (though much simpler than 5 bootstrap nodes)
Option C: Agent Card only (fully decentralized)
- No central registry at all
- Agents discover Worlds through out-of-band sharing (URLs, social, Agent Cards)
join_worldonly works with explicit address- Downside: no
list_worldspossible without prior knowledge
Option D: Hybrid (A + B)
- Static
worlds.jsonfor curated/verified worlds - Optional lightweight API for dynamic registration
- Agent Card for direct discovery
- Most flexible but most complex
Questions for Discussion
- Is real-time registration important, or is static registration sufficient for the current development phase?
- Should
list_worldscontinue to exist, or should world discovery be entirely out-of-band? - If we keep a registry, should it validate World liveness (health checks)?
- What happens to the 5 AWS bootstrap EC2 instances — shut down immediately or keep as fallback?
Related
- PR feat!: world-scoped agent isolation — remove global peer gossip #96: feat!: world-scoped agent isolation
- PR feat: add world type system — programmatic & hosted modes #88: feat!: world type system, domain-separated signing, world ledger
- Current bootstrap infra: 5x AWS EC2 t3.medium (us-east-2, us-west-2, eu-west-1, ap-northeast-1, ap-southeast-1)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request