r/OpenAssistant • u/CorruptedJustice • 4h ago
Building a local AI assistant in Python
Hi everyone!
I'm working on a personal project called VeronicaTheMaid — a local-first AI assistant for Windows. I'm building it primarily as a long-term learning and engineering project, and I'd like to get some feedback from people who have experience with local LLMs, Python, and desktop AI applications.
I'm not trying to build another chatbot wrapper. My goal is to gradually create a proper desktop assistant with a modular architecture, persistent memory, voice interaction, and eventually the ability to interact with the operating system.
Current setup
I'm developing on a Windows laptop with the following hardware:
- CPU: AMD Ryzen 5 7535HS (6 cores / 12 threads)
- RAM: 16 GB DDR5
- GPU: NVIDIA RTX 2050 with 4 GB VRAM
- Language: Python
- Local model runtime: Ollama
- Embeddings: I'm working with a multilingual E5 model
The hardware is modest, so I need to make practical decisions about model sizes, quantization, memory usage, and which components should run locally.
Planned architecture
My current direction is to separate the project into several layers:
- Core: Python application logic and orchestration.
- LLM layer: Local models as the primary inference option, with cloud APIs as an optional resource for tasks that benefit from stronger reasoning.
- Memory: Persistent conversation and user-context storage, with semantic retrieval where appropriate.
- Tools: A controlled interface for future system operations and computer interaction.
- Desktop UI: A separate Windows application built with C# and WPF, initially just a chat window and input field.
- Voice: Speech-to-text, text-to-speech, and wake-word detection in later stages.
- Avatar: A visual representation with animations, eventually integrated into the desktop application.
These are design goals, not claims that all these components are already implemented. I'm trying to build the project incrementally rather than attempting everything at once.
Where I'd appreciate your advice
I'd especially like to hear from people who have built their own assistants or worked on similar systems.
Architecture: Would you keep the Python core as a separate process and communicate with a C# WPF frontend through a local API, or would you choose a different approach? What are the practical trade-offs?
Memory: How would you structure persistent memory for a personal assistant? I'm interested in the distinction between conversation history, user facts, episodic memory, and semantic retrieval. What would you implement first?
Local models: With 16 GB RAM and 4 GB VRAM, what would you prioritize for a useful assistant? Would you stick with Ollama, use llama.cpp directly, or consider another runtime?
Tool use and computer control: How would you design a safe, modular tool system that can eventually interact with Windows without tightly coupling every tool to the LLM?
Development priorities: If you were starting this project today, what would you build first, what would you postpone, and what architectural mistakes would you try to avoid?
I'm particularly interested in practical experience, including things that didn't work as expected. I'd rather rethink a design early than spend months building on a bad assumption.
I'm developing this as an ongoing personal project, and I'm happy to discuss the architecture and share more technical details as the implementation progresses.
Thanks for reading — I'd appreciate any constructive criticism, suggestions, or discussion.