• Stars
    star
    144
  • Rank 255,590 (Top 6 %)
  • Language
    Python
  • License
    GNU Affero Genera...
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Microservices and web apps to support Mycroft devices

License CLA Team Status

PRs Welcome Join chat Code style: black

Selene -- Mycroft's Server Backend

Selene provides the services used by Mycroft Core to manage devices, skills and settings. It consists of two repositories. This one contains Python and SQL representing the database definition, data access layer, APIs and scripts. The second repository, Selene UI, contains Angular web applications that use the APIs defined in this repository.

There are four APIs defined in this repository, account management, single sign on, skill marketplace and device. The first three support account.mycroft.ai (aka home.mycroft.ai), sso.mycroft.ai, and market.mycroft.ai, respectively. The device API is how devices running Mycroft Core communicate with the server. Also included in this repository is a package containing batch scripts for maintenance and the definition of the database schema.

Each API is designed to run independently of the others. Code common to each of the APIs, such as the Data Access Layer, can be found in the "shared" directory. The shared code is an independent Python package required by each of the APIs. Each API has its own Pipfile so that it can be run in its own virtual environment.

Installation

The Python code utilizes features introduced in Python 3.7, such as data classes. Pipenv is used for virtual environment and package management. If you prefer to use pip and pyenv (or virtualenv), you can find the required libraries in the files named "Pipfile". These instructions will use pipenv commands.

If the Selene applications will be servicing a large number of devices (enterprise usage, for example), it is recommended that each of the applications run on their own server or virtual machine. This configuration makes it easier to scale and monitor each application independently. However, all applications can be run on a single server. This configuration could be more practical for a household running a handful of devices.

These instructions will assume a multi-server setup for several thousand devices. To run on a single server servicing a small number of devices, the recommended system requirements are 4 CPU, 8GB RAM and 100GB of disk. There are a lot of manual steps in this section that will eventually be replaced with an installation script.

All Selene applications are time zone agnostic. It is recommended that the time zone on any server running Selene be UTC.

It is recommended to create an application specific user. In these instructions this user will be mycroft.

Postgres DB

  • Recommended server configuration: Ubuntu 18.04 LTS (server install), 2 CPU, 4GB RAM, 50GB disk.
  • Use the package management system to install Python 3.7, Python 3 pip and PostgreSQL 10
sudo apt-get install postgresql python3.7 python python3-pip
  • Set Postgres to start on boot
sudo systemctl enable postgresql
  • Clone the selene-backend and documentation repositories
sudo mkdir -p /opt/selene
sudo chown -R mycroft:users /opt/selene
cd /opt/selene
git clone https://github.com/MycroftAI/selene-backend.git
  • Create the virtual environment for the database code
sudo python3.7 -m pip install pipenv
cd /opt/selene/selene-backend/db
pipenv install
  • Download files from geonames.org used to populate the geography schema tables
mkdir -p /opt/selene/data
cd /opt/selene/data
wget http://download.geonames.org/export/dump/countryInfo.txt
wget http://download.geonames.org/export/dump/timeZones.txt
wget http://download.geonames.org/export/dump/admin1CodesASCII.txt
wget http://download.geonames.org/export/dump/cities500.zip
  • Add environment variables containing these passwords for the bootstrap script
export DB_PASSWORD=<selene user password>
export POSTGRES_PASSWORD=<postgres user password>
  • Generate secure passwords for the postgres user and selene user on the database
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '$POSTGRES_PASSWORD'"
sudo -u postgres psql -c "CREATE ROLE selene WITH LOGIN ENCRYPTED PASSWORD '$DB_PASSWORD'"
  • Run the bootstrap script
cd /opt/selene/selene-backend/db/scripts
pipenv run python bootstrap_mycroft_db.py
  • Note: if you get an authentication error you can temporarily edit /etc/postgresql/<version>/main/pg_hba.conf replacing the following lines:
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
  • By default, Postgres only listens on localhost. This will not do for a multi-server setup. Change the listen_addresses value in the posgresql.conf file to the private IP of the database server. This file is owned by the postgres user so use the following command to edit it (substituting vi for your favorite editor)
