OVOS-Persona
September 16, 2026 · View on GitHub
PersonaPipeline adds multi-persona management to OpenVoiceOS (OVOS). Personas are configurable virtual assistants: each one assigns its own set of solver plugins to answer queries, so you can customize how OVOS handles a conversation.
See docs/index.md for the architecture and API reference.
Quick Start
- Update the core and install the plugin:
pip install -U "ovos-core>=0.5.1" ovos-persona - Install or update the plugins and skills a persona needs:
pip install -U skill-wolfie ovos-skill-wikipedia ovos-skill-wikihow skill-wordnet ovos-openai-plugin - Uninstall the ChatGPT fallback skill, since
ovos-personareplaces it:pip uninstall skill-ovos-fallback-chatgpt - Edit
mycroft.conf. The"..."below is a placeholder for your existing pipeline entries, not literal text.{ "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" ] } } - Restart OVOS.
- Check the logs to confirm the persona loaded without errors:
cat ~/.local/state/mycroft/skills.log | grep persona - Read the Persona Intents section for the voice commands.
Features
- Multiple personas: manage a list of personas, each with its own solver plugins.
- Dynamic switching: activate a different persona at any time.
- Per-session state: the active persona and conversation memory are tracked per session, so concurrent conversations stay isolated.
- Short-term memory: a default short-term memory ships with
ovos-personaand is always available. Swap it for anyopm.agents.memoryplugin through thememory_moduleconfig key. See docs/memory.md. - Conversational: personas can handle utterances directly, without a matching skill.
- Personalize: create a persona with a simple
.jsonfile. See docs/defining-personas.md.
Installation
pip install ovos-persona
Persona Intents
The persona service supports voice intents for managing persona interactions: listing personas, checking the active persona, activating a persona, asking a persona a single question, and stopping the conversation. Each intent corresponds to a messagebus event.
See the OVOS technical manual: Persona Pipeline for the full list of example utterances and bus events.
Pipeline Configuration
Where you place "ovos-persona-pipeline-plugin-high" in the pipeline decides whether the active persona gets full control of an utterance, or only handles it after high-confidence skills fail to match. "ovos-persona-pipeline-plugin-low" handles utterances as a fallback even when no persona is explicitly active, replacing OpenVoiceOS/ovos-skill-fallback-chatgpt.
See the OVOS technical manual: Persona Pipeline for the pipeline configuration strategies and example mycroft.conf snippets.
Creating a Persona
Personas are configured with JSON files. A persona can come from:
- a plugin (for example, the OpenVoiceOS/ovos-openai-plugin), or
- a user-defined JSON file in
~/.config/ovos_persona.
Personas rely on solver plugins, which try to answer a query in sequence until one succeeds.
Example: a persona using a local OpenAI-compatible server. Save this as ~/.config/ovos_persona/llm.json:
{
"name": "My Local LLM",
"handlers": [
"ovos-solver-openai-plugin"
],
"ovos-solver-openai-plugin": {
"api_url": "https://llama.smartgic.io/v1",
"key": "sk-xxxx",
"system_prompt": "helpful, creative, clever, and very friendly."
}
}
A persona does not need an LLM. Simpler solvers work too, even without a GPU.
Example: OldSchoolBot, a persona built from non-LLM solvers.
{
"name": "OldSchoolBot",
"handlers": [
"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-xxxxxx"}
}
Behavior:
- Searches online sources such as Wikipedia and Wolfram Alpha.
- Falls back to offline word lookups through WordNet.
- Uses a local chatbot (RiveScript) for chitchat.
- The "failure" solver catches errors so the persona always returns a response.
HiveMind Integration
This project includes a native hivemind-plugin-manager integration for interoperability with the HiveMind ecosystem.
- Agent protocol: hivemind-persona-agent-plugin lets HiveMind satellites connect directly to a persona. See docs/hivemind.md.
Related Projects
- OpenVoiceOS/ovos-persona-server — standalone server for persona-based conversations.
- TigreGotico/ovos-persona-marketplace — a marketplace for sharing persona configurations.
- JarbasHiveMind/hivemind-persona-agent-plugin — HiveMind agent protocol plugin for
ovos-persona. - OpenVoiceOS/ovos-openai-plugin — OpenAI-compatible solver plugin.
Contributing
Found a bug or have an idea? Open an issue or submit a pull request.
Credits
Developed by TigreGótico for OpenVoiceOS.
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.
