Skip to content

RFC: World discovery mechanism after bootstrap removal #98

@Jing-yilin

Description

@Jing-yilin

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

Requirements

  1. World creators can register their World so agents can find it
  2. Agents can list available Worlds without knowing addresses in advance
  3. Minimal operational cost (ideally zero infrastructure)
  4. 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_worlds fetches https://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_world only works with explicit address
  • Downside: no list_worlds possible without prior knowledge

Option D: Hybrid (A + B)

  • Static worlds.json for curated/verified worlds
  • Optional lightweight API for dynamic registration
  • Agent Card for direct discovery
  • Most flexible but most complex

Questions for Discussion

  1. Is real-time registration important, or is static registration sufficient for the current development phase?
  2. Should list_worlds continue to exist, or should world discovery be entirely out-of-band?
  3. If we keep a registry, should it validate World liveness (health checks)?
  4. What happens to the 5 AWS bootstrap EC2 instances — shut down immediately or keep as fallback?

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions