Add new XMTP channel extension for decentralized messaging: - Direct messages (DMs) and group conversations - Text messages, reactions, and attachments - ENS address resolution for human-readable names - Quantum-resistant encryption (MLS protocol) - Multi-account support with per-account configuration - Database isolation and network selection (dev/production) - Comprehensive onboarding with wallet generation Includes wallet generation scripts, example configurations, troubleshooting guide, and test coverage for schemas, ENS resolution, multi-account handling, and onboarding flows. Note: Tests use Node's test runner format (node:test) and should be converted to Vitest format in follow-up work.
78 lines
2.5 KiB
Plaintext
78 lines
2.5 KiB
Plaintext
// XMTP Production Network Configuration
|
|
// Use for: real users, production deployments, permanent storage
|
|
// Cost: ~$5 USDC per 100k messages (one-time identity registration)
|
|
// Network: XMTP mainnet (permanent, production-grade)
|
|
|
|
{
|
|
channels: {
|
|
xmtp: {
|
|
// Enable the XMTP channel
|
|
enabled: true,
|
|
|
|
// Your bot's wallet private key
|
|
// ⚠️ PRODUCTION SECURITY:
|
|
// - NEVER commit this to git
|
|
// - Use environment variables: XMTP_WALLET_KEY=0x...
|
|
// - OR use a secrets manager (AWS Secrets, HashiCorp Vault, etc.)
|
|
// - Keep dev and production wallets separate
|
|
walletKey: process.env.XMTP_WALLET_KEY || "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
// Network: "production" for mainnet (permanent, costs gas)
|
|
env: "production",
|
|
|
|
// DM policy: SECURITY-CRITICAL for production!
|
|
// Recommended: "pairing" (requires approval for each new contact)
|
|
dmPolicy: "pairing",
|
|
|
|
// Database path: Use absolute path for production reliability
|
|
// - Different path per network (dev vs production)
|
|
// - Ensure directory exists and is writable
|
|
// - DON'T use /tmp (cleared on reboot)
|
|
// - Backup this directory regularly (contains conversation state)
|
|
dbPath: "/var/lib/clawdbot/xmtp/production/db",
|
|
// Alternative: dbPath: `${process.env.HOME}/.xmtp/production/db`
|
|
|
|
// Production: Restrict access with allowlist
|
|
// Only approved addresses can message your bot
|
|
allowFrom: [
|
|
"0x1234567890123456789012345678901234567890", // Your wallet
|
|
// "team.eth", // Team member ENS
|
|
// "0xabcd...5678" // Partner wallet
|
|
],
|
|
|
|
// Optional: Text message chunk limit (default: 4000)
|
|
textChunkLimit: 4000
|
|
}
|
|
},
|
|
|
|
// Production agent settings
|
|
agent: {
|
|
id: "main",
|
|
// Optional: Enable thinking for complex queries
|
|
// thinking: "enabled"
|
|
},
|
|
|
|
// Production model settings (example)
|
|
model: {
|
|
default: "anthropic/claude-sonnet-4-5",
|
|
// Optional: Use Opus for critical tasks
|
|
// thinking: "anthropic/claude-opus-4-5"
|
|
},
|
|
|
|
// Production logging
|
|
logging: {
|
|
level: "info", // "debug" for troubleshooting, "info" for production
|
|
// Optional: Send logs to external service
|
|
// targets: [
|
|
// { type: "console" },
|
|
// { type: "file", path: "/var/log/clawdbot/xmtp.log" }
|
|
// ]
|
|
},
|
|
|
|
// Production security
|
|
security: {
|
|
// Pairing approval timeout (how long pairing codes are valid)
|
|
// pairingTtlMinutes: 10
|
|
}
|
|
}
|