Speak. Feel. Evolve.
Ava is a voice-first, privacy-respecting AI companion that runs locally with optional cloud intelligence. It is built to feel alive, proactive, and calm.
This repository contains the cross-platform client built with:
- Tauri 2 (Rust backend) — desktop (Windows, macOS, Linux) + mobile (Android, iOS)
- Angular 22 for the minimal, calm visual interface
- Voice-first experience (primary interface is spoken conversation)
- Local-first + optional cloud
- Privacy-first, using Nostr for sync and identity (planned)
- Multiple Gardens for contextual memory
- Background persistence and agency
- Minimal visual UI — companion dashboard for history only
See:
- Node 22+ (LTS recommended)
- Rust stable (use
rustup default stable— nightly may cause dependency issues with current Tauri) - For Android: Android SDK + NDK (the project was scaffolded with Android support)
- For iOS: macOS + Xcode (run
npm run tauri:ios:initon a Mac)
# install dependencies
npm install
# desktop dev
npm run tauri:devThe Angular dev server runs on http://localhost:4200. Tauri wraps it.
# Android (after first init)
npm run tauri:android:dev
# Build production Android
npm run tauri:android:buildOn macOS:
npm run tauri:ios:init
npm run tauri:ios:devnpm run build # Angular production build
npm run tauri:build # Full Tauri bundles for current platformsrc/ # Angular 22 app (voice UI)
src-tauri/ # Rust + Tauri configuration
src/ # Rust entry + commands (future plugins, LLM, Nostr)
gen/android/ # Generated Android project
capabilities/ # Permission scopes
angular.json
tauri.conf.json # (in src-tauri)
The initial UI uses the Web Speech API (SpeechRecognition + SpeechSynthesis) for immediate cross-platform voice:
- Tap / click the central orb to speak
- Ava responds calmly with synthesized voice + on-screen history
- Works on desktop Chrome/Edge, Android Chrome, and iOS Safari (with limits)
Future: full local LLM inference (llama.cpp / MLX / ONNX), Nostr sync, device routing, persistent memory, proactive agency.
Ava can host a local MCP server so other agents (GitHub Copilot, Claude Desktop, Cursor) can call Ava to speak text aloud. On desktop it listens on the loopback endpoint http://127.0.0.1:7456 while Ava is open and exposes speak and list_voices tools.
Add to VS Code via .vscode/mcp.json:
{
"servers": {
"ava-tts": { "type": "http", "url": "http://127.0.0.1:7456" }
}
}See docs/mcp-tts-server.md for Claude Desktop, Cursor, and curl examples.
- Add Nostr identity (keypair) + relay connectivity
- Local model download + inference scaffolding (Rust side)
- Background services / keep-alive
- Multiple Gardens + vector/graph memory
- Cross-device sync & presence via Nostr
- Subscription / premium cloud model routing
- Polish mobile layouts + system integrations (mic, notifications)
In the .vscode/mcp.json there is a registration for Ava Voice MCP. This is used to run Ava Voice, for example after AI has completed a run.
Run it like this: Use the Ava voice tool to speak a 10-second summary of what I just asked and what you completed.
See LICENSE. This is an early-stage project under active development.
Ava-Zen · 2026