Mycroft Core, the Mycroft Artificial Intelligence platform.
Switch branches/tags
Clone or download
forslund and penrods Feature/rhel (#1856)
* Add test separating centOS and Fedora

Use /etc/os-release scanning for the ID present in os-release. Which is
supported by most modern linux distributions.

* Add Redhat Enterprise Linux
Latest commit 1a7cb0a Oct 19, 2018
Permalink
Failed to load latest commit information.
.github Move github files to .github folder Jun 6, 2018
bin Switch say/speak-to helper script names Sep 10, 2018
doc Moving wait_while_speaking to mycroft.audio.rst (#1645) Jun 21, 2018
mycroft Add support for comment lines in dialog files (#1847) Oct 15, 2018
scripts Issue 1475: Mimic build failed when spaces in the path (#1772) Aug 29, 2018
test Merge pull request #1848 from nielstron/feature/unittest_dialog Oct 16, 2018
.coveralls.yml Add coverage with nose2 and coveralls May 18, 2017
.gitignore Clean up setup scripts Jul 14, 2018
.gitmessage Add suggestion and examples of imperative text Aug 2, 2017
.pep8speaks.yml Add pep8speaks config file Oct 3, 2017
.travis.yml Add travis tests for python versions 3.4-3.6 May 5, 2018
ACKNOWLEDGEMENTS.md Added aknowledgement for sound effect Jul 21, 2016
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Dec 22, 2017
LICENSE.md Change to Apache 2.0 license from GPLv3.0 Oct 4, 2017
MANIFEST.in Clean up setup scripts Jul 14, 2018
README.md Unify badge style (#1849) Oct 15, 2018
dev_setup.sh Feature/rhel (#1856) Oct 19, 2018
requirements.txt Add locking when accessing the IdentityManager (#1801) Sep 28, 2018
setup.py start processess using python -m Aug 16, 2018
start-mycroft.sh Unify the command line experience across platforms (#1784) Sep 9, 2018
stop-mycroft.sh Unify the command line experience across platforms (#1784) Sep 9, 2018
test-requirements.txt replace python-coveralls with coveralls Sep 17, 2018
venv-activate.sh Unify the command line experience across platforms (#1784) Sep 9, 2018

README.md

Mycroft Build Status Coverage Status PRs Welcome

Mycroft is a hackable open source voice assistant.

Table of Contents

Getting Started

First, get the code on your system! The simplest method is via git (git installation instructions):

  • cd ~/
  • git clone --depth=1 https://github.com/MycroftAI/mycroft-core.git
  • cd mycroft-core
  • bash dev_setup.sh

This script sets up dependencies and a virtualenv. If running in an environment besides Ubuntu/Debian, Arch or Fedora you may need to manually install packages as instructed by dev_setup.sh.

NOTE: The default branch for this repository is 'dev', which should be considered a work-in-progress. If you want to clone a more stable version, switch over to the 'master' branch. NOTE: If you are willing to contribute to this project, clone the entire repository by

  • git clone https://github.com/MycroftAI/mycroft-core.git instead of
  • git clone --depth=1 https://github.com/MycroftAI/mycroft-core.git which is said above.

Running Mycroft

Mycroft provides start-mycroft.sh to perform common tasks. This script uses a virtualenv created by dev_setup.sh. Assuming you installed mycroft-core in your home directory run:

  • cd ~/mycroft-core
  • ./start-mycroft.sh debug

The "debug" command will start the background services (microphone listener, skill, messagebus, and audio subsystems) as well as bringing up a text-based Command Line Interface (CLI) you can use to interact with Mycroft and see the contents of the various logs. Alternatively you can run ./start-mycroft.sh all to begin the services without the command line interface. Later you can bring up the CLI using ./start-mycroft.sh cli.

The background services can be stopped as a group with:

  • ./stop-mycroft.sh

Using Mycroft

Home Device and Account Manager

Mycroft AI, Inc. maintains a device and account management system known as Mycroft Home. Developers may sign up at: https://home.mycroft.ai

By default, mycroft-core is configured to use Home. By saying "Hey Mycroft, pair my device" (or any other request verbal request) you will be informed that your device needs to be paired. Mycroft will speak a 6-digit code which you can entered into the pairing page within the Mycroft Home site.

Once paired, your unit will use Mycroft API keys for services such as Speech-to-Text (STT), weather and various other skills.

Skills

Mycroft is nothing without skills. There are a handful of default skills that are downloaded automatically to your /opt/mycroft/skills directory, but most need to be installed explicitly. See the Skill Repo to discover skills made by others. And please share your own interesting work!

Behind the scenes

Pairing Information

Pairing information generated by registering with Home is stored in: ~/.mycroft/identity/identity2.json <-- DO NOT SHARE THIS WITH OTHERS!

Configuration

Mycroft configuration consists of 4 possible locations:

  • mycroft-core/mycroft/configuration/mycroft.conf(Defaults)
  • Mycroft Home (Remote)
  • /etc/mycroft/mycroft.conf(Machine)
  • $HOME/.mycroft/mycroft.conf(User)

When the configuration loader starts, it looks in these locations in this order, and loads ALL configurations. Keys that exist in multiple configuration files will be overridden by the last file to contain the value. This process results in a minimal amount being written for a specific device and user, without modifying default distribution files.

Using Mycroft Without Home

If you do not wish to use the Mycroft Home service, you may insert your own API keys into the configuration files listed below in configuration.

The place to insert the API key looks like the following:

[WeatherSkill] api_key = ""

Put a relevant key inside the quotes and mycroft-core should begin to use the key immediately.

API Key Services

These are the keys currently used in Mycroft Core:

Using Mycroft behind a proxy

Many schools, universities and workplaces run a proxy on their network. If you need to type in a username and password to access the external internet, then you are likely behind a proxy.

If you plan to use Mycroft behind a proxy, then you will need to do an additional configuration step.

NOTE: In order to complete this step, you will need to know the hostname and port for the proxy server. Your network administrator will be able to provide these details. Your network administrator may want information on what type of traffic Mycroft will be using. We use https traffic on port 443, primarily for accessing ReST-based APIs.

Using Mycroft behind a proxy without authentication

If you are using Mycroft behind a proxy without authentication, add the following environment variables, changing the proxy_hostname.com and proxy_port for the values for your network. These commands are executed from the Linux command line interface (CLI).

$ export http_proxy=http://proxy_hostname.com:proxy_port
$ export https_port=http://proxy_hostname.com:proxy_port
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,0.0.0.0,::1"

Using Mycroft behind an authenticated proxy

If you are behind a proxy which requires authentication, add the following environment variables, changing the proxy_hostname.com and proxy_port for the values for your network. These commands are executed from the Linux command line interface (CLI).

$ export http_proxy=http://user:password@proxy_hostname.com:proxy_port
$ export https_port=http://user:password@proxy_hostname.com:proxy_port
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,0.0.0.0,::1"

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 mentor you. Join the Mycroft Forum for questions and answers.

Links