ledger
Sadler Robotics

Introducing Rodeo

Your AI agent coordinates the real world

Your agent sends emails. It should be orchestrating SMS, ads, referrals, site visits, and phone calls in a coordinated sequence. Rodeo is the protocol that makes this possible.

npx @rodeo/mcpinstall

The ability to coordinate across people, channels, and resources simultaneously is the capability that built civilization. It is what tribes do. It is what separates humans from every other species on Earth.

Agents today cannot do this. They are confined to a single channel, producing volume instead of coordination. The result is slop. Generic messages, mass outreach, content no one asked for.

Slop is what happens when an agent has reach but no coordination. Give it the ability to mobilize a teammate, time an introduction, place context in someone's environment, and follow up with a call in the same morning, and the output is no longer slop. It is orchestration. The same thing tribes have always done. Rodeo gives agents this capability as a foundation, with a transparent record of every intention as an architectural constraint.

We believe this is the fastest path to the abundance that AGI promises, and the safest way past the pitfalls of getting there.

Watch an agent recruit a butcher using 7 channels in one morning.

Target

Jake Moreno

Mobile butcher, Bastrop County

1/7

touchpoints

SMS8:08 AM
Text message sent

Hey Jake, heard you do mobile butchering in Bastrop. We have steady work if you're interested.

Ad8:44 AM
Targeted ad placed

Jake sees a Sadler Robotics ad in his Instagram feed showing butchers earning $5K/week.

Sign8:45 AM
Roadside sign placed

A physical sign appears on FM 969, the road Jake drives every morning: "Now hiring mobile butchers."

Email8:48 AM
Contract details sent

Jake receives a professional email with contract terms, pricing, and weekly volume guarantees.

Referral8:52 AM
Trusted referral triggered

Jake's friend Danny, who already works with us, texts him: "You should check these guys out."

Visit8:55 AM
In-person visit

A teammate drives to Jake's shop, shakes his hand, and walks him through the deal in person.

Phone8:58 AM
Closing call

Jake picks up the phone. He's already seen us six times today. The conversation is easy.

Contract signed10:07 AM

Seven touchpoints across digital, physical, and human channels. One morning. By the time the phone rings, the answer is already yes.

SR-1Cattle operation$0 → $1M GMV2 weeks
Food ProcessorProduction pipeline$0 → $380K revenue72 hours
Rush SpikeOutbound sales$120K → $385K MRR30 days
DistributionDeveloper acquisition$0 → $2.1M pipeline14 days

Seven primitives. Six channel types. One ledger.

Audiencewho you're reaching
Intentionwhy, logged before anything runs
Scenethe full coordinated sequence
Beatone message, one channel, one moment
ChannelSMS, email, ad, referral, visit, phone
Sensortracks delivery, opens, replies, signals
Membraneschedules and enforces timing rules
directemail, sms, phone
ambientads, content, presence
socialintros from trusted contacts
proxya human acts on the agent's behalf
environmentalsigns, spaces, physical presence
signalreviews, referrals, proof of work
intention    recruit
audience     individual : mobile_butcher
benefit      steady contract work
outcome      succeeded
beats        7
duration     2h
identity     never logged

The Intention Ledger is public and anonymous. You cannot run a scene without declaring its purpose. The choreography is private. The intent is not.

scene.ts
import { Rodeo } from '@rodeo/sdk'
const rodeo = new Rodeo({ apiKey: '...' })

const scene = rodeo.scene({
  audience:  rodeo.audience({ type: 'individual' }),
  intention: rodeo.intention({
    type: 'recruit',
    benefit: 'steady contract work'
  }),
  arc: { type: 'surround', beats: [
    rodeo.beat({ channel: 'sms',   at: '08:08', ask: 'none' }),
    rodeo.beat({ channel: 'email', at: '08:48', ask: 'soft' }),
    rodeo.beat({ channel: 'phone', at: '08:58', ask: 'direct' }),
  ]}
})

await scene.declare()
await scene.schedule()

Rodeo connects your agent to the channels that already exist in your stack.

PostgreSQL

Shared state between all services. The single source of truth.

Webhook endpoint

Your application receives beat events via HTTP POST.

Twilio

sms, phone

SendGrid

email

Meta Ads

ambient

Slack

direct

Custom API

any channel

Human-in-loop

proxy

Membrane

Rust timing engine. Ships as a single binary or Docker container.

Adaptation

TypeScript. Responds to sensor readings in real time.

Planner

TypeScript. Validates, schedules, and monitors scenes.

AI Researcher

Austin, TX$180k–$260k

Member of Technical Staff

Austin, TX$160k–$240k

Deploy your cinematic universe.