voice_control
Rails engine for voice and typed commands: define actions in a Ruby DSL and Jev picks the matching command or page control.
Overview
voice_control adds voice and typed commands to Rails apps. You define actions in a Ruby DSL with descriptions and aliases, keep your own authorization, and users can say something like "show people" to open the users page. Jev matches the utterance to a command and its typed arguments, asks follow-up questions when needed, and can optionally discover page controls to click, fill, select, check or submit.
It ships a Shadow DOM widget, searchable help, Turbo support and JavaScript hooks, with no runtime database, migrations, Node build or CSS framework. Per the list, execution is signed and replay-protected, and a short-lived shared atomic cache is required in production. It targets Rails 8 and Ruby 3.2+, is MIT licensed, and is not yet released to RubyGems. Commands execute immediately once arguments are complete, so the README advises starting with safe actions.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which defined command matches what the user said? | — |
| Choice | Which page control should be clicked or filled? | — |
How it works
- Define commands in the Ruby initializer with aliases and authorization.
- The user speaks or types a command.
- Jev matches it to a command and arguments, asking follow-ups if needed.
- The command executes with signed, replay-protected execution.
Strengths
- Uses your existing Rails authorization.
- No database, migrations or Node build.
- Optional page discovery for existing UI.
Caveats
- Unreleased; install from source.
- No confirmation dialog; commands run immediately.
Getting started
Add gem "voice_control" (built locally), bundle install, bin/rails generate voice_control:install, and set JEV_API_KEY.At a glance
- Type
- Project
- Status
- prototype
- Language
- Ruby
- Runtime
- Rails engine
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Rails engine for voice and typed commands: define actions in a Ruby DSL and Jev picks the matching command or page control, with your own authorization and signed, replay-protected execution.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Which defined command or page control matches the user's words.
Is there a confirmation step?
No, commands run once arguments are complete; expose safe actions first.
Is it on RubyGems?
Not yet; build and install locally.
Related projects
Home Assistant conversation agent that maps Assist commands to built-in intents using a Jev fan-out of typed questions.
ProjectbetaPythonExperimental Hono router that matches HTTP requests to plain-language route descriptions using one Jev Noul per route.
ProjectprototypeTypeScriptHome Assistant conversation agent that resolves commands from one System One call with a fan-out of typed questions, asking when unsure.
ProjectprototypePythonJava SDK that lets natural language invoke tinystruct @Action methods, using Jev as a semantic dispatcher with confidence gates.
LibrarybetaJavaSymfony demo that triages French public-service requests with one Jev call each: intent choice, urgency score and bug noul.
AppprototypePHPelizaOS autonomous agent framework, listed for an optional TypeSafe System One HTTP adapter in its source.
ServiceproductionTypeScript