Developers
Hai Robo · Plugins

Build for a robot
that sits on a desk.

A plugin is a web page. It runs inside the Hai Robo app and can speak through the robot, move its eyes, colour the dock lights, turn its head, and read where your face is. No native code, no build step, no SDK to install.

If you can write a web page, you can write a plugin. The simulator runs the whole thing in your browser with the robot stubbed out.

plugin.js
await hairobo.voice.speak('Good morning');
await hairobo.led.set('#FF8A18');
await hairobo.eyes.look(0, 0.3);

window.hairobo is injected before your code runs. Every call returns a promise, and resolves false instead of throwing when it is declined.

Anatomy

Three files. We host them.

No zip, no bundler, nothing to deploy. You upload the folder and we host it — the app fetches exactly the files you list in the manifest.

manifest.json

Who you are, what you need, and every file to fetch.

index.html

Your entry point. A full modern WebView: canvas, WebGL, audio, touch.

plugin.js

Your code. It talks to the robot through hairobo.*.

Read this first

Two things that catch everyone out.

No internet. At all.

The sandbox blocks every outbound request — connect-src 'none'. No fetch, no CDN, no web fonts, no analytics, no error reporting. Everything ships in your folder: inline your CSS, embed images as data URIs, bundle your own fonts.

It is the most common reason a plugin that worked in a browser does nothing on the device. The simulator does not enforce it — test on hardware.

The sandbox →
It might have no robot.

Permissions can be declined, and there may be no dock connected at all. Every robot call returns false rather than throwing. Write for that: a plugin that only works with a robot attached is a plugin most people see broken.

Check info.get() at startup instead of discovering there is no dock by being refused.

Permissions →
Impossible to miss

Try it on your own robot.

The simulator gets you most of the way. The real sandbox, the real permission prompt, the real motors only happen on a device. Upload your folder and your draft appears in the app's gallery, for you alone, ready to run.

The only difference from a published plugin is that nobody has reviewed it yet.

  1. 1
    Upload your folder. It's stored as a private draft. Re-upload as often as you like — a draft costs no version number.
  2. 2
    Open Hai Robo, same account. Your draft is under Settings → Plugins → Gallery, marked DRAFT and visible only to you.
  3. 3
    Tap Try it. It runs on your real robot. When it's right, submit for review — a separate step that freezes the version.

Built something?

Upload your folder. We host it, run the automated checks in seconds, and store it as a private draft. Try it on your robot, then submit for review when it's ready — a person reviews it before the gallery.

Preorder Deskmate dock

Reserve your dock.

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