Skip to content

Migrating Wake-word Plugins to the Split HotWordEngine Contract

In a nutshell

Wake-word plugin maintainers are affected. ovos-plugin-manager split the old single-call found_wake_word(audio_data) contract into a separate update(chunk) feed step and a zero-argument poll. Fix it by implementing both methods on the new contract.

Wake-word plugin found_wake_word() signature change

The split pulled apart what had been a single call into two steps: audio is fed to the plugin separately now, and detection is polled with no arguments at all. A wake-word plugin written for the one-argument form still loads and still gets called after the caller-side change lands in a listener service, but the call itself throws, since found_wake_word() now runs with zero arguments where it used to expect the audio chunk.

The HotWordEngine contract changed in ovos-plugin-manager 1.0.0 (ce1c97b, #314): audio is fed separately, then detection is polled with no arguments. Plugins only started breaking when the listener services adopted the caller side on the opm 2.0.0 bump, which is why their commits cite opm 2.0.

# old (pre-split, opm < 1.0.0)
class MyWakeWordPlugin(HotWordEngine):
    def found_wake_word(self, audio_data) -> bool:
        ...

# new (opm 1.0.0+)
class MyWakeWordPlugin(HotWordEngine):
    def update(self, chunk: bytes) -> None:
        ...  # feed audio incrementally
    def found_wake_word(self) -> bool:
        ...  # poll with no arguments

Both listener services in the org landed the caller-side half of this change on the same underlying opm bump: mycroft-classic-listener 19d9961 (#12, 2026-01-09) and ovos-simple-listener 34e2219 (#20, 2026-01-23, commit message: "opm 2.0.0 introduced breaking change"). If your wake-word plugin still implements the one-argument form, it will be called with zero arguments and raise a TypeError on any listener service updated past these commits.

Lifecycle:

Change Active Deprecated but functional Dropped
found_wake_word(audio_data) one-arg form before opm 2.0.0 unverified opm 2.0.0 · caller-side landed in 19d9961 / 34e2219

Read next: Updating From Older OVOS Related: For Plugin Maintainers · Version-Compatible Skills & Plugins