Files
JiboOs/V3.1/build/hub-shim

jibo-hub-shim

Minimal Jibo Hub-compatible shim for /v1/listen.

What it does

  • Hosts a WebSocket server on /v1/listen.
  • Waits for CONTEXT + LISTEN messages.
  • Triggers offline STT by calling jibo-asr-service using:
    • WebSocket /simple_port (event stream)
    • HTTP POST /asr_simple_interface (start/stop) and returns:
    • SOS (start of speech)
    • ASR (text)
    • NLU (minimal intent/entities)
    • LISTEN (final wrapper with {asr,nlu})
    • EOS (end of speech)

This avoids implementing hub-side audio decoding.

Configure

Copy the example config:

  • cp config.example.json config.json

Key fields:

  • asrService.baseUrl
    • If shim runs on the server: set this to your robot IP, e.g. http://192.168.1.50:8088
    • If shim runs on the robot: keep http://127.0.0.1:8088
  • asrService.audioSourceId
    • Usually alsa1 on-robot. If your robot uses a different input, change it here.
  • listen.port: hub shim port (default 9000)

Dependencies

  • Server-hosted shim: needs Node.js + the ws module available via normal Node resolution.
    • If you have npm: npm i ws
  • Robot-hosted shim: does not require npm; it will fall back to the already-bundled ws at /opt/jibo/Jibo/Skills/@be/be/node_modules/ws.

Run

  • node index.js ./config.json

Server deployment (systemd)

From the hub-shim/ folder on your server:

  • sudo ./install-server.sh

This installs:

  • Code to /opt/jibo-hub-shim
  • Config to /etc/jibo-hub-shim/config.json
  • Service unit jibo-hub-shim.service

Useful commands:

  • sudo systemctl status jibo-hub-shim
  • sudo journalctl -u jibo-hub-shim -f

Notes

  • The shim serializes STT requests to the robot ASR service to reduce crosstalk/timeouts when Jetstream opens multiple listens quickly.
  • If you regularly speak longer than 15s, increase asrService.timeoutMs.

Jetstream config

Point Jetstreams HubClient to this shim by setting HubClient.override in /usr/local/etc/jibo-jetstream-service.json:

  • If shim runs on the server: set hub_hostname to the server IP.
  • If shim runs on the robot: set hub_hostname to 127.0.0.1.