sudo -u postgres vi /etc/postgres/10/main/postgresql.conf
  • By default, Postgres only allows connections from localhost. This will not do for a multi-server setup either. Add an entry to the pg_hba.conf file for each server that needs to access this database. This file is also owned by the postgres user so use the following command to edit it (substituting vi for your favorite editor)
sudo -u postgres vi /etc/postgres/10/main/pg_hba.conf
  • Instructions on how to update the pg_hba.conf file can be found in Postgres' documentation. Below is an example for reference.
# IPv4 Selene connections
host    mycroft         selene          <private IP address>/32          md5
  • Restart Postgres for the postgres.conf and pg_hba.conf changes to take effect.
sudo systemctl restart postgresql

Redis DB

  • Recommended server configuration: Ubuntu 18.04 LTS, 1 CPU, 1GB RAM, 5GB disk. So as to not reinvent the wheel, here are some easy-to-follow instructions for installing Redis on Ubuntu 18.04.
  • By default, Redis only listens on local host. For multi-server setups, one additional step is to change the "bind" variable in /etc/redis/redis.conf to be the private IP of the Redis host.

APIs

The majority of the setup for each API is the same. This section defines the steps common to all APIs. Steps specific to each API will be defined in their respective sections.

  • Add an application user to the VM. Either give this user sudo privileges or execute the sudo commands below as a user with sudo privileges. These instructions will assume a user name of "mycroft"
  • Use the package management system to install Python 3.7, Python 3 pip and Python 3.7 Developer Tools
sudo apt install python3.7 python3-pip python3.7-dev
sudo python3.7 -m pip install pipenv
  • Setup the Backend Application Directory
sudo mkdir -p /opt/selene
sudo chown -R mycroft:users /opt/selene
  • Setup the Log Directory
sudo mkdir -p /var/log/mycroft
sudo chown -R mycroft:users /var/log/mycroft
  • Clone the Selene Backend Repository
cd /opt/selene
git clone https://github.com/MycroftAI/selene-backend.git
  • If running in a test environment, be sure to checkout the "test" branch of the repository

Single Sign On API

Recommended server configuration: Ubuntu 18.04 LTS, 1 CPU, 1GB RAM, 5GB disk

  • Create the virtual environment and install the requirements for the application
cd /opt/selene/selene-backend/api/sso
pipenv install

Account API

  • Recommended server configuration: Ubuntu 18.04 LTS, 1 CPU, 1GB RAM, 5GB disk
  • Create the virtual environment and install the requirements for the application
cd /opt/selene/selene-backend/api/account
pipenv install

Marketplace API

  • Recommended server configuration: Ubuntu 18.04 LTS, 1 CPU, 1GB RAM, 10GB disk
  • Create the virtual environment and install the requirements for the application
cd /opt/selene/selene-backend/api/market
pipenv install

Device API

  • Recommended server configuration: Ubuntu 18.04 LTS, 2 CPU, 2GB RAM, 50GB disk
  • Create the virtual environment and install the requirements for the application
cd /opt/selene/selene-backend/api/public
pipenv install

Precise API

  • Recommended server configuration: Ubuntu 18.04 LTS, 1 CPU, 1GB RAM, 5GB disk
  • Create the virtual environment and install the requirements for the application
cd /opt/selene/selene-backend/api/precise
pipenv install

Running the APIs

Each API is configured to run on port 5000. This is not a problem if each is running in its own VM but will be an issue if all APIs are running on the same server, or if port 5000 is already in use. To address these scenarios, change the port numbering in the uwsgi.ini file for each API.

