How moritzkremb/jev-voice-browser works
voice-browser is a Node application for controlling a real Chromium browser through spoken or typed commands. Its main workflow streams transcript updates from the control page to a server-side controller, which sends page and conversation context to Jev, applies code-owned decision gates, then executes browser actions and refreshes the page snapshot. Major capabilities include navigation, web and site-specific search, element selection, typing, scrolling, tabs, history, corrections, and destructive-action confirmation. The graph reflects the documented workflow; some details rely on the README because source excerpts are partial.
Main entry points: controller.js Command controller · jev.js Jev request builder · browser.js Browser manager · index.html Control page
Components 16
User interface
- Control page
src/public/index.html - HTTP and WS server
src/server.js
Interpretation and policy
- Command controller
src/controller.js - Jev request builder
src/jev.js - Decision policy
src/policy.js - Candidate spans
src/spans.js - Questions and thresholds
src/constants.js
Browser interaction
- Browser manager
src/browser.js - Page snapshot
src/snapshot.js - Action executor
src/executor.js - Page feedback overlay
src/overlay.js
External services
- Web Speech API
- TypeSafe Jev
- Playwright Chromium
Other components
- User
- Microphone
Connections 22
- User → Microphone: speaks into
- Microphone → Web Speech API: captures audio
- Web Speech API → Control page: transcribes speech
- User → Control page: types commands
- Control page → HTTP and WS server: sends transcripts
- HTTP and WS server → Control page: sends state and events
- HTTP and WS server → Command controller: forwards commands
- Command controller → Jev request builder: requests interpretation
- Jev request builder → Candidate spans: extracts candidates
- Jev request builder → Questions and thresholds: builds questions
- Jev request builder → TypeSafe Jev: sends typed questions
- TypeSafe Jev → Jev request builder: returns answers
- Command controller → Decision policy: evaluates answers
- Decision policy → Candidate spans: normalizes URLs
- Decision policy → Questions and thresholds: uses thresholds
- Command controller → Browser manager: requests page state
- Browser manager → Page snapshot: builds snapshot
- Browser manager → Playwright Chromium: controls pages and tabs
- Command controller → Action executor: dispatches actions
- Action executor → Browser manager: operates active page
- Browser manager → Page feedback overlay: invokes page feedback
- Page feedback overlay → Playwright Chromium: renders highlights and prompts