Bus events

July 31, 2026 · View on GitHub

ovos-messagebus is a pure fan-out broker. It does not publish, filter, or transform any messages. It forwards every message from one client to every connected client, verbatim. This page documents the message types that flow through the bus in a standard OVOS deployment.

The bus itself recognizes only one special message type: connected (sent to a new client immediately after it opens a WebSocket connection). Every other message type is an application-level concern of the services that connect to the bus.


connected (bus → new client only)

MessageBusEventHandler.open() sends this message to the newly connected client when the WebSocket handshake completes. The bus does not broadcast it to other clients.

{
  "type": "connected",
  "data": {},
  "context": {"session": {"session_id": "default"}}
}

Message categories (application-level)

The following categories are messages that flow through the bus. The OVOS services listed below publish and consume them. The bus itself does not.

Core / intent pipeline

Message typePublisherConsumers
recognizer_loop:utteranceovos-dinkum-listenerovos-core
recognizer_loop:wakewordovos-dinkum-listenerovos-gui, skills
recognizer_loop:record_beginovos-dinkum-listenerGUI clients
recognizer_loop:record_endovos-dinkum-listenerGUI clients
recognizer_loop:audio_output_startovos-audioGUI clients
recognizer_loop:audio_output_endovos-audioGUI clients
speakovos-core (skills)ovos-audio
complete_intent_failureovos-corefallback skills
ovos.utterance.handledovos-coreGUI clients
ovos.utterance.cancelledovos-coreGUI clients
mycroft.skill.handler.startovos-coreGUI clients
mycroft.skill.handler.completeovos-coreGUI clients

GUI namespace protocol

Message typePublisherConsumers
mycroft.gui.connectedGUI clientsovos-gui
gui.page.showovos-guiGUI clients
mycroft.session.setovos-guiGUI clients
mycroft.session.list.insertovos-guiGUI clients
mycroft.session.list.removeovos-guiGUI clients
mycroft.gui.list.insertovos-guiGUI clients
mycroft.gui.list.moveovos-guiGUI clients
mycroft.gui.list.removeovos-guiGUI clients
mycroft.events.triggeredGUI clientsovos-gui, skills
gui.status.requestGUI clientsovos-gui
mycroft.device.show.idleovos-coreovos-shell, GUI clients
ovos.homescreen.displayedovos-skill-homescreenovos-gui

Homescreen data (raspOVOS / legacy Qt plugin)

Message typePublisherConsumers
homescreen.data.timeHomescreenManager (legacy-plugin)ovos-shell QML
homescreen.data.weatherHomescreenManagerovos-shell QML
homescreen.data.wallpaperHomescreenManagerovos-shell QML
homescreen.data.notificationsHomescreenManagerovos-shell QML
homescreen.data.appsHomescreenManagerovos-shell QML
homescreen.data.examplesHomescreenManagerovos-shell QML
homescreen.data.connectivityHomescreenManagerovos-shell QML
homescreen.widget.timerHomescreenManagerovos-shell QML
homescreen.widget.alarmHomescreenManagerovos-shell QML
homescreen.widget.mediaHomescreenManagerovos-shell QML

Audio / OCP

Message typePublisherConsumers
ovos.common_play.playskillsovos-audio
ovos.common_play.pauseGUI clients, skillsovos-audio
ovos.common_play.track_info.responseovos-audioGUI clients
gui.player.media.service.sync.statusovos-audioHomescreenManager

PHAL / system

Message typePublisherConsumers
mycroft.network.connectedovos-PHAL connectivity pluginHomescreenManager, skills
mycroft.internet.connectedovos-PHAL connectivity pluginskills
enclosure.notify.no_internetovos-PHALskills
system.rebootovos-PHAL-plugin-systemOS signal handler
system.shutdownovos-PHAL-plugin-systemOS signal handler
homescreen.wallpaper.setovos-PHAL-plugin-wallpaper-managerHomescreenManager

Filter / debug mode

When mycroft.conf["websocket"]["filter"] = true, the bus logs each message type and session info before it broadcasts the message:

DEBUG: <msg_type> source: [...] destination: [...]
       SESSION: {...}

The bus excludes message types listed in filter_logs from this log (default: ["gui.status.request", "gui.page.upload"]).

Filter mode does not affect message delivery. The bus still broadcasts every message to every client, including malformed or non-OVOS frames that fail deserialization. It logs deserialization failures at DEBUG level and forwards the raw payload unchanged (MessageBusEventHandler.on_message, event_handler.py:61).


Further reading


← Configuration · Home · Backends & Benchmarks →