Single Sign On API

  • The SSO application uses three JWTs for authentication. First is an access key, which is required to authenticate a user for API calls. Second is a refresh key that automatically refreshes the access key when it expires. Third is a reset key, which is used in a password reset scenario. Generate a secret key for each JWT.
  • Any data that can identify a user is encrypted. Generate a salt that will be used with the encryption algorithm.
  • Access to the Github API is required to support logging in with your Github account. Details can be found here.
  • The password reset functionality sends an email to the user with a link to reset their password. Selene uses SendGrid to send these emails so a SendGrid account and API key are required.
  • Define a systemd service to run the API. The service defines environment variables that use the secret and API keys generated in previous steps.
sudo vim /etc/systemd/system/sso_api.service
[Unit]
Description=Mycroft Single Sign On Api
After=network.target

[Service]
User=mycroft
Group=www-data
Restart=always
Type=simple
WorkingDirectory=/opt/selene/selene-backend/api/sso
ExecStart=/usr/local/bin/pipenv run uwsgi --ini uwsgi.ini
Environment=DB_HOST=<IP address or name of database host>
Environment=DB_NAME=mycroft
Environment=DB_PASSWORD=<selene database user password>
Environment=DB_PORT=5432
Environment=DB_USER=selene
Environment=GITHUB_CLIENT_ID=<github client id>
Environment=GITHUB_CLIENT_SECRET=<github client secret>
Environment=JWT_ACCESS_SECRET=<access secret>
Environment=JWT_REFRESH_SECRET=<refresh secret>
Environment=JWT_RESET_SECRET=<reset secret>
Environment=SALT=<salt value>
Environment=SELENE_ENVIRONMENT=<test/prod>
Environment=SENDGRID_API_KEY=<sendgrid API key>
Environment=SSO_BASE_URL=<base url for single sign on application>

[Install]
WantedBy=multi-user.target
  • Start the sso_api service and set it to start on boot
sudo systemctl start sso_api.service
sudo systemctl enable sso_api.service

Account API

  • The account API uses the same authentication mechanism as the single sign on API. The JWT_ACCESS_SECRET, JWT_REFRESH_SECRET and SALT environment variables must be the same values as those on the single sign on API.
  • This application uses the Redis database so the service needs to know where it resides.
  • Define a systemd service to run the API. The service defines environment variables that use the secret and API keys generated in previous steps.
sudo vim /etc/systemd/system/account_api.service
[Unit]
Description=Mycroft Account API
After=network.target

[Service]
User=mycroft
Group=www-data
Restart=always
Type=simple
WorkingDirectory=/opt/selene/selene-backend/api/account
ExecStart=/usr/local/bin/pipenv run uwsgi --ini uwsgi.ini
Environment=DB_HOST=<db host IP address or name>
Environment=DB_NAME=mycroft
Environment=DB_PASSWORD=<selene user database password>
Environment=DB_PORT=5432
Environment=DB_USER=selene
Environment=JWT_ACCESS_SECRET=<same as value for single sign on>
Environment=JWT_REFRESH_SECRET=<same as value for single sign on>
Environment=OAUTH_BASE_URL=<url for oauth service>
Environment=REDIS_HOST=<IP address or name of redis host>
Environment=REDIS_PORT=6379
Environment=SELENE_ENVIRONMENT=<test/prod>
Environment=SALT=<same as value for single sign on>

[Install]
WantedBy=multi-user.target
  • Start the account_api service and set it to start on boot
sudo systemctl start account_api.service
sudo systemctl enable account_api.service

Marketplace API

  • The marketplace API uses the same authentication mechanism as the single sign on API. The JWT_ACCESS_SECRET, JWT_REFRESH_SECRET and SALT environment variables must be the same values as those on the single sign on API.
  • This application uses the Redis database so the service needs to know where it resides.
  • Define a systemd service to run the API. The service defines environment variables that use the secret and API keys generated in previous steps.
sudo vim /etc/systemd/system/market_api.service
[Unit]
Description=Mycroft Marketplace API
After=network.target

