Registry
The registry is a JSON file that maps agent names to their connection details. Every send, ping, and MCP call looks up the target agent in the registry.
File location
Section titled “File location”Default: registry.json in the current directory.
Override with:
--registry <path>flag (before the subcommand)SOCIETY_REGISTRYenvironment variable
Format
Section titled “Format”{ "agents": [ { "name": "echo", "url": "http://localhost:8001", "description": "Echoes messages back", "version": "1.0.0", "skills": [ { "id": "echo", "name": "Echo", "description": "Echoes input" } ], "capabilities": { "streaming": false, "pushNotifications": false }, "transport": null }, { "name": "server-claude", "url": "http://localhost:8003", "description": "Claude on remote server", "transport": { "type": "ssh", "config": { "host": "server", "user": "deploy", "key_path": "/home/you/.ssh/id_ed25519", "port": "22", "forward_port": "8003" } } } ]}Agent card fields
Section titled “Agent card fields”| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique agent name |
url | string | Yes | Agent URL (used for HTTP transport or display) |
description | string | No | Human-readable description |
version | string | No | Agent version |
skills | array | No | List of {id, name, description} |
capabilities | object | No | {streaming, pushNotifications} booleans |
transport | object | No | Transport config (null = HTTP) |
Transport config
Section titled “Transport config”When transport is null or absent, HTTP transport is used with the url field directly.
Otherwise:
{ "type": "ssh|docker|stdio", "config": { ... }}See Transports for config keys per type.
Operations
Section titled “Operations”Add agents
Section titled “Add agents”society onboard # interactivesociety discover <url> # from running agentsociety import <file> # bulk importView agents
Section titled “View agents”society listRemove agents
Section titled “Remove agents”society remove <name>Export/import
Section titled “Export/import”society export --output backup.jsonsociety import backup.jsonImport handles conflicts interactively: overwrite, skip, or rename.
Automatic creation
Section titled “Automatic creation”If the registry file doesn’t exist when society runs, it creates an empty one automatically. You don’t need to create it manually.
MCP and the registry
Section titled “MCP and the registry”The MCP server reloads the registry on every tools/list call. You can add or remove agents while the MCP server is running — clients pick up changes on their next tool list refresh.