OVOS Plugin Manager (OPM) Documentation
July 31, 2026 · View on GitHub
ovos-plugin-manager (OPM) is the plugin discovery, loading, and configuration framework
for the OpenVoiceOS ecosystem. It defines the base classes (templates) that OVOS plugins
implement, and it has factory methods and utilities to find and load installed plugins at
runtime through Python entry points.
Contents
- Installation Utilities:
pip_install,search_pip - Plugin Types & Entry Points: full
PluginTypesenum andsetup.pyentry point names - Writing a Plugin: step-by-step guide with
setup.pytemplate - Configuration Utilities:
get_plugin_config, language configs, sorting - Transformer Pipelines: the six transformer chains, runner services, config, ordering and deployment surfaces
- Voice Cloning Plugins: the
opm.vcaudio-to-audio voice conversion contract - Agent Plugins: all available ChatEngine, ToolBox, and Persona plugins with entry point registry
- API References
- STT: Speech-to-Text
- TTS: Text-to-Speech
- Wake Word: Hotword / Wake Word detection
- VAD: Voice Activity Detection
- Microphone: Audio input sources
- PHAL: Platform/Hardware Abstraction Layer
- Transformers: Audio, Utterance, Dialog, Metadata, TTS, Intent transformers
- Agents & Solvers: NLP solver and agent engine plugins
- Agent Tools: ToolBox plugin API (
opm.agents.toolbox) - Pipeline: Intent matching pipeline plugins
- Media Provider: OCP catalog/search providers (
opm.media.provider, OVOS-OCP-1) - Language: Translation and language detection plugins
Architecture Overview
ovos-core / ovos-dinkum-listener / ovos-audio
│
└── ovos-plugin-manager
├── find_plugins(PluginTypes.STT) → {name: entrypoint, ...}
├── load_plugin(name, PluginTypes.STT) → Class
└── OVOSSTTFactory.create(config) → STT instance
Plugins are Python packages that register themselves under a well-known entry point group
(for example, opm.stt). OPM calls importlib.metadata.entry_points() to discover
installed plugins without any manual registration.
Quick Start
Find all installed STT plugins
from ovos_plugin_manager.stt import find_stt_plugins
plugins = find_stt_plugins()
# {'ovos-stt-plugin-whisper': <class 'WhisperSTT'>, ...}
Load a plugin class by entry point name
from ovos_plugin_manager.stt import load_stt_plugin
MySTT = load_stt_plugin("ovos-stt-plugin-whisper")
stt = MySTT(config={"lang": "en-US"})
Create a plugin from configuration
from ovos_plugin_manager.stt import OVOSSTTFactory
# reads stt.module from mycroft.conf / ovos.conf
stt = OVOSSTTFactory.create()
Inspect a plugin (installed or not)
from ovos_plugin_manager.plugin_entry import OpenVoiceOSPlugin
p = OpenVoiceOSPlugin.from_name("ovos-stt-plugin-whisper")
print(p.human_name) # "Whisper STT"
print(p.is_installed) # True
print(p.json) # full metadata dict