[Service]
User=mycroft
Group=www-data
Restart=always
Type=simple
WorkingDirectory=/opt/selene/selene-backend/api/market
ExecStart=/usr/local/bin/pipenv run uwsgi --ini uwsgi.ini
Environment=DB_HOST=<db host IP address or name>
Environment=DB_NAME=mycroft
Environment=DB_PASSWORD=<selene user database password>
Environment=DB_PORT=5432
Environment=DB_USER=selene
Environment=JWT_ACCESS_SECRET=<same as value for single sign on>
Environment=JWT_REFRESH_SECRET=<same as value for single sign on>
Environment=OAUTH_BASE_URL=<url for oauth service>
Environment=REDIS_HOST=<IP address or name of redis host>
Environment=REDIS_PORT=6379
Environment=SELENE_ENVIRONMENT=<test/prod>
Environment=SALT=<same as value for single sign on>

[Install]
WantedBy=multi-user.target
  • Start the market_api service and set it to start on boot
sudo systemctl start market_api.service
sudo systemctl enable market_api.service
  • The marketplace API assumes that the skills it supplies to the web application are in the Postgres database. To get them there, a script needs to be run to download them from Github. The script requires the GITHUB_USER, GITHUB_PASSWORD, DB_HOST, DB_NAME, DB_USER and DB_PASSWORD environment variables to run. Use the same values as those in the service definition files.
cd /opt/selene/selene-backend/batch
pipenv install
pipenv run python load_skill_display_data.py --core-version <specify core version, e.g. 19.02>

Device API

  • The device API uses the same authentication mechanism as the single sign on API. The JWT_ACCESS_SECRET, JWT_REFRESH_SECRET and SALT environment variables must be the same values as those on the single sign on API.
  • This application uses the Redis database so the service needs to know where it resides.
  • The weather skill requires a key to the Open Weather Map API
  • The speech to text engine requires a key to Google's STT API.
  • The Wolfram Alpha skill requires an API key to the Wolfram Alpha API
  • Define a systemd service to run the API. The service defines environment variables that use the secret and API keys generated in previous steps.
sudo vim /etc/systemd/system/public_api.service
[Unit]
Description=Mycroft Public API
After=network.target

[Service]
User=mycroft
Group=www-data
Restart=always
Type=simple
WorkingDirectory=/opt/selene/selene-backend/api/public
ExecStart=/usr/local/bin/pipenv run uwsgi --ini uwsgi.ini
Environment=DB_HOST=<db host IP address or name>
Environment=DB_NAME=mycroft
Environment=DB_PASSWORD=<selene user database password>
Environment=DB_PORT=5432
Environment=DB_USER=selene
Environment=EMAIL_SERVICE_HOST=<email host>
Environment=EMAIL_SERVICE_PORT=<email port>
Environment=EMAIL_SERVICE_USER=<email user>
Environment=EMAIL_SERVICE_PASSWORD=<email password>
Environment=GOOGLE_STT_KEY=<Google STT API key>
Environment=JWT_ACCESS_SECRET=<same as value for single sign on>
Environment=JWT_REFRESH_SECRET=<same as value for single sign on>
Environment=OAUTH_BASE_URL=<url for oauth service>
Environment=OWM_KEY=<Open Weather Map API Key>
Environment=OWM_URL=https://api.openweathermap.org/data/2.5
Environment=REDIS_HOST=<IP address or name of redis host>
Environment=REDIS_PORT=6379
Environment=SELENE_ENVIRONMENT=<test/prod>
Environment=SALT=<same as value for single sign on>
Environment=WOLFRAM_ALPHA_KEY=<Wolfram Alpha API Key
Environment=WOLFRAM_ALPHA_URL=https://api.wolframalpha.com

[Install]
WantedBy=multi-user.target
  • Start the public_api service and set it to start on boot
sudo systemctl start public_api.service
sudo systemctl enable public_api.service

Testing the endpoints

