Skip to main content
A multichain agent has one .wraith name with identities on multiple chains. The AI agent is chain-aware — chat naturally and it routes to the right chain.

Create a Multichain Agent

Pass an array of chains instead of a single chain:
import { Wraith, Chain } from "@wraith-protocol/sdk";

const wraith = new Wraith({ apiKey: "wraith_live_abc123" });

const agent = await wraith.createAgent({
  name: "alice",
  chain: [Chain.Horizen, Chain.Stellar, Chain.Ethereum],
  wallet: "0xYourWallet",
  signature: "0xSignature",
});
The agent gets a separate address and stealth meta-address on each chain:
console.log(agent.info.chains);
// [Chain.Horizen, Chain.Stellar, Chain.Ethereum]

console.log(agent.info.addresses);
// {
//   horizen: "0xabc...",
//   stellar: "GABC...",
//   ethereum: "0xdef..."
// }

console.log(agent.info.metaAddresses);
// {
//   horizen: "st:eth:0x...",
//   stellar: "st:xlm:...",
//   ethereum: "st:eth:0x..."
// }

Deploy on All Chains

Use Chain.All to deploy on every chain the platform supports:
const agent = await wraith.createAgent({
  name: "alice",
  chain: Chain.All,
  wallet: "0xYourWallet",
  signature: "0xSignature",
});

Chain-Aware Chat

The AI agent infers the chain from context. When it can’t, it asks.

Explicit Chain

await agent.chat("send 0.1 ETH to bob.wraith on horizen");
await agent.chat("send 10 XLM to carol.wraith on stellar");

Inferred Chain

await agent.chat("send 10 XLM to carol.wraith");
// XLM -> Stellar (unambiguous)

await agent.chat("send 100 ZEN to bob.wraith");
// ZEN -> Horizen (unambiguous)

Ambiguous Cases

await agent.chat("send 0.1 ETH to bob.wraith");
// "ETH exists on both Horizen and Ethereum. Which chain do you mean?"

await agent.chat("horizen");
// "Payment sent — 0.1 ETH to bob.wraith on Horizen..."

Cross-Chain Balance

await agent.chat("what's my balance on all chains?");
// "Balances:
//  Horizen: 1.5 ETH, 100 ZEN, 50 USDC
//  Stellar: 500 XLM
//  Ethereum: 0.3 ETH"

Cross-Chain Scanning

await agent.chat("scan for payments on all chains");
// "Incoming payments:
//  Horizen:
//  - 0.1 ETH at 0xabc...
//  Stellar:
//  - 10 XLM at GABC..."

How It Works

Under the hood, a multichain agent is a single entity with multiple chain registrations. The TEE derives different keys per chain using the derivation path:
wraith/agent/{agentId}/horizen   -> secp256k1 keys
wraith/agent/{agentId}/stellar   -> ed25519 keys
wraith/agent/{agentId}/ethereum  -> secp256k1 keys
The AI agent’s system prompt includes all chain identities, so it knows which chains the agent operates on and can route tool calls to the correct chain connector.

Privacy Across Chains

Each chain has independent stealth address activity. Payments on Horizen are not visible on Stellar. The privacy check analyzes each chain separately:
await agent.chat("run privacy check on all chains");
// "Privacy Analysis:
//  Horizen: Score 85/100
//  - 5 unspent stealth addresses
//  Stellar: Score 95/100
//  - All clear"

Single vs. Multichain

FeatureSingle-ChainMultichain
ChainsOneMultiple
AddressesOneOne per chain
Meta-addressesOneOne per chain
ChatDirect routingAI infers chain
Key derivationOne pathOne path per chain
PrivacyOne chain analysisPer-chain analysis
Both use the same SDK interface. The only difference is the chain parameter at creation time.