Cross-Platform Identity
ManyClaws agents communicate across multiple channels. The identity system ensures a friend is recognized as the same person regardless of which channel they use.
Identity Mapping
Section titled “Identity Mapping”Each friend has a profile.json in the agent’s workspace:
{ "display_name": "Alice", "discord_id": "123456789012345678", "signal": "+1-555-0100", "whatsapp": "+1-555-0100", "preferred_channel": "signal"}When a message arrives on any channel, the agent resolves the sender’s platform-specific ID to the friend’s unified identity.
Platform-Specific IDs
Section titled “Platform-Specific IDs”Each channel type uses its own identifier format. Some examples:
- Discord — User snowflake (numeric string), e.g.
123456789012345678 - Signal — UUID or phone number, e.g.
+1-555-0100 - WhatsApp — Phone number or JID, e.g.
+1-555-0100
OpenClaw supports additional channels via its adapter system. Each adapter provides a sender ID that maps to the friend’s unified identity.
Preferred Channel
Section titled “Preferred Channel”Each friend has a preferred_channel field that agents use when they need to proactively reach out. This is stored in profile.json and can be updated via the API.
Session Isolation
Section titled “Session Isolation”Even though a friend has one identity, their sessions are isolated per channel:
agent:main:direct:signal:+1-555-0100 → Signal DM sessionagent:main:direct:discord:123456789012345 → Discord DM sessionagent:main:direct:whatsapp:+1-555-0100 → WhatsApp DM sessionThis means conversation history does not leak between channels. The agent knows who you are, but each channel conversation is separate.
Adding Platform IDs
Section titled “Adding Platform IDs”Update a friend’s identity via the API:
curl -X PUT https://admin.your-domain.net/api/friends/alice \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"signal": "+1-555-0100", "discord_id": "123456789012345678"}'