Skip to main content
Pre-release

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

HiveMind OVOS Agent Plugin

This plugin connects HiveMind-core to an OpenVoiceOS message bus.

HiveMind clients connect to a hivemind-core node. This plugin forwards their Mycroft Message payloads to a local OVOS bus, and it routes OVOS responses back to the client that sent the original message.

Installation

pip install hivemind-ovos-agent-plugin

Or install it from source:

git clone https://github.com/JarbasHiveMind/hivemind-ovos-agent-plugin
cd hivemind-ovos-agent-plugin
pip install -e .

Usage

The plugin registers itself as a HiveMind agent protocol through the hivemind.agent.protocol entry point group, under the name hivemind-ovos-agent-plugin.

Add it to your hivemind-core configuration (~/.config/hivemind-core/server.json):

{
  "agent_protocol": {
    "module": "hivemind-ovos-agent-plugin",
    "hivemind-ovos-agent-plugin": {
      "host": "127.0.0.1",
      "port": 8181
    }
  }
}

hivemind-core discovers the plugin through its entry point and creates the OVOSAgentProtocol class with the config you supply. The plugin then connects to the OVOS message bus at the given host and port. The default host and port are 127.0.0.1:8181.

This configuration is also the default. If hivemind-core runs on the same host as OVOS, you do not need to change the config. hivemind-core ships with hivemind-ovos-agent-plugin pre-selected. It falls back to the websocket section of the global OVOS mycroft.conf for the bus address.

Direct programmatic use

from hivemind_ovos_agent_plugin import OVOSAgentProtocol

agent = OVOSAgentProtocol(config={"host": "127.0.0.1", "port": 8181})
# pass `agent` to your HiveMindListenerProtocol

How it works

The plugin owns two callbacks on the OVOS bus:

  • hive.send.downstream: OVOS components emit this message to push a HiveMessage to a connected HiveMind client. The plugin wraps the payload in a HiveMessage and sends it to the right peer, or fans it out for PROPAGATE and BROADCAST types.
  • message (catch-all): the plugin inspects every internal OVOS bus message. If its context["destination"] lists a connected HiveMind peer, the plugin forwards the message back to that peer, wrapped as a HiveMessageType.BUS message. This is where the plugin enforces client isolation: a client never sees responses meant for another client.

Upstream traffic (client to OVOS bus) is handled by hivemind-core itself. This plugin only handles the downstream half.

Policy plugin

This package also registers as a hivemind.policy provider under the name hivemind-ovos-agent-policy. hivemind-core runs the policy chain before it forwards any inbound client message. The built-in OVOSAgentPolicy reads the per-client skill_blacklist and intent_blacklist from the credential store, and it injects them into message.context["session"] as AddBlacklistedSkill and AddBlacklistedIntent mutations.

Five concrete Mutation subclasses are available for custom policy plugins:

Class Purpose
AddBlacklistedSkill Append to session["blacklisted_skills"]
AddBlacklistedIntent Append to session["blacklisted_intents"]
SetSessionField Set any key in message.context["session"]
SetContextField Set a nested path in message.context
RewriteUtterance Replace utterance text in recognizer_loop:utterance messages

You can import all these types directly from hivemind_ovos_agent_plugin. See docs/policy.md for full details.

Related projects

  • HiveMind-core: the server this plugin connects to.
  • OpenVoiceOS: the OVOS bus and skill ecosystem this plugin bridges to.

Documentation

Full developer documentation lives in docs/:

License

Apache 2.0. See LICENSE.md.

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

hivemind_ovos_agent_plugin-0.3.8a2.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

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

hivemind_ovos_agent_plugin-0.3.8a2-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file hivemind_ovos_agent_plugin-0.3.8a2.tar.gz.

File metadata

File hashes

Hashes for hivemind_ovos_agent_plugin-0.3.8a2.tar.gz
Algorithm Hash digest
SHA256 5b17616d435a7e9380e4c20f9c8ccc9bceb59293f4b9971b2f7c33687596921c
MD5 0558e01f066d176412e2c145e9be726d
BLAKE2b-256 c4ddd547a9046edaf6dbd391e08148d5a5a46feb31db1511051f14ee27490dc1

See more details on using hashes here.

File details

Details for the file hivemind_ovos_agent_plugin-0.3.8a2-py3-none-any.whl.

File metadata

File hashes

Hashes for hivemind_ovos_agent_plugin-0.3.8a2-py3-none-any.whl
Algorithm Hash digest
SHA256 de95fad905a746b9bcc097d913c0454c7e8247963a23f36c8a2f1d8cb3c5b202
MD5 fdd1f78b0e7aa3c7f81370e28a84a8ca
BLAKE2b-256 f21c61886f64c9aa21b920894523aa357faebe8a55e0f9746336260542ef3ff8

See more details on using hashes here.

Supported by

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