Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ovos-pydantic-models

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.

Installation

pip install ovos-pydantic-models

Usage

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"

Message Index

Messages are organized by subsystem:

Audio / TTS

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

Listener / STT

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

Intent Pipeline

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

Skill Manager / Core

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

OCP (Common Play)

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

Common Query

Message type Class
question:query QuestionQueryMessage
question:query.response QuestionQueryResponseMessage

GUI / Homescreen

Message type Class
homescreen.manager.app HomescreenManagerAppMessage

Key Types

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,
)

Module Structure

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

Related Projects

License

Apache 2.0. See LICENSE.


Credits

Developed by TigreGótico for OpenVoiceOS.

NGI0 Commons Fund

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ovos_pydantic_models-0.2.1a1.tar.gz (99.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovos_pydantic_models-0.2.1a1-py3-none-any.whl (126.7 kB view details)

Uploaded Python 3

File details

Details for the file ovos_pydantic_models-0.2.1a1.tar.gz.

File metadata

  • Download URL: ovos_pydantic_models-0.2.1a1.tar.gz
  • Upload date:
  • Size: 99.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ovos_pydantic_models-0.2.1a1.tar.gz
Algorithm Hash digest
SHA256 504f37f8080dfbf6fd6ecd071321993e100d08a1d2fffadd2c5e1ebd5906ab83
MD5 f0338da695c847a1beacc6e2d045d721
BLAKE2b-256 60c329a11570e97d0e3763562b17958f68385f967cad389e8bc56641fd0b740a

See more details on using hashes here.

File details

Details for the file ovos_pydantic_models-0.2.1a1-py3-none-any.whl.

File metadata

File hashes

Hashes for ovos_pydantic_models-0.2.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 ee63102d1c884c856bf4e8376142d54ee00515fcdd09aae11f89537d27bca469
MD5 23efc3a435245c0befa148b523087fc7
BLAKE2b-256 3780c010420ccfa898dec06f2cbe4fc5fc27591c776629238df0d26f2d8d1425

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.1a1 This release

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page