VOYA 是一款語音優先的瀏覽器代理,為不便使用滑鼠或鍵盤的人設計。基於 Strands Agents SDK 與 Amazon Bedrock 架構。
AI 翻譯
VOYA is a voice-first browser agent for people who can't easily use a mouse or keyboard. Built on the Strands Agents SDK and Amazon Bedrock.
外掛JavaScript · PythonGitHub @aayush64x上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
You say the goal, VOYA does the clicks.
Siri can tell you the weather. It can't fill out your benefits form. VOYA can.
VOYA is a voice-first browser agent for people who can't easily use a mouse or keyboard, such as someone with a spinal cord injury, limited mobility or a motor impairment. You tell it what you want done. VOYA finds the right website, reads the page, clicks, types and fills in forms. It reads each form question to you, so you can answer out loud, and it never submits anything without your yes.檢視完整 README ↗You say the goal, VOYA does the clicks.
Siri can tell you the weather. It can't fill out your benefits form. VOYA can.
VOYA is a voice-first browser agent for people who can't easily use a mouse or keyboard, such as someone with a spinal cord injury, limited mobility or a motor impairment. You tell it what you want done. VOYA finds the right website, reads the page, clicks, types and fills in forms. It reads each form question to you, so you can answer out loud, and it never submits anything without your yes.
Built at Hack Midwest 2026 for the AWS challenge, best use of the Strands Agents SDK. VOYA runs on a Strands agent with Claude models on Amazon Bedrock.
Start on an empty tab and press the one button (or tap Control twice):
You: "What benefits do I qualify for?"
.gov eligibility checker, and clicks Start.While it works, the side panel shows every step the Strands agent takes, live.
Built for people who can't use a mouse
stop, stop everything, cancel, quiet, repeat, help, start over.Does whole tasks, on sites it has never seen
Safe and private by design
flowchart LR
U["You (voice or text)"] --> P["Side panel<br/>(Chrome extension)"]
P <-->|WebSocket, localhost| B["Python backend"]
B --> R{"Router"}
R -->|"scroll down, click 5"| D["Direct command<br/>no AI"]
R -->|"search cats, ask ChatGPT …"| S["Site memory<br/>instant, no AI"]
R -->|"everything else"| A["Strands agent<br/>Claude on Amazon Bedrock"]
A -->|tools| T["read_page · read_text · act<br/>fill_form · ask_user"]
D & S & T --> P
P -->|"page commands"| C["Content script<br/>in the web page"]
| Part | Where | Job |
|---|---|---|
| Side panel | extension/sidepanel/ | The one button, mascot, status, questions, Strands steps and stats, settings |
| Content script | extension/content.js | Numbers every button, link and field; clicks, types, reads text; finds search and chat boxes; waits for pages to settle |
| Background worker | extension/background.js | Relays commands to the active tab and reports page loads |
| Backend | backend/server.py | WebSocket bridge, command queue, page-load waiting, control words |
| Agent | backend/agent.py | Routing, the Strands agent, its tools and hooks, site memory, instant commands |
| Voice | backend/transcribe.py | Records from the system microphone and turns speech into text |
Three tiers, so simple things are instant:
click 5, scroll down, back, new tab youtube, settings overlay off.search cat videos, play wheelchair transfers on youtube, ask ChatGPT what is the biggest animal.| Strands feature | What VOYA does with it |
|---|---|
Agent loop + custom tools (@tool) | The agent plans each step itself using read_page, read_text, act (click, type, search, ask, open, new tab), fill_form and ask_user. Nothing is scripted per site. |
Hooks: BeforeToolCallEvent | Safety guard: before any click on a submit-type button, the hook asks the user, and cancels the tool call unless they say yes. |
Hooks: Before/AfterToolCallEvent | Stream every tool call to the side panel live, with status and timing. |
| Human in the loop | ask_user pauses the agent for missing details and confirmations, answered by voice or typing. |
| Structured output | New websites are classified into a typed SiteProfile (name, type, summary) for site memory. |
Cancellation (agent.cancel()) | stop and new commands interrupt the agent mid-task, cleanly. |
Metrics (event_loop_metrics) | After each task the panel shows Strands' own numbers: model calls, tool calls, tokens, cache hit rate and time. |
Prompt caching (CacheConfig) | Long form tasks reuse the cached prompt, tools and conversation. |
| Amazon Bedrock models | Claude Haiku 4.5 and Claude Sonnet 4.5, chosen per request. |
| Say | What happens |
|---|---|
| "What benefits do I qualify for?" | Finds the official checker and walks you through it |
| "What's the weather in Chicago tomorrow?" | Finds a forecast and tells you |
| "search cat videos" | Searches the site you're on (or Google) instantly |
| "play wheelchair transfers on YouTube" | Searches YouTube and opens a video |
| "ask ChatGPT what is the biggest animal" | Opens ChatGPT and sends the question |
| "open Claude in a new tab" | Opens it in a new tab |
| "read it out loud for me" | Reads the page or the last answer aloud |
scroll down · back · click 5 · list | Direct commands, instant |
stop | Interrupts the current task |
stop everything / start over | Stops the task, clears the queue, closes any question |
cancel | "No" at a question (nothing is submitted); otherwise stop |
quiet · repeat · help | Stop speaking · say it again · list the commands |
settings overlay on/off | Show or hide the numbers on the page |
settings speak on/off | Always read replies aloud, or only when asked |
You need:
us-east-11. Install
git clone https://github.com/aayush64x/voya.git
cd voya
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r backend/requirements.txt
2. Add AWS credentials
cp .env.example backend/.env # then fill in your keys
backend/.env is gitignored. Temporary credentials (for example from AWS Workshop Studio) expire after a few hours; paste fresh ones and restart the backend.
3. Start the backend
python backend/agent.py
Wait for [agent] Ready. The first time you use the mic, allow microphone access for your terminal app (on a Mac: System Settings → Privacy & Security → Microphone).
4. Load the extension
chrome://extensions and turn on Developer mode.extension/ folder.Shortcuts
python -m pytest tests -q # backend: routing, tools, safety hook, page waiting, site memory, control words
npm install && npm test # extension: page reading, forms, typing, the side panel and bridge
backend/
agent.py routing, Strands agent, tools, hooks, site memory, instant commands
server.py WebSocket bridge, command queue, page-load waiting, control words
site_memory.py what each site is and where its search/chat boxes are
transcribe.py microphone capture and speech-to-text
extension/
manifest.json MV3 manifest, permissions, shortcut
background.js relays commands to the active tab, page-load events
content.js reads and acts on the page
sidepanel/ the VOYA panel: one button, mascot, states, steps, settings
js/bridge.js connects the panel to the backend
tests/ pytest and jest suites
docs/ design brief, SSA questionnaire walkthrough, test log
Built at Hack Midwest 2026 by Rylan Begaye, Aayush Nakarmi and Ari Lee
Side panel design: Soft Glass Companion, by our teammate.
Powered by the Strands Agents SDK, Claude on Amazon Bedrock, and Three.js for the mascot.