Overview
Virgil is an AI personal assistant that runs locally on my home network, loosely modeled on Jarvis and Friday from Iron Man. It has a main interface built for laptops and a dedicated mobile page that turns a phone into a microphone when the main screen is running on a TV.
Virgil running live: weather, hourly forecast, synced calendar, curated news, and market data on one screen.
Why I Built It
As I got more involved in classes and clubs, it became obvious I was running out of time and needed to claw some back. One of the biggest inefficiencies in my morning was checking my calendar, weather, and commute times one app at a time. It is faster to just ask out loud than to open each app and read it myself. Now I can set reminders and schedule responses, and every morning Virgil automatically gives me a rundown of my day: weather, commute time, schedule, and county, state, and national news. The other reason I built it is trust. I never used an Alexa or a Google Home because I had no idea how much data they collected or where it went. With Virgil, I do.
What It Is
Virgil pulls from several APIs to keep everything I want in the morning on one screen at once, and uses WebSockets to keep all my devices in sync. The back-end is Flask and Flask-SocketIO, the front-end is vanilla HTML, and voice output runs through ElevenLabs TTS. Claude runs the whole thing in the background with internet access, so I can ask complex follow-up questions about news stories or weather instead of just reading headlines. The latest addition is an Obsidian-based memory system that Virgil reads from to give better, more context-aware responses across sessions.
The Future
Next, I plan to migrate Virgil onto a dedicated machine like a Raspberry Pi. That would let it stay on constantly and keep updating its memory without me worrying about my laptop sleeping or shutting down. Now that the functionality is proven, the design focus has shifted to cutting latency, which has been the hardest part of the project to get right.