💍Haptic Harmony

Documentation

Guide: Gesture & Haptic Events

Subscribe to ring events and route them into your app or agent tooling.

Subscribe

ring.addEventListener("tap", () => console.log("tap"));
ring.addEventListener("doubletap", () => runCommand());
ring.addEventListener("gesture", (e) =>
  console.log(e.detail.type, "→", e.detail.action));

Event Reference

  • tap, doubletap — PAD taps
  • holdstart / holdend — sustained press, on the PAD area
  • swipeleft / swiperight — directional slide on the top PAD arch
  • rotatecw / rotateccw — tilt rotation
  • gesture — fires alongside the specific event above, with a mapped action in e.detail
  • sensorframe — raw IMU samples (opt-in, bonded-gated on the device side)
  • battery — battery level updates
  • ack — acknowledgement for a sent haptic or waveform command

Raw Sensor Stream

await ring.enableSensorStream(true);
ring.addEventListener("sensorframe", (e) => {
  for (const s of e.detail.samples) applyImu(s.ax_mg, s.ay_mg, s.az_mg, s.gx_ddps);
});

Route Events to Tools

For MCP integrations, forward specific gestures to tool calls rather than subscribing your agent directly to the raw event stream — it keeps the mapping between "what the user did" and "what the agent should do" explicit and testable.

Recover

Config uses clobber-free read-modify-write (readable-then-compare) — safe to retry a failed sendHapticor sendWaveform call without risking a corrupted device state.

FAQ

Can I replay events? The SDK doesn't buffer past events — log what you need on your own side if you want replay/audit capability.

© 2026 Gestura AI LLC. All rights reserved.