Almond is an open, privacy-preserving virtual assistant by Stanford Open Virtual Assistant Lab. It allows you, among other things, to control Home Assistant using natural language. Once installed, it will be available in the user interface via the microphone icon in the top right.

Almond consists of three parts:

  • Almond Server: Knows about Home Assistant and your data. Executes your sentences.
  • LUInet: Neural network that converts your sentences into Thingtalk programs.
  • Thingpedia: Skills that provide the building blocks for Thingtalk programs.

Architectural overview of how all pieces fit together.


Home Assistant add-on installation

To install Almond Server, go to the Home Assistant add-on store, search for Genie and click on Install. Once started, it will initiate a configuration flow to finish set up in Home Assistant. You can find it on the integrations page in the configuration panel.

Manual installation

You can install Almond Server by following the instructions in their README.

Before linking it to Home Assistant, you will need to visit the Almond UI once to create a password. It is by default available on port 3000.

Once installed, configure Almond like this:

# Example configuration.yaml entry
  type: local

The Almond integration does not update configuration entries yet. If you make a change to configuration.yaml, you will need to remove the configuration entry and then restart Home Assistant.

Almond Web

Stanford offers a hosted version of Almond Server called Almond Web. To use this, go to the integrations page and add Almond using the add integration flow.

Your Home Assistant installation needs to be externally accessible if you want Almond Web to be able to control Home Assistant.

Almond Web - Manual installation

It is possible to set up Almond Web manually. You will need to create your own client ID and secret in the web interface.

# Example configuration.yaml entry
  type: oauth2
  client_id: AAAAAAAAAAAAA
  client_secret: BBBBBBBBBBBBBBBBB

You can now go to the integrations page and start the configuration flow.

Language Support

Almond is currently limited to the English language. This is not a technical limitation but requires specialized engineering effort. Almond has currently no public timeline for adding other languages.

Device Support

Almond is constantly improving. It does not currently support all devices, but we’re working with Almond on improving this.