RODEO

Channels

Communication surfaces with native tone profiles

A channel is a communication surface — SMS, email, phone, social, referrals, environmental signals. Each carries a native tone profile that shapes delivery.

Types

TypeDescriptionExamples
directOne-to-oneSMS, email, phone
ambientPassive, environmentalBillboard, signage
socialPublic/semi-publicSocial media, community
proxyThird-party deliversReferrals, introductions
environmentalPhysical spaceStore layout, lighting
signalMachine-to-machineWebhooks, API calls

Tone

Four axes define native channel tone:

tone: {
  register: "casual",       // formality level
  voice: "peer",            // relationship posture
  awareness: "cold",        // expected audience context
  deniability: "none",      // plausible deniability
}

Channel tone interacts with beat tone — same beat delivers differently on different channels.

Provider

{
  name: "sms-main",
  type: "direct",
  provider: "twilio",
  provider_config: { from: "+15551234567" },
  limits: { maxPerHour: 60, maxPerDay: 200 },
}

Sensors

Channels declare supported sensor types:

sensor_capabilities: ["delivery", "engagement", "response"]

Casting

For proxy and social channels, casting_config defines how cast members are selected:

casting_config: {
  min_rating: 4.0,
  region: "TX-Hill-Country",
  role: "peer-referral",
}

Usage

const channel = await rodeo.channels.create({
  name: "email-formal",
  type: "direct",
  tone: { register: "formal", voice: "authority", awareness: "warm", deniability: "none" },
  provider: "sendgrid",
  provider_config: { from: "team@example.com" },
  sensor_capabilities: ["delivery", "engagement"],
});

Names must be unique per agent. type is immutable after creation.