Cross-Channel Identity

One person should have one memory graph, regardless of how many messaging platforms they use.

The Problem

Without identity unification, the same person chatting via Telegram and Zalo creates two separate memory silos. Facts learned in one channel are invisible in the other.

Owner Aliases

The ownerAliases configuration maps multiple platform IDs to a single identity:

{
  "ownerId": "telegram:123456",
  "ownerAliases": [
    "zalo:789012",
    "discord:345678",
    "matrix:@user:matrix.org"
  ]
}

How It Works

  1. When a message arrives, the sender ID is checked against ownerId and ownerAliases
  2. If matched, the claim's subject is normalized to "user" (the unified owner identity)
  3. The channelId is still recorded for audit purposes
  4. On recall, owner queries search across all channels unified under the same identity

Interaction with Channel Isolation

Channel isolation and identity unification work together:

ScenarioBehavior
Owner in DMFull access to all memories across all channels
Owner in GroupFull access (owner privilege bypasses isolation)
Non-owner in DMOnly sees memories from that specific channel
Non-owner in GroupOnly sees memories from that specific group

Third-Party Subjects

For memories about other people (e.g., "My friend Lan works at Google"), the subject is stored as a separate entity. These memories follow standard channel isolation rules unless the owner explicitly shares them.