Skip to content

Cool Things You Can Do

In a nutshell

OVOS is a voice-first assistant. You can point it at other people's brains, other people's voices, and your own code. This page is a tour of fun, slightly silly things you can build or turn on today. Each one is a real skill or feature that already ships with OVOS, with a link to go deeper. You need no hardware skills to start. The last example combines several pieces for a Halloween-prop style build.


Make it tell jokes

The Dad Jokes skill (ovos-skill-icanhazdadjokes) answers "tell me a joke", "do you know any Chuck Norris jokes?", or "tell me a joke about dentists" with a fresh pun every time. Install it with pip install ovos-skill-icanhazdadjokes, then:

How to restart your assistant

OVOS is not one program — it's several separate services (the listener, ovos-core, ovos-audio, the messagebus, and more) that need to pick up a config change together. How you restart them depends on how OVOS was installed:

  • systemd install (the ovos-installer or a RaspOVOS image): restart the whole stack with one command —
    systemctl --user restart ovos.service
    
    ovos.service is a --user target unit that the other services (ovos-messagebus.service, ovos-listener.service, ovos-audio.service, ovos-core.service, ovos-phal.service, and — if installed — ovos-gui.service) declare as PartOf=, so restarting it cascades to all of them. Restarting a single service instead (e.g. only the listener after a wake-word change) works the same way: systemctl --user restart ovos-listener.service.
  • Docker/container install: restart the equivalent service(s) in your compose file, e.g.
    docker compose restart <service-name>
    
    (or docker compose restart with no name to restart everything).
  • Manual/development run: stop the running ovos-core process (Ctrl-C) and start it again.

Turn it into a parrot

The Parrot skill (ovos-skill-parrot) makes OVOS repeat whatever you say back to you. "Repeat Once upon a midnight dreary…" or "say Goodnight, Gracie" gets echoed verbatim. Install it with one command (pip install ovos-skill-parrot). It's a fun way to show that speech really is captured and understood, not faked.

Give it a personality in three steps

Beyond built-in skills, OVOS can hand off anything it doesn't understand to a large language model, answering ChatGPT-style. The Personas page has the full three-step recipe:

  1. Install a chat backend: a cloud OpenAI-compatible model or a fully local GGUF model.
  2. Create a small persona JSON file describing who it is.
  3. Turn on the persona pipeline so unanswered questions reach it.

Give the persona a name and a system prompt ("You are a grumpy pirate who answers every question in character"). Every fallback question then gets answered in that voice. This is a cheap way to build a themed assistant for a party or a kid's room.

Change its voice

Swapping which TTS plugin OVOS uses changes what it sounds like. Some plugins also expose several distinct voices through their own voice config key. For example, ovos-tts-plugin-phoonnx picks a specific model and speaker with "voice": "OpenVoiceOS/matxa-cat-multiaccent-wavenext" plus a speaker_id (each Catalan dialect is a different speaker of that one model), and ovos-tts-plugin-edge-tts offers dozens of cloud voices across many languages and accents. Set the plugin (and, where supported, its voice) under the tts section of mycroft.conf and restart to hear the change:

How to restart your assistant

OVOS is not one program — it's several separate services (the listener, ovos-core, ovos-audio, the messagebus, and more) that need to pick up a config change together. How you restart them depends on how OVOS was installed:

  • systemd install (the ovos-installer or a RaspOVOS image): restart the whole stack with one command —
    systemctl --user restart ovos.service
    
    ovos.service is a --user target unit that the other services (ovos-messagebus.service, ovos-listener.service, ovos-audio.service, ovos-core.service, ovos-phal.service, and — if installed — ovos-gui.service) declare as PartOf=, so restarting it cascades to all of them. Restarting a single service instead (e.g. only the listener after a wake-word change) works the same way: systemctl --user restart ovos-listener.service.
  • Docker/container install: restart the equivalent service(s) in your compose file, e.g.
    docker compose restart <service-name>
    
    (or docker compose restart with no name to restart everything).
  • Manual/development run: stop the running ovos-core process (Ctrl-C) and start it again.

Change how it sounds

Most spoken replies are flat, one-tone sentences, but they don't have to be. The reliable way to change how OVOS sounds is to pick a different TTS plugin or voice, as in the section above. An eerie voice, a different accent, or a faster or slower speaker all exist as plugin/voice choices, and they work the same on every install. SSML markup (pauses, emphasis, a slower rate for one sentence) exists too. It is an experimental, engine-dependent feature that most TTS plugins ignore. Treat it as a niche option for the few engines that support it, not the primary way to change a voice's character.

Combine it all: a Halloween prop

None of the above needs to be used alone. A classic seasonal build, a talking jack-o'-lantern or skeleton that reacts to trick-or-treaters, is really just three ordinary OVOS pieces stacked together:

  1. A scheduled greeting. Use self.schedule_event(...) (see Scheduled events with restart persistence for the pattern) to have the prop speak on its own every so often, unprompted. For example, "Who dares approach?" every few minutes while it's active.
  2. A spooky voice. Pick an eerie-sounding TTS voice so the scheduled lines and any replies sound in character.
  3. A parrot-style reply for trick-or-treaters. Reuse the same idea as the Parrot skill. Echo back whatever the kids say, in the spooky voice, for an instant "it's alive!" reaction. Or use converse to hold a short back-and-forth instead of a single line.

Nothing here needs custom hardware. A speaker and a device running OVOS is enough to try the pattern indoors before building it into a prop. See Hardware Integrators if you want to build a standalone battery/speaker enclosure for it.

This one's for people who write skills

The Halloween-prop recipe above uses skill code (self.schedule_event, converse) rather than voice/config alone. If you haven't written a skill yet, Your First Skill is a gentler starting point.

Play your own music, or control your smart home

OVOS plays internet radio (PyRadios, SomaFM) and local audio files out of the box. It has no bundled Spotify or other streaming-service player. See Media Plugins for what can be added.

Turning lights and other smart-home devices on and off by voice is also not built in. It needs a separate skill that talks to Home Assistant. See OVOS & Home Assistant for the setup and example commands.


Read next: What can I say? Related: Make it yours · Skill Cookbook · Personas & PersonaService · OVOS & Home Assistant