Before we continue, let's make sure that your endpoints are operational - for this we'll use the public_api endpoint as an example.

  1. As we do not yet have a http router configured, we must change the uwsgi configuration for the endpoint we want to test. This is contained in: /opt/selene/selene-backend/api/public/uwsgi.ini. Here we want to replace

    socket = :$PORT
    

    with

    http = :$PORT
    

    then restart the service:

    sudo systemctl restart public_api.service
    
  2. Check the status of the systemd service:

    systemctl status public_api.service
    

    Should report the service as "active (running)"

  3. Send a GET request from a remote device:

    curl -v http://$IP_ADDRESS:$PORT/code?state=this-is-a-test
    

    You can also monitor this from the service logs by running:

    journalctl -u public_api.service -f
    

Other Considerations

DNS

There are multiple ways to setup DNS. This document will not dictate how to do so for Selene. However, here is an example, based on how DNS is setup at Mycroft AI...

Each application runs on its own sub-domain. Assuming a top level domain of "mycroft.ai" the subdomains are:

  • account.mycroft.ai
  • api.mycroft.ai
  • market.mycroft.ai
  • sso.mycroft.ai

The APIs that support the web applications are directories within the sub-domain (e.g. account.mycroft.ai/api). Since the device API is externally facing, it is versioned. It's subdirectory must be "v1".

Reverse Proxy

There are multiple tools available for setting up a reverse proxy that will point your DNS entries to your APIs. As such, the decision on how to set this up will be left to the user.

SSL

It is recommended that Selene applications be run using HTTPS. To do this an SSL certificate is necessary.

Let's Encrypt is a great way to easily set up SSL certificates for free.

What About the GUI???

Once the database and API setup is complete, the next step is to setup the GUI, The README file for the Selene UI repository contains the instructions for setting up the web applications.

Getting Involved

This is an open source project and we would love your help. We have prepared a contributing guide to help you get started.

If this is your first PR or you're not sure where to get started, say hi in Mycroft Chat and a team member would be happy to guide you. Join the Mycroft Forum for questions and answers.

More Repositories

1

mycroft-core

Mycroft Core, the Mycroft Artificial Intelligence platform.
Python
6,511
star
2

mimic3

A fast local neural text to speech engine for Mycroft
Python
1,068
star
3

mycroft-precise

A lightweight, simple-to-use, RNN wake word listener
Python
848
star
4

mimic1

Mycroft's TTS engine, based on CMU's Flite (Festival Lite)
C
818
star
5

enclosure-picroft

Mycroft interface for Raspberry Pi environment
Shell
806
star
6

mycroft-skills

A repository for sharing and collaboration for third-party Mycroft skills development.
HTML
758
star
7

adapt

Adapt Intent Parser
Python
712
star
8

mimic-recording-studio

Mimic Recording Studio is a Docker-based application you can install to record voice samples, which can then be trained into a TTS voice with Mimic2
JavaScript
499
star
9

Mycroft-Android

Android companion app, sends commands from your Android device to your Mycroft system and returns the output as speech or other medium to the Android device.
Kotlin
351
star
10

mycroft-gui

The Graphical User Interface used by the Mycroft Mark II and more
C++
165
star
11

padatious

A neural network intent parser
Python
159
star
12

ZZZ-RETIRED__openstt

RETIRED - OpenSTT is now retired. If you would like more information on Mycroft AI's open source STT projects, please visit:
143
star
13

mimic3-voices

Voice models for Mimic 3 text to speech system
HTML
128
star
14

personal-backend

WORK IN PROGRESS: A Flask personal backend alternative for running your own version of https://home.mycroft.ai
Python
114
star
15

hardware-mycroft-mark-II

Mycroft's Mark II Rpi mechanical, electrical and industrial designs
Python
109
star
16

docker-mycroft

Mycroft Development Environment inside Docker!
Dockerfile
97
star
17

hardware-mycroft-mark-1

Open-sourcing our mechanical, electrical and industrial designs
93
star
18

MycroftCore-Android

MycroftCore on Android as a native app
Java
87
star
19

documentation

Mycroft.AI documentation for all public facing technical components.
Python
80
star
20

sonopy

A simple audio feature extraction library
Python
79
star
21

