/almond-server

The home server version of Almond

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Almond For Home Servers

Build Status Coverage Status Dependency Status Language grade: JavaScript

End User Programmable Virtual Assistants

This repository contains home server version of Almond, the end user programmable assistant. It is a single-user version, suitable for running on low-power devices and smart speakers.

Almond is part of Open Thing Platform, a research project led by prof. Monica Lam, from Stanford University. You can find more information at https://thingpedia.stanford.edu/about.

Running almond-server

The recommended way to run almond-server is through podman, a replacement for docker that allows the container to run as your regular user (and thus access PulseAudio from your normal session).

To run, use the command:

podman run --name almond -p 3000:3000 \
    -v /dev/shm:/dev/shm \
    -v $XDG_RUNTIME_DIR/pulse:/run/pulse \
    --security-opt label=disable \
    stanfordoval/almond-server

You can now navigate to 127.0.0.1:3000 to access Almond, or use your voice with the hotword "computer".

I am a Mac!

Voice support is only available on Linux. On Mac or Windows, you can use the following docker command:

docker run --name almond -p 3000:3000 stanfordoval/almond-server:latest-portable

Development setup

To develop almond-server, you should clone this repository, then install the dependencies with:

dnf -y install nodejs make gcc-c++ GraphicsMagick unzip # Fedora/RHEL
apt -y install nodejs build-essential make g++ graphicsmagick unzip # Ubuntu/Debian

You can then build the repository with:

npm install

This will only install the minimal set of dependencies, and will not install any voice support. To enable voice, you must also run (Linux only):

dnf -y install pulseaudio pulseaudio-libs-devel libcanberra-devel blas-devel atlas-devel # Fedora/RHEL
dnf -y install pulseaudio libpulse-dev libcanberra-dev libatlas-base-dev unzip # Ubuntu/Debian

then run npm install again to pick up the new dependencies.

After installing the dependencies locally, the server can be started using npm start.