jev-voice-browser
Node app that controls Chromium by voice, asking Jev a dozen typed questions per partial transcript to act before you finish.
Overview
voice-browser controls a real, headed Chromium window through Playwright by voice. Speech is streamed word by word from Chrome's Web Speech API to a small Node server. On every partial transcript, debounced by 200 ms, the server snapshots the page (up to 100 elements with short ids) and sends one Jev request (jev-1.13.0) with nine to eleven typed questions: intent, target element, site, whether the command is complete, whether it is even addressed to the assistant, and whether it is destructive. Answers arrive in about 250 to 350 ms, and code decides whether to act, wait, ask or ignore, often acting before the sentence is finished.
Jev never generates text: search queries, text to type and URLs are extracted by code as candidate spans and Jev only picks one, which is copied verbatim. Thresholds live in a constants file. A control page shows live probability bars, the decision, latency and cost, and the controlled window shows highlights, toasts and numbered candidates. Real calls cost about $0.0002 each per the README. It needs Node 20+ and Chrome or Edge for the microphone.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | What is the user's intent (navigate, click, search, type, ...)?(inferred) | — |
| Choice | Which page element is the target? | — |
| Yes / no | Is the command complete yet? | — |
| Yes / no | Is this command destructive? | — |
How it works
- Stream partial transcripts to the server
- Snapshot the page and extract candidate spans in code
- One Jev request with about ten typed questions
- Policy thresholds decide act, wait, ask or ignore; Playwright executes
Strengths
- Acts on partial speech for low perceived latency
- Never generates text; picks code-extracted spans
- Asks before destructive actions
- README estimates about $0.0002 per call
Caveats
- Requires Chrome or Edge for Web Speech API
- Many calls per sentence add up over time
- Demo-grade; no accuracy evaluation reported
Getting started
git clone, npm install, npx playwright install chromium, cp .env.example .env (add key), ./run.sh, then open http://localhost:8787 in Chrome.At a glance
- Type
- Project
- Status
- prototype
- Language
- JavaScript
- Runtime
- Node + Playwright
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Controls a Playwright browser by sending incremental speech transcripts to Jev.
logicrw/awesome-jev-projectsControl a real browser by voice. Jev (TypeSafe System One) decides intent +…
wh000wh000/awesome-jev-liveMaps partial speech transcripts to browser intents and observed targets, with code deciding whether to act, wait, or ask.
cobanov/awesome-jevControl a real browser by voice. Jev (TypeSafe System One) decides intent + target in ~300 ms per spoken word; Playwright acts — often before you finish the sentence.
hellogumbo/awesome-jevVoice-controlled Chromium: on each partial transcript, one Jev request judges intent, target element, and whether the command is complete or destructive.
MrJev/awesome-jev
Frequently asked questions
How can it act before I finish speaking?
It asks Jev on every partial transcript, including whether the command is already complete.
Does Jev write search queries?
No. Code extracts candidate spans and Jev selects one, copied verbatim.
What about risky actions?
A destructive-action question lets the policy ask before acting.
Related projects
RAM-efficient Rust coding-agent harness, listed as using Jev decisions for memory pruning, browser navigation and voice routing.
ServiceproductionRustLocal web and voice interface for Codex and Claude sessions in tmux, where Jev interprets each request and Python performs it.
ProjectprototypePythonElectron app for controlling Windows 10/11 by Turkish or English speech, using OpenAI Realtime, Jev decisions, UI Automation and Playwright.
ProjectprototypeTypeScriptZero-build local playground for Jev with browser-agent, intent routing and context-pruning presets, including a Playwright agent.
AppbetaJavaScriptChrome extension page guide whose small typed decisions (request type, element to click, match or not) use Jev or local Laya.
ProjectbetaJavaScriptHome Assistant conversation agent that maps Assist commands to built-in intents using a Jev fan-out of typed questions.
ProjectbetaPython