# Open Voice OS (Mark II) vs HiveMind Satellite (Mark 1) ⚔️💥💪

**URL:** https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709
**Category:** OpenVoiceOS's Voice AI Platform
**Tags:** hardware, ovos, markii, mark1, hivemind
**Created:** [April 18, 2024, 12:25am UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709 "2024-04-18T00:25:41Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![goldyfruit](https://community.openconversational.ai/user_avatar/community.openconversational.ai/goldyfruit/32/2741_2.png) [@goldyfruit](https://community.openconversational.ai/u/goldyfruit)
#### Post date: [April 18, 2024, 12:25am UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/1 "2024-04-18T00:25:41Z")

</div>

## Introduction

As **Mark 1** is getting older and older, running a voice assistant on it might be a challenge!

This is the reason why HiveMind was born, to solve this challenge by deporting the compute part on a more powerful external device.

## A bit of architecture

This video demonstrates how [Open Voice OS](https://github.com/OpenVoiceOS/ovos-core) performs on a **Mark II** _(Raspberry Pi 4)_ against [HiveMind Satellite](https://github.com/JarbasHiveMind/HiveMind-voice-sat) on a **Mark 1** _(Raspberry Pi 3B)_.

The [HiveMind Core](https://github.com/JarbasHiveMind/HiveMind-core/tree/dev/hivemind_core) and [Open Voice OS](https://github.com/OpenVoiceOS/ovos-core) parts are running in a Kubernetes cluster on a Dell R720 server _(plenty of compute power 😍)_.

_Quick overview of the pods running.:_

```auto
$ kubectl get pod -o wide -n ovos -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hivemind-extras-7c575f7b58-nqg85 1/1 Running 0 34h 10.233.65.26 k8s-worker-3.home.lan <none> <none>
hivemind-listener-5dc564f875-fd2qz 1/1 Running 0 34h 10.233.65.36 k8s-worker-3.home.lan <none> <none>
ovos-core-56575684dd-zkjqg 2/2 Running 0 34h 10.233.65.32 k8s-worker-3.home.lan <none> <none>
ovos-skills-64d84dc974-xzcn9 7/7 Running 0 6h47m 10.233.65.1 k8s-worker-3.home.lan <none> <none>
ovos-skills-extras-86f44f55c8-g8mm6 3/3 Running 0 33h 10.233.65.13 k8s-worker-3.home.lan <none> <none>

```

Here is quick resources consumption graph related to the HiveMind and Open Voice OS components running on the Kubernetes cluster.

 ![image](https://community.openconversational.ai/uploads/default/original/2X/0/05fa9e6db6c97febb4d5052d851f13af541b628d.png)

Feel free to ask more details 🤗

## Demo

[![](https://img.youtube.com/vi/Q6FAo_gPRms/maxresdefault.jpg "Open Voice OS (Mark II) vs HiveMind Satellite (Mark 1) ⚔️💥💪") ](https://www.youtube.com/watch?v=Q6FAo_gPRms)

## Link

- [GitHub - OpenVoiceOS/ovos-installer: Open Voice OS and/or HiveMind installer using Ansible with an intuitive and easy Text-based User Interface](https://github.com/OpenVoiceOS/ovos-installer)

---

<div class="post-metadata">

### Author: ![JarbasAl](https://community.openconversational.ai/user_avatar/community.openconversational.ai/jarbasal/32/1319_2.png) [@JarbasAl](https://community.openconversational.ai/u/JarbasAl)
#### Post date: [April 18, 2024, 1:32am UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/2 "2024-04-18T01:32:55Z")

</div>

Very cool!

AFAIK this is the first mark1 hivemind satellite, i’ve wanted to do it for a while but never got to it. really brings a new life to the device

I want to improve the PHAL plugin even more 🙂

great job as usual!

---

<div class="post-metadata">

### Author: ![mtwannabe](https://community.openconversational.ai/user_avatar/community.openconversational.ai/mtwannabe/32/1244_2.png) [@mtwannabe](https://community.openconversational.ai/u/mtwannabe)
#### Post date: [July 22, 2024, 2:31pm UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/3 "2024-07-22T14:31:01Z")

</div>

Is this still being updated and worked on? I loved the Mark 1. I am willing to have the 3B still installed in the Mycroft Mark 1 enclosure and offsetting what is required with say a pi 4 as my understanding is that HiveMind can have a master/slave kinda idea to run, right I’d like to be pointed more docs and setup for this to try out.

Thanks!

---

<div class="post-metadata">

### Author: ![goldyfruit](https://community.openconversational.ai/user_avatar/community.openconversational.ai/goldyfruit/32/2741_2.png) [@goldyfruit](https://community.openconversational.ai/u/goldyfruit)
#### Post date: [July 23, 2024, 3:37pm UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/4 "2024-07-23T15:37:39Z")

</div>

> [@mtwannabe](#):
>
> Is this still being updated and worked on?

Yes it is, check this thread [[HOWTO] Begin your Open Voice OS journey with the ovos-installer 💖 😍](https://community.openconversational.ai/t/howto-begin-your-open-voice-os-journey-with-the-ovos-installer/14900)

When using the `ovos-installer` you can select the `server` profile on the host that you want to be the HiveMind master node. Once the master is installed, run the `ovos-installer` on the Mark 1 and choose the `satellite` profile.

---

<div class="post-metadata">

### Author: ![QthePirate](https://community.openconversational.ai/user_avatar/community.openconversational.ai/qthepirate/32/6660_2.png) [@QthePirate](https://community.openconversational.ai/u/QthePirate)
#### Post date: [January 9, 2025, 7:05am UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/5 "2025-01-09T07:05:11Z")

</div>

@goldyfruit

Do you mind sharing your K8s deployment/statefulset/replica set files? I’ve moved everything in my environment to 3 k8s nodes (home assistant, plex, overseer, sonarr, radarr, etc.) and I want to deploy ovos/hivemind there as well. But, the documentation for the docker container is a little confusing.

---

<div class="post-metadata">

### Author: ![goldyfruit](https://community.openconversational.ai/user_avatar/community.openconversational.ai/goldyfruit/32/2741_2.png) [@goldyfruit](https://community.openconversational.ai/u/goldyfruit)
#### Post date: [January 9, 2025, 1:56pm UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/6 "2025-01-09T13:56:25Z")

</div>

> [@QthePirate](#):
>
> Do you mind sharing your K8s deployment/statefulset/replica set files? I’ve moved everything in my environment to 3 k8s nodes (home assistant, plex, overseer, sonarr, radarr, etc.) and I want to deploy ovos/hivemind there as well. But, the documentation for the docker container is a little confusing.

The Docker containers documentation is only written for Docker or Podman, not for Kubernetes and I don’t intent to extend it.

Here are the HiveMind manifests, don’t copy/paste it as you will have to replace few things _(image, storage class, etc…)_.

```auto
apiVersion: v1
kind: Service
metadata:
  name: hivemind-listener
  namespace: ovos
spec:
  ports:
  - port: 5678
    protocol: TCP
    targetPort: 5678
  selector:
    app: hivemind-listener
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: hivemind-share-claim
  namespace: ovos
spec:
  storageClassName: nfs-csi
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 256Mi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: hivemind-listener
  name: hivemind-listener
  namespace: ovos
spec:
  replicas: 3
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: hivemind-listener
  template:
    metadata:
      labels:
        app: hivemind-listener
    spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: app
                    operator: In
                    values:
                      - ovos-core
                      - ovos-skills
                      - hivemind-extras
                      - hivemind-listener
              topologyKey: kubernetes.io/hostname
              namespaceSelector: {}
      containers:
        - name: hivemind-listener
          image: registry.smartgic.io/hivemind/hivemind-listener:alpha
          imagePullPolicy: Always
          command:
            [
              "hivemind-core",
              "listen"
            ]
          ports:
            - containerPort: 5678
              protocol: TCP
          volumeMounts:
            - name: hivemind-share
              mountPath: /home/hivemind/.local/share/hivemind-core
            - name: hivemind-listener-cm
              mountPath: /home/hivemind/.config/hivemind-core/server.json
              subPath: server.json
          resources:
            requests:
              cpu: "500m"
              memory: "64M"
            limits:
              cpu: "750m"
              memory: "128M"
          readinessProbe:
            tcpSocket:
              port: 5678
            initialDelaySeconds: 10
            periodSeconds: 5
          livenessProbe:
            tcpSocket:
              port: 5678
            failureThreshold: 5
            periodSeconds: 5
      volumes:
        - name: hivemind-listener-cm
          configMap:
            name: hivemind-listener-cm
        - name: hivemind-share
          persistentVolumeClaim:
            claimName: hivemind-share-claim

```

---

<div class="post-metadata">

### Author: ![QthePirate](https://community.openconversational.ai/user_avatar/community.openconversational.ai/qthepirate/32/6660_2.png) [@QthePirate](https://community.openconversational.ai/u/QthePirate)
#### Post date: [January 9, 2025, 5:58pm UTC](https://community.openconversational.ai/t/open-voice-os-mark-ii-vs-hivemind-satellite-mark-1/14709/7 "2025-01-09T17:58:10Z")

</div>

> [@goldyfruit](#):
>
> ```auto
> apiVersion: v1
> kind: Service
> metadata:
> name: hivemind-listener
> namespace: ovos
> spec:
> ports:
> - port: 5678
> protocol: TCP
> targetPort: 5678
> selector:
> app: hivemind-listener
> ---
> kind: PersistentVolumeClaim
> apiVersion: v1
> metadata:
> name: hivemind-share-claim
> namespace: ovos
> spec:
> storageClassName: nfs-csi
> accessModes:
> - ReadWriteMany
> resources:
> requests:
> storage: 256Mi
> ---
> apiVersion: apps/v1
> kind: Deployment
> metadata:
> labels:
> app: hivemind-listener
> name: hivemind-listener
> namespace: ovos
> spec:
> replicas: 3
> revisionHistoryLimit: 3
> selector:
> matchLabels:
> app: hivemind-listener
> template:
> metadata:
> labels:
> app: hivemind-listener
> spec:
> affinity:
> podAffinity:
> requiredDuringSchedulingIgnoredDuringExecution:
> - labelSelector:
> matchExpressions:
> - key: app
> operator: In
> values:
> - ovos-core
> - ovos-skills
> - hivemind-extras
> - hivemind-listener
> topologyKey: kubernetes.io/hostname
> namespaceSelector: {}
> containers:
> - name: hivemind-listener
> image: registry.smartgic.io/hivemind/hivemind-listener:alpha
> imagePullPolicy: Always
> command:
> [
> "hivemind-core",
> "listen"
> ]
> ports:
> - containerPort: 5678
> protocol: TCP
> volumeMounts:
> - name: hivemind-share
> mountPath: /home/hivemind/.local/share/hivemind-core
> - name: hivemind-listener-cm
> mountPath: /home/hivemind/.config/hivemind-core/server.json
> subPath: server.json
> resources:
> requests:
> cpu: "500m"
> memory: "64M"
> limits:
> cpu: "750m"
> memory: "128M"
> readinessProbe:
> tcpSocket:
> port: 5678
> initialDelaySeconds: 10
> periodSeconds: 5
> livenessProbe:
> tcpSocket:
> port: 5678
> failureThreshold: 5
> periodSeconds: 5
> volumes:
> - name: hivemind-listener-cm
> configMap:
> name: hivemind-listener-cm
> - name: hivemind-share
> persistentVolumeClaim:
> claimName: hivemind-share-claim
> 
> ```

Thank you so much! I appreciate it!

Of course I wouldn’t copy and paste; I wanted to make sure I wasn’t missing anything on the volume mounts and ports.

Do you have the one for your ovos pods as well? it’s mostly the environment values/variables I want to verify I’m getting correct.,

I can write up a quick kubernetes how-to once in a Github repo you can link to somewhere if you want once I get it working.