lingua-franca

Mycroft's multilingual text parsing and formatting library
Python
75
star
22

selene-ui

Web applications to support the Mycroft AI project.
TypeScript
50
star
23

Precise-Community-Data

Pre-trained Precise models and training data provided by the Mycroft Community
48
star
24

ZZZ-RETIRED__mycroft-core-documentation

ZZZ ARCHIVED - Documentation for Mycroft Core.
34
star
25

installers

Installers and instructions for getting Mycroft working on different equipment, OS platforms and desktops.
Shell
28
star
26

mycroft-skills-kit

Mycroft Skills Kit
Python
28
star
27

contributors

Contributors building the Mycroft open source project
23
star
28

ZZZ-RETIRED__rpi3-headless-wifi-setup

Retired project, replaced by:
Python
21
star
29

mycroft-dinkum

A consumer ready version of Mycroft specifically for the Mark II.
Python
20
star
30

skill-weather

Mycroft AI official Weather Skill, providing weather conditions and forecasts.
Python
19
star
31

skill-wiki

Query Wikipedia articles
Python
18
star
32

skill-hello-world

Mycroft AI Hello World Skill - use this basic Skill to see how Mycroft AI Skills work.
Python
16
star
33

mimic1-core

Core of the mimic TTS system
C
14
star
34

mycroft-skills-manager

Mycroft Skills Manager
Python
14
star
35

skill-alarm

Mycroft AI official Alarm Skill - Set single and recurring alarms, with a choice of alarm sounds
Python
14
star
36

skill-reminder

Mycroft AI official Reminder Skill - set reminders
Python
14
star
37

skill-singing

Mycroft AI official Singing Skill - Mycroft speaks lyrics to popular songs
Python
14
star
38

mycroft-messagebus-client

Python module for connecting to the mycroft messagebus
Python
13
star
39

mycroft-precise-python-experiments

Python Experiments for Mycroft Precise Wake Word Listener
Python
13
star
40

snapcraft-mycroft-core

This project is for building mycroft-core snaps
Jsonnet
13
star
41

skill-installer

Mycroft AI official Skill installation Skill - allowing voice installation of Skills
Python
12
star
42

pylisten

A simple pyaudio microphone interface
Python
11
star
43

padaos

A rigid, lightweight, dead-simple intent parser
Python
11
star
44

ZZZ-RETIRED__adapt-documentation

Retired repo, formerly was the source of docs shown on https://adapt.mycroft.ai
11
star
45

skill-desktop-launcher

Mycroft AI official Desktop Launcher Skill - launch applications in Linux
Python
11
star
46

precise-data

Binary data used for Mycroft Precise
10
star
47

skill-volume

Mycroft AI official Volume Skill - control the volume of your Device
Python
10
star
48

fallback-duckduckgo

Mycroft AI official Duck Duck Go Skill - used as a fallback if an Utterance can't be matched to an Intent
Python
9
star
49

skill-npr-news

Mycroft AI official News Skill, providing the latest news report from your favorite broadcast.
Python
9
star
50

enclosure-mark1

Replacing the faceplate repo
C++
9
star
51

ML-Tools

Tools for ML Research
Jupyter Notebook
8
star
52

skill-stop

Mycroft AI official Stop Skill - stop the actions of a Skill that are in progress
Python
8
star
53

mycroft-skills-data

Metrics and data relating to Skills built for the Mycroft Core system
8
star
54

fallback-wolfram-alpha

Mycroft AI official Wolfram Alpha Skill - used as a fallback if an Intent is not matched
Python
8
star
55

ZZZ-RETIRED__mycroft-slackbot

Retired, Mycroft Slack is no longer active
Java
8
star
56

skill-joke

Mycroft AI official Joke Skill - provide basic jokes
Python
7
star
57

skill-camera

Camera Skill for Mycroft AI
QML
7
star
58

mycroft-timer

Mycroft AI official Timer Skill - set multiple named timers
Python
7
star
59

