Developers
Download

The kit. That is the whole download.

One folder with everything: five working examples, the complete hairobo surface, the docs, and the mock that enforces every device limit. Build by hand or hand the folder to a coding agent. It is written to be read by either. There is nothing to install and no build step.

Download the kit hairobo-plugin-kit.zip · 33 files · 65 KB

What is inside

hairobo-plugin-kit/
  README.md          start here: the five rules that are not obvious
  SDK-OVERVIEW.md    the tour, if you want it
  CONTENT-POLICY.md  what gets rejected at review
  docs/              api.md  character.md  commands.md  limits.md  manifest.md  permissions.md  publishing.md
  reference/         hairobo-sdk.js  simulator-mock.js
  examples/          starter  hello  breathe  follow-me  roll-call  character  cab

The docs are markdown, not this site's HTML, because that is what a model reads best. reference/ is for reading only: the app and the simulator both provide hairobo, so nothing in there is ever shipped inside a plugin.

Two ways to use it

With a coding agent

Unzip it, hand the whole folder to Claude or Codex, and say what you want built. README.md is the brief it reads first, and it leads with what a model gets wrong unprompted: that there is no network at all, that a file missing from the manifest installs blank, and that the simulator will not catch it.

By hand

Copy examples/starter/ and edit it. Read docs/limits.md before you build (the no-network rule is the one that trips people up), then keep docs/api.md open beside you.

Either way: drop the folder on the simulator to run it, try it on a real robot, then upload it.

The examples, in the kit

starter

The smallest thing that runs. Copy this one and start editing.

voice

examples/starter/: index.html · manifest.json · plugin.js

hello

A runtime smoke test: speech and the dock ring.

voiceled

examples/hello/: index.html · manifest.json · plugin.js

breathe

A guided breathing session. The ring swells as you inhale.

voiceled

examples/breathe/: index.html · breathe.js · manifest.json

follow-me

Eyes that watch you and a head that turns to keep up.

cameramotor

examples/follow-me/: index.html · follow.js · manifest.json

roll-call

Multi-face and storage: a party game for a room of people. Counts everyone, picks one at random, turns to that seat and asks a question.

cameramotorvoice

examples/roll-call/: index.html · manifest.json · rollcall.js

character

A face for the robot, not a screen inside it. Pip draws every state the built-in eyes draw, and asks for nothing at all.

character no permissions

examples/character/: index.html · character.js · manifest.json

cab

Owns a spoken phrase. Say "heading to the office" and the cab app opens with the office already set.

owns a phrase openvoice

The open permission is narrower than it sounds: the plugin asks the app to open a cab, and never sees the address or where you are.

examples/cab/: index.html · cab.js · manifest.json

They do not share a shape, and they are not meant to: the script is called plugin.js in two of them and something else in the others. Only manifest.json and whatever you set as entry are fixed names. Every file you add has to go in the manifest's files array, or it is simply absent on the robot.

New to the API? Read the overview, then the sandbox. Both are in the kit too.

Preorder Deskmate dock

Reserve your dock.

Drop your details and we'll email you the moment it ships, with early-bird pricing.