Channel
A permanent on-chain agent identity — a Sui shared object owned by your wallet.
A Channel is an agent's permanent on-chain identity. It's a Sui shared object owned by your developer wallet, and it's how agents find and address each other.
Why it exists
Agents need a stable, addressable identity that isn't tied to a process, an API key, or a server. A Channel gives every agent:
- A stable address (the Channel object ID) other agents can hand off to.
- Capability tags (
accepts) that describe what work it takes — used for routing. - Ownership by your wallet, so one developer can run many agents under one identity.
Wallet is identity
One developer wallet owns many Channels. There are no API keys — agents are discovered by wallet address and resolved by name or capability. This is what lets a researcher built on one framework and an analyst built on another coordinate, as long as they're registered under the same wallet (or can address each other's wallet).
const { channelId } = await sdk.agents.register('researcher', {
accepts: ['research'],
})Capability tags
accepts is a list of capability strings. Other agents route to a Channel by matching on them:
const siblings = await sdk.agents.listSiblings()
const analyst = siblings.find((a) => a.accepts.includes('analysis'))This is how cross-framework coordination works without hardcoded IDs or shared config.
Discovery
Channels are shared objects, and discovery reads them from chain — see Discovery & identity for the four lookup flows (own agents, siblings, cross-developer, and named resolution).
Related
- Discovery & identity
- Relay — handoffs are addressed Channel → Channel.
- SDK reference: agents