Typed Pydantic v2 models for every message that flows over the OVOS MessageBus.
This package is the authoritative, machine-readable specification of the OVOS MessageBus protocol. Each message type is represented as a Pydantic model with validated fields, making it suitable for type-checking, serialization, documentation generation, and integration testing.
pip install ovos-pydantic-models
from ovos_pydantic_models import SpeakMessage, SpeakData
# Create a typed message
msg = SpeakMessage(data=SpeakData(utterance="Hello, world!", lang="en-us"))
print(msg.message_type) # "speak"
print(msg.model_dump()) # {"message_type": "speak", "data": {...}, "context": {...}}
# Roundtrip from dict (e.g. received over the bus)
raw = {"message_type": "speak", "data": {"utterance": "Hello"}, "context": {}}
restored = SpeakMessage.model_validate(raw)
print(restored.data.utterance) # "Hello"
from ovos_pydantic_models import RecognizerLoopUtteranceMessage, RecognizerLoopUtteranceData
msg = RecognizerLoopUtteranceMessage(
data=RecognizerLoopUtteranceData(utterances=["play some jazz"], lang="en-us")
)
print(msg.message_type) # "recognizer_loop:utterance"
Messages are organized by subsystem:
| Message type | Class |
|---|
speak | SpeakMessage |
mycroft.audio.service.play | AudioServicePlayMessage |
mycroft.audio.service.pause | AudioServicePauseMessage |
mycroft.audio.service.resume | AudioServiceResumeMessage |
| Message type | Class |
|---|
mycroft.audio.service.stop | AudioServiceStopMessage |
mycroft.audio.queue | MycroftAudioQueueMessage |
ovos.languages.tts | OvosLanguagesTtsMessage |
ovos.languages.tts.response | OvosLanguagesTtsResponseMessage |
| Message type | Class |
|---|
recognizer_loop:utterance | RecognizerLoopUtteranceMessage |
recognizer_loop:wakeword | RecognizerLoopWakeWordMessage |
recognizer_loop:state.set | RecognizerLoopStateSetMessage |
recognizer_loop:state.get | RecognizerLoopStateGetMessage |
| Message type | Class |
|---|
recognizer_loop:state.get.response | RecognizerLoopStateResponseMessage |
mycroft.mic.mute | MycroftMicMuteMessage |
mycroft.mic.listen | MycroftMicListenMessage |
ovos.languages.stt | OvosLanguagesSttMessage |
| Message type | Class |
|---|
ovos.languages.stt.response | OvosLanguagesSttResponseMessage |
opm.ww.query | OpmWwQueryMessage |
| Message type | Class |
|---|
ovos.utterance.handled | OvosUtteranceHandledMessage |
ovos.utterance.cancelled | OvosUtteranceCancelledMessage |
complete_intent_failure | CompleteIntentFailureMessage |
add_context | AddContextMessage |
| Message type | Class |
|---|
remove_context | RemoveContextMessage |
clear_context | ClearContextMessage |
intent.service.skills.activate | IntentServiceSkillsActivateMessage |
intent.service.skills.deactivate | IntentServiceSkillsDeactivateMessage |
| Message type | Class |
|---|
skill.converse.pong | SkillConversePongMessage |
skill.converse.response | SkillConverseResponseMessage |
ovos.skills.fallback.register | OvosSkillsFallbackRegisterMessage |
ovos.skills.fallback.ping | OvosSkillsFallbackPingMessage |
| Message type | Class |
|---|
ovos.skills.fallback.pong | OvosSkillsFallbackPongMessage |
stop:global | StopGlobalMessage |
stop:skill | StopSkillMessage |
mycroft.stop | MycroftStopMessage |
| Message type | Class |
|---|
mycroft.skills.abort_question | MycroftSkillsAbortQuestionMessage |
mycroft.skills.abort_execution | MycroftSkillsAbortExecutionMessage |
| Message type | Class |
|---|
mycroft.ready | MycroftReadyMessage |
mycroft.skills.ready | MycroftSkillsReadyMessage |
mycroft.skills.is_ready | MycroftSkillsIsReadyMessage |
mycroft.skills.is_ready.response | MycroftSkillsIsReadyResponseMessage |
| Message type | Class |
|---|
mycroft.skills.list | MycroftSkillsListMessage |
skillmanager.list | SkillManagerListMessage |
skillmanager.deactivate | SkillManagerDeactivateMessage |
mycroft.skills.error | MycroftSkillsErrorMessage |
| Message type | Class |
|---|
skill.settings.change | SkillSettingsChangeMessage |
ovos.skills.settings_changed | OvosSkillsSettingsChangedMessage |
ovos.skills.install | OvosSkillsInstallMessage |
ovos.skills.install.failed | OvosSkillsInstallFailedMessage |
| Message type | Class |
|---|
ovos.pip.install | OvosPipInstallMessage |
ovos.session.sync | OvosSessionSyncMessage |
ovos.session.update_default | OvosSessionUpdateDefaultMessage |
| Message type | Class |
|---|
ovos.common_play.query | OvosCommonPlayQueryMessage |
ovos.common_play.query.response | OvosCommonPlayQueryResponseMessage |
ovos.common_play.announce | OvosCommonPlayAnnounceMessage |
ovos.common_play.player.state | OvosCommonPlayPlayerStateMessage |
| Message type | Class |
|---|
ovos.common_play.skills.detach | OvosCommonPlaySkillsDetachMessage |
ovos.common_play.register_keyword | OvosCommonPlayRegisterKeywordMessage |
ovos.common_play.skill.play | OvosCommonPlaySkillPlayMessage |
| Message type | Class |
|---|
question:query | QuestionQueryMessage |
question:query.response | QuestionQueryResponseMessage |
| Message type | Class |
|---|
homescreen.manager.app | HomescreenManagerAppMessage |
from ovos_pydantic_models import (
# Base
OpenVoiceOSMessage, MessageContext, Session,
# Enums
UtteranceState, ListeningState,
MediaType, PlaybackType, PlayerState, MediaState, MatchConfidence,
OcpMediaState, # IntEnum 0-8 (Qt QMediaPlayer states)
FallbackMode, ConverseMode, CQSMatchLevel,
# Data models
MediaEntry, Playlist, PluginStream,
)
ovos_pydantic_models/
message.py # OpenVoiceOSMessage base, MessageContext
session.py # Session, UtteranceState, IntentContextManager
audio/
playback.py # Speak, AudioService messages
ocp.py # OcpMediaState (Qt IntEnum)
opm.py # OPM TTS query/response messages
listener/
recognizer_loop.py
opm.py # OPM STT/WW query messages
intents/
core.py # context, utterance handled, intent get
converse.py # converse protocol (canonical)
fallbacks.py # fallback protocol (canonical)
stop.py # stop messages
skills/
ocp.py # OCP enums, MediaEntry, query messages
game.py # game skill messages
common_query.py # question:query protocol
converse.py # re-exports from intents/converse.py
fallback.py # re-exports from intents/fallbacks.py
core/
skill_manager.py # skill lifecycle messages
skill_settings.py
skill_installer.py
session.py # session sync messages
gui/
homescreen.py
phal/
connectivity.py
volume.py
Apache 2.0. See LICENSE.
Developed by TigreGótico for
OpenVoiceOS.

This project was funded through the NGI0 Commons Fund,
a fund established by NLnet with financial support from the
European Commission's Next Generation Internet programme, under
the aegis of DG Communications Networks, Content and Technology
under grant agreement No 101135429.