Aegis AI v0.5
Aegis AI v0.5 — Phase 3.1 / 3.2 / 3.3
Voice I/O, Vector-embedding RAG, and CalDAV calendar integration.
Closes Phase 3.1 (calendar), Phase 3.2 (voice I/O), and Phase 3.3 (RAG foundation). Adds the last missing features needed to make Aegis AI a proactive daily-driver assistant.
Highlights
Voice I/O (src/voice/)
-
Speech-to-Text via cloud OpenAI Whisper (
/v1/audio/transcriptions, multipart/form-data). Compatible with OpenAI itself, Azure OpenAI Whisper deployments, Groq's distil-whisper-large-v3-en, and any OpenAI-compatible gateway.- API key from the OS keychain entry
aegis-ai/voice_stt(set via Settings) orOPENAI_API_KEY/AEGIS_STT_API_KEYenv vars. LocalSttfallback stub returns an empty transcript when no API key is configured.- Wake-word detector: case-insensitive substring match for
"hey aegis"(override viaAEGIS_WAKE_WORD).
- API key from the OS keychain entry
-
Text-to-Speech via OS-native engines:
- Linux:
espeak/espeak-ng(writes a WAV file). - Windows: PowerShell +
System.Speech.Synthesis.SpeechSynthesizer(SAPI, ships with the OS — no install required). - macOS:
say(writes an AIFF file). - Optional ElevenLabs cloud TTS (opt-in, API key from keychain
aegis-ai/voice_ttsorELEVENLABS_API_KEY). - Default backend is auto-selected (cloud if a key is configured, otherwise local).
- Linux:
-
Push-to-talk hotkey — system-wide hotkey (default
Ctrl+Space) registered viatauri-plugin-global-shortcut.- Toggle semantics: first press starts recording, second press stops and sends.
- Configurable via the
voice_ptt_set_hotkeyTauri command.
-
New Tauri commands:
voice_transcribe,voice_speak,voice_ptt_state,voice_ptt_set_hotkey.
Vector-embedding RAG (src/memory/embeddings.rs, src/memory/rag.rs)
-
EmbeddingStore— SQLite-backed vector store for retrieval-augmented generation.- 256-dim sparse vector per knowledge entry, hashed via character-trigram FNV-1a.
- Cosine similarity retrieval — handles typos and morphological variants better than v0.4's Jaccard baseline ("calendar" vs "calender" scores > 0.5).
- Compact storage: 1 KB per entry; 10k entries x 1 KB = 10 MB fits comfortably in SQLite.
- New
knowledge_embeddingstable; migrated automatically on boot. - Pre-v0.5 facts are backfilled on first boot via
EmbeddingStore::backfill().
-
MemoryStore::remember/forget— high-level helpers that update both the knowledge table and its embedding in one call. -
memory::rag::inject_default— pulls the top-5 most similar knowledge entries (min cosine score 0.30) and prepends a system-prompt fragment.- Wired into
ai_chat,ai_chat_stream, and the agent loop'sagent_loop_inner. - No-op if the knowledge base is empty.
- Asking "what's my dog's name?" just works if you've ever told the AI your dog's name.
- Wired into
CalDAV Calendar Integration (src/calendar/)
-
CalendarClient— minimal read-only CalDAV client:PROPFINDon the calendar home URL to discover calendar collections.REPORTwith acalendar-querybody to fetch VEVENTs whoseDTSTARTfalls inside today's window.- Custom line-based iCalendar parser: RFC 5545 line folding, parameter escaping, all common VEVENT fields (
UID,SUMMARY,DESCRIPTION,LOCATION,DTSTART,DTEND,VALUE=DATEfor all-day events). - Tested against Nextcloud, Radicale, Synology Calendar (best-effort).
-
Intent classifier — recognizes three calendar intents:
ListToday— "What's on my calendar today?" / "Show me my agenda"ListTomorrow— "Do I have anything tomorrow?"ScheduleMeeting— "Schedule a meeting with Bob at 3pm" — surfaces today's events so the AI can detect conflicts. v0.5 does NOT auto-create events; the user must confirm via the UI.
-
New Tauri commands:
calendar_list_today,calendar_configure,calendar_dispatch_intent.
Release Pipeline (new GitHub Action)
- Replaced the old
release.yml(which ran on every push and PR) with a new workflow that only triggers when a release is published. - Builds for Windows (
x86_64-pc-windows-msvc) and Linux (x86_64-unknown-linux-gnu) in parallel. - Pins Rust 1.97.1 via
dtolnay/rust-toolchain@stable(matchesrust-toolchain.toml). - Builds frontend (
npm ci && npm run build) + the Tauri bundle (tauri-apps/tauri-action@v0) for both targets. - Uploads
.msi,.exe(NSIS),.deb,.AppImage, and SHA-256 checksums to the release as assets.
Branch Protection on main
mainis now protected: only the repo owner (hieulouisdev) can push directly.- All other contributors must open a pull request from a feature branch or a fork.
- Admins (the owner + PAT holders acting on their behalf) bypass the PR requirement.
- Force pushes and branch deletion are blocked.
Version Bumps
| File | Old | New |
|---|---|---|
Cargo.toml (workspace) |
0.4.0 | 0.5.0 |
src-tauri/Cargo.toml |
(inherits) | (inherits) |
src-tauri/tauri.conf.json |
0.4.0 | 0.5.0 |
package.json |
0.4.0 | 0.5.0 |
Cargo.lock |
0.4.0 | 0.5.0 |
rust-toolchain.toml |
1.97.1 | 1.97.1 (unchanged) |
Known Limitations (queued for Phase 4)
- Local STT is a no-op. The
LocalSttbackend returns an empty transcript. Users without an OpenAI / Groq API key get a clear error message in the UI; Phase 4 will addwhisper-rsfor fully offline STT. - PTT is toggle, not hold.
tauri-plugin-global-shortcutv2.0 only exposeson_pressed(noon_released). Toggle semantics work but are less ergonomic than hold-to-talk. - CalDAV is read-only. Creating, updating, or deleting events is queued for Phase 4 (security-sensitive — needs OAuth + the safety policy's confirmation flow).
- Calendar intent classifier is regex-based. Not a real NLU model. Edge cases ("schedule a meeting tomorrow" — should that be
ListTomorroworScheduleMeeting?) are handled by the classifier ordering:ScheduleMeetingwins, which is the user's likely intent. - Entity auto-extraction from chat history still TODO.
Download
Artifacts for both Windows and Linux are attached below. SHA-256 checksums are also attached as *.sha256 files.
| Platform | File | Type |
|---|---|---|
| Windows (x86_64) | Aegis-AI_0.5.0_x64-setup.exe |
NSIS installer |
| Windows (x86_64) | Aegis-AI_0.5.0_x64_en-US.msi |
MSI installer |
| Linux (x86_64) | aegis-ai_0.5.0_amd64.deb |
Debian package |
| Linux (x86_64) | aegis-ai_0.5.0_amd64.AppImage |
Portable AppImage |
See ROADMAP.md and CHANGELOG.md for the full release notes.