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
| Type | Description | Examples |
|---|---|---|
direct | One-to-one | SMS, email, phone |
ambient | Passive, environmental | Billboard, signage |
social | Public/semi-public | Social media, community |
proxy | Third-party delivers | Referrals, introductions |
environmental | Physical space | Store layout, lighting |
signal | Machine-to-machine | Webhooks, 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.