A voice-controlled AI assistant designed to run locally. This system leverages a local Large Language Model for intelligence and integrates with various external services and system tools to automate tasks and manage productivity.
- Local Processing: Uses Ollama for local LLM inference and a local Text-to-Speech engine for low-latency voice interaction.
- Voice Interface: Real-time speech-to-text and text-to-speech capabilities.
- Tools & Integrations:
- Google Workspace: Reads emails and manages calendar events.
- System Control: Checks resource usage, manages files, and executes Python code in a sandbox.
- Web Browser Control: Blocks distracting websites via a companion Chrome extension.
- Memory: Maintains a persistent memory interface to recall user preferences and past interactions.
- Self-Scheduling: Can schedule prompts to remind or check in with the user at future times.
- Database: Syncs habit and tracking data with Supabase.
- Python: Ensure Python 3.10+ is installed.
- Ollama: Install Ollama and pull the model specified in
src/config.py(default:qwen3:4b-instruct-2507-q4_K_M). - uv: This project uses
uvfor dependency management.
- Clone the repository.
- Install dependencies:
uv sync
- Environment Variables: Create a
.envfile in the root directory with the necessary API keys (e.g.,TAVILY_API_KEY,SUPABASE_URL,SUPABASE_KEY). - Google Credentials: Place your
google_credentials.jsonfile in thetools/directory to enable Gmail and Calendar features. - Chrome Extension:
- Open Chrome and navigate to
chrome://extensions. - Enable "Developer mode".
- Click "Load unpacked" and select the
chrome-extensiondirectory from this project.
- Open Chrome and navigate to
To start the assistant:
uv run src/main.pyYou can verify the assistant is running by saying the wake word ("Jarvis").
To run the assistant from any directory, you can create a shell alias. Replace <path-to-project> with the absolute path to this directory.
PowerShell
Add this function to your PowerShell profile ($PROFILE):
function jarvis {
uv run --directory "<path-to-project>" src/main.py
}Bash / Zsh
Add this alias to your .bashrc or .zshrc:
alias jarvis='uv run --directory "<path-to-project>" src/main.py'