skill-homescreen

Python
7
star
60

skill-mark-2

Control of the Mycroft Mark 2 enclosure
QML
7
star
61

plugin-tts-mimic3

Text to speech plugin for Mycroft using Mimic 3
Python
7
star
62

skill-audio-record

Mycroft AI official Audio Record Skill - record audio and play it back
Python
7
star
63

skill-personal

Mycroft AI official Personality Skill - answers basic personality questions around Mycroft
Python
7
star
64

skill-spelling

Mycroft AI spelling Skill
Python
6
star
65

skill-stock

Mycroft AI official Stock Skill - providing current prices of stocks
Python
6
star
66

skill-date-time

Mycroft AI official Date and Time Skill, providing the current time, date and day of week for cities around the world.
Python
6
star
67

mycroft-gui-mark-2

QML
6
star
68

skill-playback-control

Mycroft AI official Playback Control Skill - providing Intents for other Skills to use common playback functionality (via Common Play)
QML
6
star
69

skill-ip

Mycroft AI official IP Skill - find the IP address of your Device
Python
5
star
70

skill-fallback-persona

Mycroft AI official Persona Skill - used as a fallback if the Utterance can't be matched to an Intent
Python
5
star
71

mark-ii-sandbox

Image for the Mark II based on Raspberry Pi OS
Python
5
star
72

skill-configuration

Mycroft AI official Configuration Skill - synchronize settings with home.mycroft.ai
Python
5
star
73

docker-openvpn-client

An OpenVPN client built into a docker container. Allows for attaching other containers to a VPN
Shell
5
star
74

skill-query

Skill Negotiating for the best source for an answer via Common QA
Python
5
star
75

mimic1-packaging

Shell
5
star
76

skill-pairing

Mycroft AI official Pairing Skill - connect your Device to home.mycroft.ai
QML
5
star
77

skill-speak

Mycroft AI official Speak Skill - make Mycroft speak back text
Python
5
star
78

mycroft-wifi-setup

Mycroft WiFi Setup Client
Python
4
star
79

respeaker-dev-filesystem

Development file system for Seeed ReSpeaker Core v2
4
star
80

mimic1-full

Build mimic (without runtime plugins if desired)
C
4
star
81

pako

The universal package manager library
Python
4
star
82

fallback-unknown

Mycroft AI official Unknown Fallback Skill - used if no Intent is matched to an Utterance
Python
4
star
83

arriz

A real-time array visualization tool
Python
4
star
84

skill-release-test

Mycroft AI official Release Test Skill - used during `mycroft-core` release testing
Python
4
star
85

mycroft-mark-1

Mycroft AI official Mark 1 Skill - control the Mark 1 enclosure
Python
4
star
86

rnn-demo

Demo of using various recurrent networks to make streaming predictions
Python
4
star
87

mycroft-devices

Shell
3
star
88

skill-support

Mycroft AI official Support Skill - create information for a support request using voice
Python
3
star
89

skill-send-sms

Python
3
star
90

design

Place to share designy things from Mycroft.
3
star
91

mycroft-core-release

A project to automate the mycroft-core release process.
Python
3
star
92

mimic1-documentation

Documentation for https://github.com/mycroftai/mimic1
3
star
93

skill-naptime

Mycroft AI official Naptime Skill - put Mycroft to sleep for a while
Python
3
star
94

mimic1-english

English language support for the mimic TTS system
C
3
star
95

ZZZ-RETIRED__chatter

A Mycroft AI chatbot solution framework
3
star
96

skill-repeat-interactions

Mycroft AI official Repeat Interaction Skill - repeat recent commands
Python
3
star
97

mark-ii-product

Software packaging for the default Mark II operating system.
C
2
star
98

skill-version-checker

Mycroft AI official Version Checker Skill - check the version of mycroft-core that is installed
Python
2
star
99

skill-standard-gui

Handles standard, non-platform-specific GUI activities.
Python
2
star
100

skill-dial-call

Python
2
star