How ace-haxxed/nova-arch works
NOVA is a desktop AI assistant that turns text or voice requests into model-directed tool actions. The primary workflow runs from the conversation UI through the agent loop, model streaming, tool selection and desktop command wrappers, then returns results for the next agent turn and logs actions. Major capabilities include screen and input control, files and browser tasks, voice and wake-word support, settings/onboarding, and local memory. Rust provides the desktop command and Linux platform layer. Some feature wiring is documented only in the README; the graph avoids asserting unsampled call paths.
Main entry points: agent.ts Agent loop · desktop.ts Desktop tools · useAgent.ts Agent interface · mod.rs Linux dispatch
Components 22
User interaction
- App shell
src/App.tsx - Conversation UI
src/components/desktop/DesktopLayout.tsx - Settings and onboarding
src/components/Settings/SettingsPanel.tsx - Voice and wake word
src/hooks/useVoice.ts - Agent interface
src/hooks/useAgent.ts
Agent and models
- Conversation state
src/store/conversation.ts - Agent loop
src/core/agent.ts - Context assembly
src/core/context.ts - Conversation and memory
src/core/memory.ts - Model providers
src/core/llm.ts - Provider transport
src/lib/llmTransport.ts - Tool selection
src/platform/index.ts
Desktop capabilities
- Desktop tools
src/platform/desktop.ts - Vision tools
src/core/tools/vision.ts - Web and timers
src/core/tools/web.ts - Desktop commands
src-tauri/src/commands
Linux platform and state
- Linux dispatch
src-tauri/src/platform/mod.rs - Session detection
src-tauri/src/platform/detect.rs - App state
src-tauri/src/state.rs
Other components
- User
- Model backend
- Linux desktop
Connections 22
- User → Conversation UI: requests
README.md - App shell → Conversation UI: renders
src/App.tsx - App shell → Settings and onboarding: opens
src/App.tsx - Conversation UI → Agent interface: submits
src/hooks/useAgent.ts - Agent interface → Agent loop: runs
src/hooks/useAgent.ts - Agent interface → Conversation state: updates
src/hooks/useAgent.ts - Conversation state → Conversation and memory: loads and saves
src/store/conversation.ts - Agent loop → Conversation and memory: recalls and trims
src/core/agent.ts - Agent loop → Context assembly: assembles context
src/core/context.ts - Agent loop → Model providers: requests completion
src/core/agent.ts - Model providers → Provider transport: streams through
src/core/llm.ts - Provider transport → Model backend: sends requests
- Agent loop → Tool selection: gets tools
src/core/agent.ts - Tool selection → Desktop tools: dispatches to
src/platform/index.ts - Desktop tools → Desktop commands: invokes
README.md - Desktop tools → Vision tools: includes
src/platform/desktop.ts - Desktop tools → Web and timers: includes
src/platform/desktop.ts - Desktop commands → Linux dispatch: uses platform helpers
src-tauri/src/commands/apps.rs - Linux dispatch → Session detection: selects session path
README.md - Linux dispatch → Linux desktop: controls desktop
README.md - Voice and wake word → Desktop commands: captures microphone
README.md - Settings and onboarding → App state: configures