Skip to content

Fully local, privacy respecting, programmable Linux voice assistant

License

Notifications You must be signed in to change notification settings

lavafroth/tempest

Repository files navigation

Tempest

Poor man's linux voice automation.

Goals

  • Wake phrase "Tempest rise" and sleep phrase "Tempest rest"
  • Shortcut customization using config files
  • Recording built into the binary
  • Sending fuzzy questions to an LLM through Ollama's API
  • Built-in understanding of fuzzy terms (similar sentences are treated as equal)
  • Static builds

Getting started

Prerequisites

  • Rust toolchain, either via your package manager orrustup
  • C++ standard library
  • clang
  • cmake
  • pkg-config
  • libvoskinLD_LIBRARY_PATH
  • Audio library for your OS (linux distros have package names likealsa-dev,alsa-liboralsa)

If you use Nix flakes, runnix developin the project directory to get a dev shell with the dependencies installed.

Building

git clone https://github /lavafroth/tempest
cd tempest

Change the bindings in the config file to suit your needs.

Run the following to build the daemon and the client:

cargo build --workspace --release
Daemon

The daemon is optional and is only needed if you want phrases in your bindings to perform keyboard shortcuts. Since performing keystrokes is a privileged action, you must run the daemon as root.

sudo./target/release/tempest-daemon

This will give a token to authenticate with the daemon.

Client

If you have the daemon running in the background, in a different terminal tab, run

./target/release/tempest-client \
the_token_from_the_daemon

wherethe_token_from_the_daemonis the token provided by the daemon.

You can alternatively run the client as standalone. However, config bindings with keyboard shortcuts will not work.

./target/release/tempest-client

On first run, the client will prompt you to download models.