Skip to content

feat: Voice Dev Terminal — multi-turn voice-controlled terminal via Local Link - #369

Open
hassan1731996 wants to merge 2 commits into
openhome-dev:devfrom
hassan1731996:feature/voice-dev-terminal
Open

feat: Voice Dev Terminal — multi-turn voice-controlled terminal via Local Link#369
hassan1731996 wants to merge 2 commits into
openhome-dev:devfrom
hassan1731996:feature/voice-dev-terminal

Conversation

@hassan1731996

Copy link
Copy Markdown
Contributor

What This Does

A voice-native developer terminal session for OpenHome. Say "terminal", then keep talking — run git commands, check disk space, find files, tail logs — all hands-free, staying in session across multiple commands.

Why It's Unique

Every other ability in this repo is either one-shot (execute one thing, exit) or uses external APIs. This is the only ability that uses exec_local_command() via the Local Link bridge — voice → LLM-generated shell command → real terminal execution on the user's machine → spoken LLM summary of the output.

Key Differentiators vs the openhome-local-link Template

openhome-local-link template Voice Dev Terminal
Session One command, exits Stays open for multiple commands
LLM context None — single turn Full conversation history
Output Raw string spoken verbatim LLM-summarized into natural speech
Dangerous commands No guard Voice confirmation required
Inline trigger No "terminal, git status" runs immediately

UX Flow

"terminal"
→ "Terminal ready. What do you need?"

"what's my git status?"
→ "Running that now."
→ "You're on branch main, 2 files modified and not staged."

"show recent commits"
→ "Running that now."
→ "3 commits in the last day. Latest: fix auth bug, 2 hours ago."

"remove the build folder"
→ "That runs: rm -rf ./build. Confirm?"
→ [user: "yes"] → "Running that now." → "Done."

"done"
→ "Got it."

Technical Notes

  • Uses exec_local_command(cmd, timeout=30.0) — requires openhome local start running on the user's machine
  • LLM (sync text_to_text_response) used twice per turn: command generation + output summarization
  • Conversation history passed to both LLM calls so relative references ("do it again with verbose") resolve correctly
  • Danger detection: token-set intersection on {rm, rmdir, sudo, shutdown, reboot, dd, mkfs, kill, pkill}
  • No persistent storage — terminal sessions are ephemeral by design
  • resume_normal_flow() called in finally covering all exit paths

Validator

✅ All checks passed!

@hassan1731996
hassan1731996 requested a review from a team as a code owner August 23, 2026 12:40
@github-actions

Copy link
Copy Markdown
Contributor

🔀 Branch Merge Check

PR direction: feature/voice-dev-terminaldev

Passedfeature/voice-dev-terminaldev is a valid merge direction

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

✅ Community PR Path Check — Passed

All changed files are inside the community/ folder. Looks good!

@github-actions github-actions Bot added the community-ability Community-contributed ability label Aug 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

✅ Ability Validation Passed

📋 Validating: community/voice-dev-terminal
  ✅ All checks passed!

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Lint Results

__init__.py — Empty as expected

Files linted: community/voice-dev-terminal/main.py

✅ Flake8 — Passed

✅ All checks passed!

@uzair401 uzair401 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @hassan1731996, thanks for submitting this PR.

We already have templates available for this functionality: Local Agents Controller, Hermes Controller, and OpenClaw Controller. They handle these tasks through a single WebSocket endpoint, which has already been implemented in Local Link.
Because of this, I think there may be some overlap with existing functionality. Please review these templates and clarify what unique capabilities this PR adds.

@Rizwan-095
Rizwan-095 deleted the branch openhome-dev:dev September 2, 2026 07:03
@Rizwan-095 Rizwan-095 closed this Sep 2, 2026
@Rizwan-095 Rizwan-095 reopened this Sep 2, 2026
@hassan1731996

Copy link
Copy Markdown
Contributor Author

Thanks for the review, Uzair. I've looked at all three templates you mentioned and updated the README to document the distinction clearly.

OpenClaw and Hermes are WebSocket bridges to persistent agent processes running on the user's machine — they're designed for agent-based delegation workflows and require the OpenClaw or Hermes software to be running. Voice Dev Terminal doesn't use that path at all.

openhome-local-link is the closest comparator, and the README now explicitly addresses it. The core differences:

  • Multi-turn session — the local-link template is one-shot (runs one command and exits); Voice Dev Terminal keeps the session open so the user can run multiple commands without re-triggering
  • Conversation history — commands are resolved in context ("do it again but verbose", "now in the src folder"), which requires carrying history across turns
  • Danger confirmation — tokens like rm, sudo, kill, dd trigger a voice confirmation step before the command runs; the template has no safety guard

I've pushed the updated README to the branch. Happy to adjust anything.

@hassan1731996
hassan1731996 force-pushed the feature/voice-dev-terminal branch from a88465f to 08522a2 Compare September 7, 2026 05:31
@hassan1731996
hassan1731996 requested a review from a team as a code owner September 7, 2026 05:31
Foreground ability that opens a persistent terminal session over the
OpenHome Local Link bridge. Speaks into a shell command via LLM, runs it
with exec_local_command(), and summarizes raw output into natural language.
Keeps conversation history across commands for context-aware follow-ups
("do it again with verbose"). Dangerous tokens (rm, sudo, shutdown, kill
etc.) require voice confirmation before execution.
@hassan1731996
hassan1731996 force-pushed the feature/voice-dev-terminal branch from 08522a2 to ffde53a Compare September 7, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-ability Community-contributed ability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants