IR is a local, offline voice controller for desktop music playback.
Current target platforms:
- Linux: full 11-command surface through MPRIS/playerctl
- Windows: validated 8-command voice surface through GSMTC, targeted WM_APPCOMMAND fallback, and Core Audio
- Languages: Russian and English
- Speech recognition: local Vosk
- Cloud services: none
Russian:
Ир, плейИр, паузаИр, следующийИр, предыдущийИр, трек— Linux onlyИр, повтор— Linux onlyИр, тишеИр, громчеИр, стопИр, музыкаИр, удалить— Linux only
English:
iris playiris pauseiris nextiris previousiris track— Linux onlyiris repeat— Linux onlyiris quieteriris louderiris stopiris musiciris delete— Linux only
Commands are exact and require the wake word.
| Action | Linux | Windows |
|---|---|---|
| play | yes | yes |
| pause | yes | yes |
| next | yes | yes |
| previous | yes | yes |
| track/status | yes | no |
| repeat current | yes | no |
| quieter | yes | yes |
| louder | yes | yes |
| stop as resumable pause | yes | yes |
| open player | yes | yes |
| delete current local file | yes | no |
Windows voice grammar deliberately omits status, repeat_current, and delete_current. The validated host exposed no active GSMTC session, and Windows file deletion remains unsupported.
Requirements include:
- Python
- Vosk model
playerctlwmctrl- a compatible MPRIS player
Example config:
config.linux.example.json
Default config path:
~/.config/argo/config.json
Install:
./install_dandi.shRequirements include:
- Python available on
PATH - Vosk model
- a GSMTC-compatible media player
Example config:
config.windows.example.json
Default config path:
%APPDATA%\IR\config.json
Install from PowerShell:
.\windows\install_windows.ps1Static + host readiness verification:
.\windows\verify_windows.ps1Remove only the IR autostart task:
.\windows\uninstall_windows_autostart.ps1The Windows installer creates a project-local virtual environment, installs the windows extra, creates a config if needed, and registers a per-user logon task using pythonw.exe.
Set IR_CONFIG to use a non-default config file.
The config contains separate model paths for ru and en.
Linux example:
{
"voice": {
"language": "ru",
"models": {
"ru": "~/.local/share/ir/vosk/vosk-model-small-ru-0.22",
"en": "~/.local/share/ir/vosk/vosk-model-small-en-us-0.15"
}
}
}Windows paths may use environment variables such as %LOCALAPPDATA%.
IR intentionally fails closed when a platform capability is unavailable.
Linux file deletion accepts only an existing local regular file inside the configured music library root and rejects remote URLs, symlinks, missing files, and paths outside the library.
Windows file deletion is not exposed in the voice grammar.
Run:
python -m unittest discover -vLint and formatting:
python -m ruff check argo tests tools
python -m ruff format --check argo tests toolsLinux behavior is derived from the stable private IR V5 baseline.
Windows transport commands prefer GSMTC and fall back to targeted WM_APPCOMMAND for play/pause/next/previous/stop when no GSMTC session exists. The stable Windows voice grammar excludes status, repeat, and delete.
Windows live validation is complete for the current 8-command voice surface.
License: MIT. Copyright (c) 2026 LK Digital Tools.
English wake name: Iris.
Validated Windows voice surface: play, pause, next, previous, quieter, louder, stop, music.