AI Agents in OpenVoiceOS
OpenVoiceOS (OVOS) introduces a flexible and modular system for integrating AI agents into voice-first environments. This is made possible through a layered architecture built around solvers, personas, and persona routing components. This section explains how these parts work together to enable intelligent conversations with customizable behavior.
Solver Plugins (Low-Level AI)
At the core of the AI agent system are solver plugins. These are simple black-box components responsible for handling a single task: receiving a text input (typically a question) and returning a text output (typically an answer).
Key Features:
- Input/Output: Plain text in, plain text out.
- Functionality: Usually question-answering, though more specialized solvers exist (e.g., summarization, multiple choice).
- Language Adaptation: Solvers are automatically wrapped with a translation layer if they don't support the user's language. For instance, the Wolfram Alpha solver is English-only but can work with Portuguese through automatic bidirectional translation.
- Fallback Behavior: If a solver cannot produce a result (returns
None
), higher-level systems will attempt fallback options.
Personas (Agent Definition Layer)
A persona represents a higher-level abstraction over solver plugins. It behaves like an AI agent with a defined personality and behavior, built by combining one or more solvers in a specific order
Key Features:
- Composition: Each persona consists of a name, a list of solver plugins, and optional configuration for each.
- Chained Execution: When a user question is received, the persona tries solvers one by one. If the first solver fails (returns
None
), the next one is tried until a response is generated. - Customizable Behavior: Different personas can emulate different personalities or knowledge domains by varying their solver stack.
{
"name": "OldSchoolBot",
"solvers": [
"ovos-solver-wikipedia-plugin",
"ovos-solver-ddg-plugin",
"ovos-solver-plugin-wolfram-alpha",
"ovos-solver-wordnet-plugin",
"ovos-solver-rivescript-plugin",
"ovos-solver-failure-plugin"
],
"ovos-solver-plugin-wolfram-alpha": {"appid": "Y7353-XXX"}
}
💡 personas don't need to use LLMs, you don't need a beefy GPU to use ovos-persona, any solver plugin can be used to define a persona
Persona Pipeline (Runtime Routing in OVOS-Core)
Within ovos-core
, the persona-pipeline plugin handles all runtime logic for managing user interaction with AI agents.
Key Features:
- Persona Registry: Supports multiple personas, defined by the user or discovered via installed plugins.
- Session Control: The user can say
"I want to talk with {persona_name}"
to route their dialog to a specific persona. - Session End: The user can disable the current persona at any time to return to normal assistant behavior.
- Fallback Handling: If OpenVoiceOS can't answer, the system can ask the default persona instead of speaking an error.
- Extensible: Potential for future enhancements via messagebus to adjust system behavior based on persona (e.g., dynamic prompt rewriting).
in your mycroft.conf
{
"intents": {
"persona": {
"handle_fallback": true,
"default_persona": "Remote Llama"
},
"pipeline": [
"stop_high",
"converse",
"ocp_high",
"padatious_high",
"adapt_high",
"ovos-persona-pipeline-plugin-high",
"ocp_medium",
"...",
"fallback_medium",
"ovos-persona-pipeline-plugin-low",
"fallback_low"
]
}
}
OVOS as a Solver Plugin
An advanced trick: ovos-core
itself can act as a solver plugin. This allows you to expose OVOS itself as an agent to other applications in localhost
- 🐳 Good for chaining OVOS instances in docker.
- 🦾 Use skills in a collaborative AI / MoS (mixture-of-solvers) setup.
- ❌
ovos-bus-solver-plugin
makes no sense inside a local persona (infinite loop!), but is great for standalone usage. - 🌐 Expose OVOS behind HTTP api via
ovos-persona-server
without exposing the messagebus directly
{
"name": "Open Voice OS",
"solvers": [
"ovos-solver-bus-plugin",
"ovos-solver-failure-plugin"
],
"ovos-solver-bus-plugin": {
"autoconnect": true,
"host": "127.0.0.1",
"port": 8181
}
}
💡 if you are looking to access OVOS remotely or expose it as a service see hivemind agents documentation for a more secure alternative
Summary Table
Component | Role |
---|---|
Solver Plugin | Stateless text-to-text inference (e.g., Q&A, summarization). |
Persona | Named agent composed of ordered solver plugins. |
Persona Server | Expose personas to other Ollama/OpenAI compatible projects. |
Persona Pipeline | Handles persona activation and routing inside OVOS core. |
By decoupling solvers, personas, and persona management, OVOS allows for powerful, customizable AI experiences, adaptable to both voice and text interactions across platforms.