An open-source, customizable in-home voice assistant with a client-server architecture, powered by large language models.
Dillhaven Assistant is a modular, extensible voice assistant designed to run on a variety of hardware configurations. It features a client-server architecture that allows the resource-intensive components (like speech recognition and language models) to run on more powerful hardware, while lightweight clients can run on devices like Raspberry Pi.
The assistant provides natural voice interaction with configurable personalities, voice synthesis, and integration with language models for intelligent responses.
Clone the repository:
git clone https://github.com/pdylanross/dillhaven-assistant.git
cd dillhaven-assistant
Install ONNX Runtime:
# Example for Linux (adjust for your platform)
mkdir -p /usr/local/onnxruntime/lib
# Download and extract ONNX Runtime to the directory above
Build the server:
just build-release-server
Build the client:
just build-release-client
Build the ARM client using Docker:
just build-release-client-arm
Deploy to your Raspberry Pi:
./hack/local-rpi-deploy/deploy.sh pi@your-raspberry-pi-hostname
Create a configuration file based on the examples in the hack directory:
personality:
name: "your-assistant-name"
system_prompt: |
System prompt that defines your assistant's personality
location: "your-location"
voice_settings:
local:
path: "/path/to/voice/model.onnx.json"
llm_client:
vllm:
model: "google/gemma-3-4b-it" # or another compatible model
base_url: "http://localhost:8000/v1"
api_key: ""
server:
addr: "0.0.0.0:4567"
client:
endpoint: http://your-server-address:4567
# Development mode
just run-server
# Release mode
just run-release-server
# Development mode
just run-client
# Release mode
just run-release-client
# Run the server with a specific config file
./target/server/release/dillhaven-assistant server -c /path/to/config.yaml
# Run the client with a specific config file
./target/client/release/dillhaven-assistant client -c /path/to/config.yaml
The project is organized as a Rust workspace with multiple crates:
# Format code
just fmt
# Run linter
just clippy
# Run tests
just test
# Build all components in release mode
just build-releases
Contributions are welcome! Here's how you can contribute:
git checkout -b my-new-featurejust testgit commit -am 'Add some feature'git push origin my-new-featurePlease make sure your code passes all tests and follows the project's coding style.
This project is licensed under the Apache License 2.0—see the LICENSE file for details.
16 commits
Rust
92.5%
Jinja
3.7%
Just
1.8%
Shell
1.3%
An open-source, customizable in-home voice assistant with a client-server architecture, powered by large language models.
Dillhaven Assistant is a modular, extensible voice assistant designed to run on a variety of hardware configurations. It features a client-server architecture that allows the resource-intensive components (like speech recognition and language models) to run on more powerful hardware, while lightweight clients can run on devices like Raspberry Pi.
The assistant provides natural voice interaction with configurable personalities, voice synthesis, and integration with language models for intelligent responses.
Clone the repository:
git clone https://github.com/pdylanross/dillhaven-assistant.git
cd dillhaven-assistant
Install ONNX Runtime:
# Example for Linux (adjust for your platform)
mkdir -p /usr/local/onnxruntime/lib
# Download and extract ONNX Runtime to the directory above
Build the server:
just build-release-server
Build the client:
just build-release-client
Build the ARM client using Docker:
just build-release-client-arm
Deploy to your Raspberry Pi:
./hack/local-rpi-deploy/deploy.sh pi@your-raspberry-pi-hostname
Create a configuration file based on the examples in the hack directory:
personality:
name: "your-assistant-name"
system_prompt: |
System prompt that defines your assistant's personality
location: "your-location"
voice_settings:
local:
path: "/path/to/voice/model.onnx.json"
llm_client:
vllm:
model: "google/gemma-3-4b-it" # or another compatible model
base_url: "http://localhost:8000/v1"
api_key: ""
server:
addr: "0.0.0.0:4567"
client:
endpoint: http://your-server-address:4567
# Development mode
just run-server
# Release mode
just run-release-server
# Development mode
just run-client
# Release mode
just run-release-client
# Run the server with a specific config file
./target/server/release/dillhaven-assistant server -c /path/to/config.yaml
# Run the client with a specific config file
./target/client/release/dillhaven-assistant client -c /path/to/config.yaml
The project is organized as a Rust workspace with multiple crates:
# Format code
just fmt
# Run linter
just clippy
# Run tests
just test
# Build all components in release mode
just build-releases
Contributions are welcome! Here's how you can contribute:
git checkout -b my-new-featurejust testgit commit -am 'Add some feature'git push origin my-new-featurePlease make sure your code passes all tests and follows the project's coding style.
This project is licensed under the Apache License 2.0—see the LICENSE file for details.
16 commits
Rust
92.5%
Jinja
3.7%
Just
1.8%
Shell
1.3%