PresentLocal-First Desktop Assistant

Jarvis

A local-first macOS desktop assistant for chat, voice dictation, web research, Notion workflows, and browser automation.

Jarvis runs from the menu bar and combines a React chat workspace with an Electron main process that owns tools, storage, and system integrations. It supports local Ollama models alongside hosted providers through OpenRouter and OpenCode Go, so work can stay on-device or move to the cloud when needed.

Beyond chat, Jarvis handles cross-app voice dictation with a personal vocabulary that learns from recurring corrections, web search and page fetching, Notion search and page updates, document attachments with Markdown and math rendering, and a separate Jarvis-owned browser workspace for assisted browsing.

01

Desktop Shell & Chat Workspace

Designed the macOS tray app around an Electron main process for providers, tools, IPC, and storage, with a React + TypeScript renderer for conversations, model selection, attachments, and usage views. Kept the preload bridge narrow so renderer access to privileged APIs stayed explicit and context-isolated.

02

Voice Pipeline & Personal Vocabulary

Built a FastAPI sidecar for voice activity detection, transcription, and transcript refinement, with optional local Parakeet runtime install or OpenRouter fallback. Added correction observation and personal dictionary flows so recurring dictation fixes become vocabulary guidance and scoped replacement rules instead of one-off edits.

03

Tools, Research & Browser Control

Wired tool dispatch for web search, public page fetching with SSRF protections, Notion search and page/database actions, and a Jarvis-owned browser workspace that reports page state after each action. Focused on local-first defaults while keeping hosted providers available when cloud keys are configured.

Built an Electron + React + TypeScript desktop app with a secure preload bridge, provider orchestration for local and hosted models, and local usage tracking for tokens and response performance.

Implemented voice dictation through a FastAPI sidecar with voice activity detection, transcription, and transcript refinement, plus correction learning that grows a personal vocabulary over time.

Added tool integrations for web research, Notion workflows, document inspection, and Browser Control in an isolated Chromium profile rather than the user's everyday browser.

Building Jarvis taught me how much desktop assistants live or die on process boundaries and permissions. Local models, voice, and tools only feel seamless when Electron, the sidecar, and macOS APIs are designed around those constraints from the start.