A local AI assistant that can see, hear, speak, browse the web, control your computer, and remember — built entirely in native C++, it is GPU agnostic with in-process implementation and privacy-safe embeddings vectors & LoRA adapters synchronization,with faster whisper/playwright libraries reimplemented into cpp.
C++
0
2 commits
updated Sep 29, 2026
A native C++ desktop AI assistant with voice, vision, browser automation, memory, and computer control.
Demo • Features • Privacy • Quick Start • Architecture • Build
Sonny is a local-first AI assistant for Windows that can hear you, see through your camera, browse the web, control your computer, remember information, and speak back — with the core AI stack running directly on your machine.
Demo GIF coming soon
![]() | ![]() |
| Sonny | Iron Man |
Most AI assistants can talk.
Sonny is designed to act.
You can say things like:
"Sonny, search Google for the latest C++ news."
"Open the first result and summarize it."
"Play some music."
"What am I holding?"
"Find that file on my computer."
"Open YouTube and play this video."
"Remember that I prefer..."
Sonny turns those requests into actions through a local tool system.
YOU
│
│ voice / text
▼
┌───────────────────┐
│ SONNY │
│ │
│ Local LLM │
│ Voice │
│ Vision │
│ Memory │
│ Tool Calling │
└─────────┬─────────┘
│
┌─────┼─────────────┐
▼ ▼ ▼
Browser PC Camera
│ │ │
▼ ▼ ▼
Search Files Vision
YouTube System Images
Forms Media
Sonny supports a complete local voice pipeline:
Microphone
↓
Wake Word / VAD
↓
Whisper
↓
Local LLM
↓
Tool Calls
↓
Kokoro TTS
↓
Speakers
Sonny uses llama.cpp to run GGUF language models locally.
The model can:
The LLM receives the registered tool schemas and decides when an action is required.
Sonny can look at the world around you.
With a supported vision model, Sonny can:
For example:
You:
"What do you see?"
Sonny:
"I can see..."
Vision requests are routed through the multimodal GGUF/mtmd pipeline when a compatible projector is available.
This is one of Sonny's core features.
Sonny can control a dedicated Chromium session through the Chrome DevTools Protocol.
It can:
Example:
"Open Google."
"Search for the latest NVIDIA GPU."
"Open the first result."
"Read this page and summarize it."
"Search YouTube for C++ tutorials."
"Play the first result."
The browser automation stack is implemented in C++ around CDP rather than depending on a Node.js or Python automation runtime.
Sonny currently exposes 16 registered tools to the LLM.
| Tool | Capability |
|---|---|
| Browser | Control Chromium |
| Google Search | Search Google |
| Web Search | Search the web |
| YouTube Search | Search YouTube |
| YouTube Video | Open/play videos |
| System Command | Execute system commands |
| Calculator | Mathematical expressions |
| Time | Current date/time |
| Clipboard | Read/write clipboard |
| File Operations | Read/write/list/delete files |
| File Explorer | Navigate files |
| Music Player | Control local media |
| Add Media Directory | Register media folders |
| Remove Media Directory | Remove media folders |
| List Media Library | Search media libraries |
| Camera | Photos and recordings |
The architecture is designed so additional tools can be registered without changing the core assistant loop.
Sonny can remember information locally.
The native C++ retrieval engine combines:
Your data is stored locally under:
%APPDATA%\Sonny\rag_data\
Example:
You:
"Remember that my favorite editor is VS Code."
Later:
"What editor do I use?"
Sonny:
"You prefer VS Code."
Sonny also contains an opt-in peer network for sharing aggregated knowledge between Sonny instances.
The system is designed around content-free aggregates rather than conversations.
The implementation includes:
See docs/VECTORS.md for the technical design.
Important: Review and configure the vectors settings according to your privacy requirements before enabling network synchronization.
Sonny isn't just a terminal window.
The application includes a DirectX 11 desktop overlay capable of rendering a GLB avatar with:
The repository currently includes Sonny and Iron Man avatar assets.
Sonny is designed around a local-first architecture.
The main AI pipeline runs directly on your computer:
Microphone
↓
Local Whisper
↓
Local LLM
↓
Local Tools
↓
Local Memory
↓
Local TTS
The running assistant does not require a Python server or a separate inference server.
Local components include:
The optional vectors system is separate and can be disabled.
Sonny uses a dedicated Chromium profile rather than your normal browser profile.
Credentials and autofill data are stored locally, with browser credentials protected using Windows DPAPI.
Sonny is intentionally built as a native C++ application.
The goal is to keep the major runtime components inside one application rather than building the assistant around a collection of Python services.
The project integrates:
llama.cppAt a high level:
┌─────────────────────────────────────────────────────────┐
│ SONNY APPLICATION │
│ │
│ ┌─────────────── AssistantOrchestrator ─────────────┐ │
│ │ │ │
│ │ Voice → LLM → Tools → Memory → Response │ │
│ │ │ │
│ └───────┬──────────┬───────────┬───────────┬───────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Audio Llama RAG Tools │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Whisper llama.cpp Embeddings Browser │
│ VAD GGUF BM25 Files │
│ Wake Word Vision Memory System │
│ Kokoro Vectors Camera │
│ │
│ DirectX 11 / UI │
└─────────────────────────────────────────────────────────┘
Microphone
│
▼
WASAPI
│
▼
Wake Word / Silero VAD
│
▼
Whisper / CTranslate2
│
▼
AssistantOrchestrator
│
├──────────────► RAG Memory
│
▼
llama.cpp
│
├──────────────► Tool
│ │
│ ▼
│ Tool Result
│ │
└────────────────────┘
│
▼
Kokoro TTS
│
▼
Speakers
src/
├── core/ # Assistant orchestration, settings, tray, camera
├── ai/ # LLM, TTS, RAG, embeddings
├── audio/ # Audio capture, Whisper, wake word, VAD
├── browser/ # Chromium/CDP automation
├── net/ # Vectors network
├── tools/ # Assistant tools
├── ui/ # Avatar and visual components
└── utils/ # Shared utilities
resources/
├── avatars/
├── images/
├── videos/
├── sounds/
└── models/
docs/
├── BUILD_CONFIG.md
└── VECTORS.md
installer/
└── Product.wxs
git clone https://github.com/ahmed19maher9/Sonny-Personal-Assistant.git
cd Sonny-Personal-Assistant
From a Visual Studio developer environment:
cmake.bat
The project uses the Visual Studio 2022 x64 generator.
Dependencies that are not already present are provisioned during configuration.
cd build\Release
personal_assistant.exe
On first launch, Sonny will ask you for the GGUF model path.
Sonny uses GGUF models through llama.cpp.
Configure your model in the first-run wizard or:
%APPDATA%\Sonny\config.ini
Example:
[Settings]
llama_model_path=C:\ai_models\your-model.gguf
kokoro_voice=af_heart
language=en
tts_speed=1.15
avatar_type=sonny
show_avatar=true
wake_word_enabled=false
camera_feed_enabled=true
For vision, place a compatible mmproj-*.gguf projector alongside the vision-capable GGUF model.
Sonny automatically selects the available inference backend.
| Hardware | Backend |
|---|---|
| NVIDIA | CUDA |
| AMD | Vulkan |
| Intel | Vulkan |
| CPU only | CPU |
CUDA and Vulkan support are configured automatically by default.
You can override this behavior with:
-DSONNY_LLAMA_CUDA=ON|OFF|AUTO
-DSONNY_LLAMA_VULKAN=ON|OFF|AUTO
-DSONNY_LLAMA_CUDA_ARCH=native
cmake.bat clean
cmake.bat
build.bat
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j
build_installer.bat
The installer requires WiX Toolset.
For deeper implementation details, see:
Important implementation areas include:
src/core/AssistantOrchestrator
src/ai/LlamaWrapper
src/ai/KokoroWrapper
src/ai/RagEngine
src/ai/EmbeddingEngine
src/audio/STTEngineWrapper
src/audio/WakeWordEngine
src/audio/VADEngine
src/browser/
src/net/
src/tools/
src/ui/
| Data | Location |
|---|---|
| Configuration | %APPDATA%\Sonny\config.ini |
| RAG / memory | %APPDATA%\Sonny\rag_data\ |
| Browser profile | %APPDATA%\Sonny\browser-profile |
| Browser credentials | %APPDATA%\Sonny\browser_profile.json |
| Screenshots | %APPDATA%\Sonny\screenshots |
| Downloads/PDFs | %USERPROFILE%\Downloads\Sonny |
| Vector node identity | %APPDATA%\Sonny\vectors\ |
Make sure the GGUF architecture is supported by the pinned llama.cpp version.
Check:
mic_gainWake-word detection is disabled by default.
Enable:
wake_word_enabled=true
and verify the OpenWakeWord model files exist.
Make sure Chrome or Edge is installed and that Sonny's dedicated browser profile isn't locked by another Sonny browser instance.
Check:
show_avatar=true
and verify that the GLB avatar asset is available.
The project is actively evolving.
Potential areas of development:
Have an idea?
Open an issue and describe what you want Sonny to be able to do.
Contributions are welcome.
Some useful areas:
A great first contribution is a new tool that gives Sonny a useful capability.
If Sonny is interesting to you:
Every star and contribution helps the project reach more developers interested in local AI and native C++.
Sonny integrates several open-source projects, including:
Please see the project's dependency/license documentation before redistributing builds.
See the repository license files for the applicable license terms for Sonny and its bundled dependencies.
Sonny is an experiment in what a local AI assistant can actually do when it is given access to your computer.
C++
96.9%
CMake
2.1%
A local AI assistant that can see, hear, speak, browse the web, control your computer, and remember — built entirely in native C++, it is GPU agnostic with in-process implementation and privacy-safe embeddings vectors & LoRA adapters synchronization,with faster whisper/playwright libraries reimplemented into cpp.
C++
0
2 commits
updated Sep 29, 2026
A native C++ desktop AI assistant with voice, vision, browser automation, memory, and computer control.
Demo • Features • Privacy • Quick Start • Architecture • Build
Sonny is a local-first AI assistant for Windows that can hear you, see through your camera, browse the web, control your computer, remember information, and speak back — with the core AI stack running directly on your machine.
Demo GIF coming soon
![]() | ![]() |
| Sonny | Iron Man |
Most AI assistants can talk.
Sonny is designed to act.
You can say things like:
"Sonny, search Google for the latest C++ news."
"Open the first result and summarize it."
"Play some music."
"What am I holding?"
"Find that file on my computer."
"Open YouTube and play this video."
"Remember that I prefer..."
Sonny turns those requests into actions through a local tool system.
YOU
│
│ voice / text
▼
┌───────────────────┐
│ SONNY │
│ │
│ Local LLM │
│ Voice │
│ Vision │
│ Memory │
│ Tool Calling │
└─────────┬─────────┘
│
┌─────┼─────────────┐
▼ ▼ ▼
Browser PC Camera
│ │ │
▼ ▼ ▼
Search Files Vision
YouTube System Images
Forms Media
Sonny supports a complete local voice pipeline:
Microphone
↓
Wake Word / VAD
↓
Whisper
↓
Local LLM
↓
Tool Calls
↓
Kokoro TTS
↓
Speakers
Sonny uses llama.cpp to run GGUF language models locally.
The model can:
The LLM receives the registered tool schemas and decides when an action is required.
Sonny can look at the world around you.
With a supported vision model, Sonny can:
For example:
You:
"What do you see?"
Sonny:
"I can see..."
Vision requests are routed through the multimodal GGUF/mtmd pipeline when a compatible projector is available.
This is one of Sonny's core features.
Sonny can control a dedicated Chromium session through the Chrome DevTools Protocol.
It can:
Example:
"Open Google."
"Search for the latest NVIDIA GPU."
"Open the first result."
"Read this page and summarize it."
"Search YouTube for C++ tutorials."
"Play the first result."
The browser automation stack is implemented in C++ around CDP rather than depending on a Node.js or Python automation runtime.
Sonny currently exposes 16 registered tools to the LLM.
| Tool | Capability |
|---|---|
| Browser | Control Chromium |
| Google Search | Search Google |
| Web Search | Search the web |
| YouTube Search | Search YouTube |
| YouTube Video | Open/play videos |
| System Command | Execute system commands |
| Calculator | Mathematical expressions |
| Time | Current date/time |
| Clipboard | Read/write clipboard |
| File Operations | Read/write/list/delete files |
| File Explorer | Navigate files |
| Music Player | Control local media |
| Add Media Directory | Register media folders |
| Remove Media Directory | Remove media folders |
| List Media Library | Search media libraries |
| Camera | Photos and recordings |
The architecture is designed so additional tools can be registered without changing the core assistant loop.
Sonny can remember information locally.
The native C++ retrieval engine combines:
Your data is stored locally under:
%APPDATA%\Sonny\rag_data\
Example:
You:
"Remember that my favorite editor is VS Code."
Later:
"What editor do I use?"
Sonny:
"You prefer VS Code."
Sonny also contains an opt-in peer network for sharing aggregated knowledge between Sonny instances.
The system is designed around content-free aggregates rather than conversations.
The implementation includes:
See docs/VECTORS.md for the technical design.
Important: Review and configure the vectors settings according to your privacy requirements before enabling network synchronization.
Sonny isn't just a terminal window.
The application includes a DirectX 11 desktop overlay capable of rendering a GLB avatar with:
The repository currently includes Sonny and Iron Man avatar assets.
Sonny is designed around a local-first architecture.
The main AI pipeline runs directly on your computer:
Microphone
↓
Local Whisper
↓
Local LLM
↓
Local Tools
↓
Local Memory
↓
Local TTS
The running assistant does not require a Python server or a separate inference server.
Local components include:
The optional vectors system is separate and can be disabled.
Sonny uses a dedicated Chromium profile rather than your normal browser profile.
Credentials and autofill data are stored locally, with browser credentials protected using Windows DPAPI.
Sonny is intentionally built as a native C++ application.
The goal is to keep the major runtime components inside one application rather than building the assistant around a collection of Python services.
The project integrates:
llama.cppAt a high level:
┌─────────────────────────────────────────────────────────┐
│ SONNY APPLICATION │
│ │
│ ┌─────────────── AssistantOrchestrator ─────────────┐ │
│ │ │ │
│ │ Voice → LLM → Tools → Memory → Response │ │
│ │ │ │
│ └───────┬──────────┬───────────┬───────────┬───────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Audio Llama RAG Tools │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Whisper llama.cpp Embeddings Browser │
│ VAD GGUF BM25 Files │
│ Wake Word Vision Memory System │
│ Kokoro Vectors Camera │
│ │
│ DirectX 11 / UI │
└─────────────────────────────────────────────────────────┘
Microphone
│
▼
WASAPI
│
▼
Wake Word / Silero VAD
│
▼
Whisper / CTranslate2
│
▼
AssistantOrchestrator
│
├──────────────► RAG Memory
│
▼
llama.cpp
│
├──────────────► Tool
│ │
│ ▼
│ Tool Result
│ │
└────────────────────┘
│
▼
Kokoro TTS
│
▼
Speakers
src/
├── core/ # Assistant orchestration, settings, tray, camera
├── ai/ # LLM, TTS, RAG, embeddings
├── audio/ # Audio capture, Whisper, wake word, VAD
├── browser/ # Chromium/CDP automation
├── net/ # Vectors network
├── tools/ # Assistant tools
├── ui/ # Avatar and visual components
└── utils/ # Shared utilities
resources/
├── avatars/
├── images/
├── videos/
├── sounds/
└── models/
docs/
├── BUILD_CONFIG.md
└── VECTORS.md
installer/
└── Product.wxs
git clone https://github.com/ahmed19maher9/Sonny-Personal-Assistant.git
cd Sonny-Personal-Assistant
From a Visual Studio developer environment:
cmake.bat
The project uses the Visual Studio 2022 x64 generator.
Dependencies that are not already present are provisioned during configuration.
cd build\Release
personal_assistant.exe
On first launch, Sonny will ask you for the GGUF model path.
Sonny uses GGUF models through llama.cpp.
Configure your model in the first-run wizard or:
%APPDATA%\Sonny\config.ini
Example:
[Settings]
llama_model_path=C:\ai_models\your-model.gguf
kokoro_voice=af_heart
language=en
tts_speed=1.15
avatar_type=sonny
show_avatar=true
wake_word_enabled=false
camera_feed_enabled=true
For vision, place a compatible mmproj-*.gguf projector alongside the vision-capable GGUF model.
Sonny automatically selects the available inference backend.
| Hardware | Backend |
|---|---|
| NVIDIA | CUDA |
| AMD | Vulkan |
| Intel | Vulkan |
| CPU only | CPU |
CUDA and Vulkan support are configured automatically by default.
You can override this behavior with:
-DSONNY_LLAMA_CUDA=ON|OFF|AUTO
-DSONNY_LLAMA_VULKAN=ON|OFF|AUTO
-DSONNY_LLAMA_CUDA_ARCH=native
cmake.bat clean
cmake.bat
build.bat
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j
build_installer.bat
The installer requires WiX Toolset.
For deeper implementation details, see:
Important implementation areas include:
src/core/AssistantOrchestrator
src/ai/LlamaWrapper
src/ai/KokoroWrapper
src/ai/RagEngine
src/ai/EmbeddingEngine
src/audio/STTEngineWrapper
src/audio/WakeWordEngine
src/audio/VADEngine
src/browser/
src/net/
src/tools/
src/ui/
| Data | Location |
|---|---|
| Configuration | %APPDATA%\Sonny\config.ini |
| RAG / memory | %APPDATA%\Sonny\rag_data\ |
| Browser profile | %APPDATA%\Sonny\browser-profile |
| Browser credentials | %APPDATA%\Sonny\browser_profile.json |
| Screenshots | %APPDATA%\Sonny\screenshots |
| Downloads/PDFs | %USERPROFILE%\Downloads\Sonny |
| Vector node identity | %APPDATA%\Sonny\vectors\ |
Make sure the GGUF architecture is supported by the pinned llama.cpp version.
Check:
mic_gainWake-word detection is disabled by default.
Enable:
wake_word_enabled=true
and verify the OpenWakeWord model files exist.
Make sure Chrome or Edge is installed and that Sonny's dedicated browser profile isn't locked by another Sonny browser instance.
Check:
show_avatar=true
and verify that the GLB avatar asset is available.
The project is actively evolving.
Potential areas of development:
Have an idea?
Open an issue and describe what you want Sonny to be able to do.
Contributions are welcome.
Some useful areas:
A great first contribution is a new tool that gives Sonny a useful capability.
If Sonny is interesting to you:
Every star and contribution helps the project reach more developers interested in local AI and native C++.
Sonny integrates several open-source projects, including:
Please see the project's dependency/license documentation before redistributing builds.
See the repository license files for the applicable license terms for Sonny and its bundled dependencies.
Sonny is an experiment in what a local AI assistant can actually do when it is given access to your computer.
C++
96.9%
CMake
2.1%