How architaggarwal24/friday works
F.R.I.D.A.Y. is a Windows-first multimodal desktop assistant. The main workflow accepts voice or UI input, routes it through LLM orchestration, and invokes handlers for tools or queued multi-step tasks; results can be spoken and surfaced in the Electron HUD. Separate branches cover productivity and desktop actions, safety and verification, voice, and persistent memory. Some subsystem links are documented or visible in the SOURCE INDEX rather than the excerpts, so uncertain implementation-level calls are omitted.
Main entry points: llm.py LLM and tools · handlers.py Intent handlers · main.py Backend entry · ws_server.py WebSocket bridge
Components 26
Input and UI
- Electron HUD
ui/renderer/App.jsx - WebSocket bridge
ui/ws_server.py
Assistant orchestration
- Backend entry
main.py - LLM and tools
brain/llm.py - Model routing
brain/model_router.py - Intent handlers
brain/handlers.py - Task planner
agent/planner.py - Task queue
agent/task_queue.py - Task executor
agent/executor.py
Actions and integrations
- Desktop and browser
actions - File operations
actions - Productivity tools
actions - Gmail
actions/gmail.py - Calendar
actions/calendar.py - Google OAuth
actions/google_auth.py
Memory and safety
- Risk classification
sentinel/core.py - Action verification
verifier/core.py - Long-term vault
memory/long_term.py - Encrypted local memory
memory/memory_store.py - Memory graph
memory/graph_export.py
Voice pipeline
- Voice input
voice/wake.py - VAD and STT
voice/stt.py - Speech output
voice/tts.py
Other components
- User
- LLM providers
- Google APIs
Connections 33
- User → Voice input: speaks
- Voice input → VAD and STT: captures speech
- Backend entry → VAD and STT: initializes
main.py - Backend entry → Voice input: initializes
main.py - User → Electron HUD: uses
- Electron HUD → WebSocket bridge: bridges commands
- Backend entry → WebSocket bridge: starts
main.py - WebSocket bridge → LLM and tools: routes UI input
ui/ws_server.py - VAD and STT → LLM and tools: provides transcript
- Backend entry → LLM and tools: starts assistant
main.py - LLM and tools → Model routing: selects provider
brain/model_router.py - Model routing → LLM providers: dispatches requests
- LLM and tools → Intent handlers: dispatches tools
brain/llm.py - LLM and tools → Task planner: plans tasks
brain/llm.py - LLM and tools → Task queue: submits tasks
brain/llm.py - Task queue → Task planner: requests plan
agent/task_queue.py - Task queue → Task executor: dispatches tasks
agent/task_queue.py - Intent handlers → Desktop and browser: invokes tools
brain/handlers.py - Intent handlers → File operations: invokes tools
brain/handlers.py - Intent handlers → Productivity tools: invokes tools
brain/handlers.py - Intent handlers → Gmail: invokes Gmail
brain/handlers.py - Intent handlers → Calendar: invokes calendar
brain/handlers.py - Gmail → Google OAuth: gets credentials
actions/gmail.py - Calendar → Google OAuth: gets credentials
actions/calendar.py - Google OAuth → Google APIs: authorizes API access
- LLM and tools → Risk classification: checks action risk
brain/llm.py - LLM and tools → Action verification: verifies results
brain/llm.py - LLM and tools → Long-term vault: reads and writes
brain/llm.py - LLM and tools → Encrypted local memory: stores conversation data
brain/llm.py - Encrypted local memory → Long-term vault: uses vault memory
memory/memory_store.py - Long-term vault → Memory graph: exports graph
memory/long_term.py - LLM and tools → Speech output: streams speech
brain/llm.py - Speech output → WebSocket bridge: reports audio state
voice/tts.py