Skip to content

Images

Pre-built images

The compose bundles in compose/ currently reference images hosted on Docker Hub under docker.io/smartgic. Buildx Bake defaults to docker.io/smartgic. If you publish to a different registry, update the image: references in your compose files.

Open Voice OS is a sophisticated piece of software which has several components. These components have been split into containers to provide better isolation and a microservice approach.

GUI images size

The GUI container images are larger than the other images as they need many QT libraries and GStreamer plugins in order to provide all the features supported by the voice assistant.

Supported CPU architectures

Container images can be used for different CPU architectures using the multi-platform images feature.

CPU architecture Description
amd64 Such as AMD and Intel processors
arm64 Such as Raspberry Pi 64-bit SoC
armv7l Such as Raspberry Pi 32-bit SoC (not supported because of onnxruntime1)

Containers

The list below is not exhaustive and doesn't mention anything about skill containers, but it is a fair list of the main components currently supported in ovos-docker.

Container Description
ovos_messagebus Read more about ovos-messagebus
ovos_phal Read more about ovos-phal
ovos_phal_admin Read more about ovos-phal admin variant
ovos_audio Read more about ovos-audio
ovos_listener Read more about ovos-listener
ovos_core Read more about ovos-core
ovos_cli Read more about ovos-cli
ovos_gui_websocket Read more about ovos-gui-websocket
ovos_gui_shell Read more about ovos-gui
ovos_gui_original Read more about ovos-gui
ovos_plugin_ggwave Read more about ovos-plugin-ggwave

Tags

Container image tags allow you to deploy a specific version of Open Voice OS. This could be an untested version based on a nightly build or a stable version.

Image tag Description
alpha Nightly build based on alpha releases from PyPi
stable Published when stable releases are available
latest Alias for the stable build (published only when stable is built)
x.y.z Pinned release tag (when published)

Tag availability

Tag availability depends on what has been published to the registry. Check the registry if you need a specific version.

Stable alias

When building locally, TAG=stable also tags LATEST_TAG (default latest). Override LATEST_TAG if you want a different alias.

Build images locally

If you need a private registry, custom tags, or local builds, use Docker Buildx Bake from the source repository:

./scripts/bake.sh --load --no-push
TAG=alpha CHANNEL=alpha VERSION=alpha PLATFORMS=linux/amd64,linux/arm64 ./scripts/bake.sh
./scripts/bake.sh -T skills

Builds require Docker with Buildx (BuildKit). Podman works for running images, but builds use Docker Buildx Bake.

For a full list of targets and build variables, see Build images.

--load forces linux/amd64 and cannot load multi-arch manifests locally. Multi-arch builds may require binfmt/qemu; set ENSURE_BINFMT=true or use --ensure-binfmt.

Volumes

To allow data persistence, Docker or Podman volumes are required. They will prevent downloading the requirements every time the containers are re-created.

Volume Description
ovos_gui_files Share QML files from skills between the GUI websocket service and the GUI client
ovos_listener_records Wake words and utterances recorded samples
ovos_local_state Mostly used to store logs from the different components
ovos_models Models downloaded by precise-lite wake word plugin
ovos_nltk Punkt Python package required by NLTK
ovos_tts_cache .wav and .pho files acting as cache from TTS transcription
ovos_vosk Models downloaded by VOSK during the initial boot

ovos_listener_records allows you to store samples of wake words and utterances which could help you to build or improve models.

Enable samples recording

By default the recording features are disabled, "record_wake_words": true and "save_utterances": true will have to be added to the listener section of mycroft.conf to enable these capabilities.

~/ovos/config/mycroft.conf
{
  "listener": {
    "record_wake_words": true,
    "save_utterances": true
  }
}

But first thing's first you need to have Open Voice OS's containers up and running. Follow the guide.