← Back to blog
February 28, 2026Flout Labs

Why a $50 robot can earn trust

Social behaviour in robots has always been a design problem. Engineers write personality scripts, define state machines, tune parameters by hand. The robot feels like a character from a theme park: reliably warm, obviously fake.

We asked a different question: what if trust could be earned mathematically?

The $50 constraint

We ran our first real-world trial on an mBot2 — a $50 educational robot. It has Bluetooth, six sensor inputs, a pair of motors, and an LED matrix. No GPU. No cloud. 128 KB of RAM.

The constraint was intentional. If CCF only worked on expensive hardware, it wouldn't matter. We needed it to run no_std on embedded targets.

What actually happened

After connecting the mBot2 to a companion app running ccf-core, we ran it through real home interactions over several days — different people, different rooms, different times of day.

The results were measurable:

  • With familiar family members: coherence accumulated. After ~10 interactions in the kitchen context, the robot shifted to QuietlyBeloved — softer servo speeds, warmer LED, shorter reaction latency.
  • With strangers: the gate stayed closed. Even enthusiastic interaction didn't bypass the long-run accumulator. The robot stayed in ShyObserver.
  • Context specificity: coherence built in the kitchen didn't fully transfer to the hallway. The min-cut boundary partitioned the two environments, and cross-context influence was bounded by the cut weight.

None of this was programmed. It emerged from three primitives applied to six sensor readings.

The math in one paragraph

CCF maintains a CoherenceAccumulator per context key. Each accumulator tracks two exponential moving averages: a fast short-run EMA (instantaneous coherence) and a slow long-run EMA (context coherence). The minimum gate requires both to exceed personality thresholds simultaneously — so a single warm encounter can't unlock full engagement. A Stoer–Wagner min-cut then partitions the context graph, bounding how much trust in one environment influences another.

Why this matters

The $50 constraint proves the argument works on the most constrained hardware. If it runs on an mBot2, it runs on everything. And because it's pure no_std Rust, it compiles to wasm32-wasip1 for appliance tiles and thumbv7em-none-eabihf for embedded chips.

The shy robot isn't a personality — it's a starting condition. Trust has to be earned. Every agent starts as a ShyObserver. The math decides when that changes.


CCF is available as a Rust crate on crates.io. Source on GitHub.