agent-cli 0.73.0__tar.gz → 0.75.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. {agent_cli-0.73.0 → agent_cli-0.75.0}/PKG-INFO +12 -8
  2. {agent_cli-0.73.0 → agent_cli-0.75.0}/README.md +7 -5
  3. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_extras.json +23 -14
  4. agent_cli-0.75.0/agent_cli/_requirements/whisper-transformers.txt +256 -0
  5. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/example-config.toml +4 -1
  6. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/extras.py +6 -2
  7. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/sync_extras.py +10 -1
  8. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/cli.py +45 -25
  9. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/__init__.py +8 -1
  10. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/mlx.py +10 -0
  11. agent_cli-0.75.0/agent_cli/server/whisper/backends/transformers.py +315 -0
  12. {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/transcribe-proxy.Dockerfile +1 -1
  13. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/install-extras.md +5 -5
  14. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/index.md +2 -2
  15. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/whisper.md +17 -5
  16. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/getting-started.md +3 -2
  17. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/linux.md +5 -0
  18. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/macos.md +4 -2
  19. {agent_cli-0.73.0 → agent_cli-0.75.0}/pyproject.toml +10 -6
  20. agent_cli-0.75.0/tests/test_transformers_backend.py +57 -0
  21. {agent_cli-0.73.0 → agent_cli-0.75.0}/uv.lock +9 -5
  22. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  23. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
  24. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/README.md +0 -0
  25. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/marketplace.json +0 -0
  26. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/plugin.json +0 -0
  27. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  28. {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  29. {agent_cli-0.73.0 → agent_cli-0.75.0}/.cursorrules +0 -0
  30. {agent_cli-0.73.0 → agent_cli-0.75.0}/.dockerignore +0 -0
  31. {agent_cli-0.73.0 → agent_cli-0.75.0}/.env.example +0 -0
  32. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/logo.svg +0 -0
  33. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/release-drafter.yml +0 -0
  34. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/renovate.json +0 -0
  35. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/scripts/check_extras_sync.py +0 -0
  36. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/scripts/sync_requirements.py +0 -0
  37. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/automerge.yml +0 -0
  38. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/docker.yml +0 -0
  39. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/docs.yml +0 -0
  40. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/markdown-code-runner.yml +0 -0
  41. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/pytest.yml +0 -0
  42. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/release-drafter.yml +0 -0
  43. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/release.yml +0 -0
  44. {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/toc.yaml +0 -0
  45. {agent_cli-0.73.0 → agent_cli-0.75.0}/.gitignore +0 -0
  46. {agent_cli-0.73.0 → agent_cli-0.75.0}/.jscpd.json +0 -0
  47. {agent_cli-0.73.0 → agent_cli-0.75.0}/.pre-commit-config.yaml +0 -0
  48. {agent_cli-0.73.0 → agent_cli-0.75.0}/.prompts/docs-review.md +0 -0
  49. {agent_cli-0.73.0 → agent_cli-0.75.0}/.prompts/pr-review.md +0 -0
  50. {agent_cli-0.73.0 → agent_cli-0.75.0}/CLAUDE.md +0 -0
  51. {agent_cli-0.73.0 → agent_cli-0.75.0}/LICENSE +0 -0
  52. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/__init__.py +0 -0
  53. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/__main__.py +0 -0
  54. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/.gitkeep +0 -0
  55. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/audio.txt +0 -0
  56. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
  57. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/kokoro.txt +0 -0
  58. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/llm.txt +0 -0
  59. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/memory.txt +0 -0
  60. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  61. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/piper.txt +0 -0
  62. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/rag.txt +0 -0
  63. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/server.txt +0 -0
  64. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/speed.txt +0 -0
  65. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/vad.txt +0 -0
  66. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/wyoming.txt +0 -0
  67. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_tools.py +0 -0
  68. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/__init__.py +0 -0
  69. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/_voice_agent_common.py +0 -0
  70. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/assistant.py +0 -0
  71. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/autocorrect.py +0 -0
  72. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/chat.py +0 -0
  73. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/memory/__init__.py +0 -0
  74. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/memory/add.py +0 -0
  75. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/memory/proxy.py +0 -0
  76. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/rag_proxy.py +0 -0
  77. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/speak.py +0 -0
  78. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/transcribe.py +0 -0
  79. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/transcribe_daemon.py +0 -0
  80. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/voice_edit.py +0 -0
  81. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/api.py +0 -0
  82. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/cli.py +0 -0
  83. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/config.py +0 -0
  84. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/config_cmd.py +0 -0
  85. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/constants.py +0 -0
  86. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/__init__.py +0 -0
  87. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/audio.py +0 -0
  88. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/audio_format.py +0 -0
  89. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/chroma.py +0 -0
  90. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/deps.py +0 -0
  91. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/openai_proxy.py +0 -0
  92. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/process.py +0 -0
  93. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/reranker.py +0 -0
  94. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/sse.py +0 -0
  95. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/transcription_logger.py +0 -0
  96. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/utils.py +0 -0
  97. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/vad.py +0 -0
  98. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/watch.py +0 -0
  99. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/__init__.py +0 -0
  100. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/cli.py +0 -0
  101. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
  102. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/aider.py +0 -0
  103. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/base.py +0 -0
  104. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/claude.py +0 -0
  105. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/codex.py +0 -0
  106. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  107. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
  108. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  109. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
  110. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
  111. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/registry.py +0 -0
  112. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/__init__.py +0 -0
  113. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/base.py +0 -0
  114. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/cursor.py +0 -0
  115. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/emacs.py +0 -0
  116. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/jetbrains.py +0 -0
  117. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/nano.py +0 -0
  118. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/neovim.py +0 -0
  119. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/registry.py +0 -0
  120. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/sublime.py +0 -0
  121. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/vim.py +0 -0
  122. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/vscode.py +0 -0
  123. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/zed.py +0 -0
  124. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/project.py +0 -0
  125. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/registry.py +0 -0
  126. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/skill/SKILL.md +0 -0
  127. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/skill/examples.md +0 -0
  128. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/__init__.py +0 -0
  129. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  130. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/base.py +0 -0
  131. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/gnome.py +0 -0
  132. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/iterm2.py +0 -0
  133. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/kitty.py +0 -0
  134. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/registry.py +0 -0
  135. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/tmux.py +0 -0
  136. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/warp.py +0 -0
  137. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/zellij.py +0 -0
  138. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/worktree.py +0 -0
  139. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/docs_gen.py +0 -0
  140. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/__init__.py +0 -0
  141. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/common.py +0 -0
  142. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/hotkeys.py +0 -0
  143. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/services.py +0 -0
  144. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/__init__.py +0 -0
  145. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_files.py +0 -0
  146. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_filters.py +0 -0
  147. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_git.py +0 -0
  148. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_indexer.py +0 -0
  149. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_ingest.py +0 -0
  150. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_persistence.py +0 -0
  151. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_prompt.py +0 -0
  152. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_retrieval.py +0 -0
  153. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_store.py +0 -0
  154. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_streaming.py +0 -0
  155. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_tasks.py +0 -0
  156. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/api.py +0 -0
  157. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/client.py +0 -0
  158. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/engine.py +0 -0
  159. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/entities.py +0 -0
  160. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/models.py +0 -0
  161. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/opts.py +0 -0
  162. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/py.typed +0 -0
  163. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/__init__.py +0 -0
  164. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_indexer.py +0 -0
  165. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_indexing.py +0 -0
  166. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_prompt.py +0 -0
  167. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_retriever.py +0 -0
  168. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_store.py +0 -0
  169. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_utils.py +0 -0
  170. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/api.py +0 -0
  171. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/client.py +0 -0
  172. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/engine.py +0 -0
  173. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/models.py +0 -0
  174. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  175. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/__init__.py +0 -0
  176. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  177. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  178. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  179. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  180. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  181. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  182. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  183. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  184. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  185. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  186. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  187. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  188. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  189. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  190. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  191. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
  192. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  193. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-piper.sh +0 -0
  194. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  195. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  196. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  197. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper.sh +0 -0
  198. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  199. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  200. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-linux.sh +0 -0
  201. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  202. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-macos.sh +0 -0
  203. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
  204. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  205. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/start-all-services.sh +0 -0
  206. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/__init__.py +0 -0
  207. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/common.py +0 -0
  208. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/model_manager.py +0 -0
  209. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/model_registry.py +0 -0
  210. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/proxy/__init__.py +0 -0
  211. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/proxy/api.py +0 -0
  212. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/streaming.py +0 -0
  213. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/__init__.py +0 -0
  214. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/api.py +0 -0
  215. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/__init__.py +0 -0
  216. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/base.py +0 -0
  217. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
  218. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/piper.py +0 -0
  219. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/model_manager.py +0 -0
  220. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/model_registry.py +0 -0
  221. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
  222. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/__init__.py +0 -0
  223. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/api.py +0 -0
  224. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/base.py +0 -0
  225. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  226. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/languages.py +0 -0
  227. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/model_manager.py +0 -0
  228. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/model_registry.py +0 -0
  229. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  230. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/__init__.py +0 -0
  231. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/_wyoming_utils.py +0 -0
  232. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/asr.py +0 -0
  233. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/llm.py +0 -0
  234. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/tts.py +0 -0
  235. {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/wake_word.py +0 -0
  236. {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/docker-compose.yml +0 -0
  237. {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/memory-proxy.Dockerfile +0 -0
  238. {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/rag-proxy.Dockerfile +0 -0
  239. {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/tts.Dockerfile +0 -0
  240. {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/whisper.Dockerfile +0 -0
  241. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/CNAME +0 -0
  242. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/architecture/index.md +0 -0
  243. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/architecture/memory.md +0 -0
  244. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/architecture/rag.md +0 -0
  245. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/assistant.md +0 -0
  246. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/autocorrect.md +0 -0
  247. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/chat.md +0 -0
  248. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/config.md +0 -0
  249. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/dev.md +0 -0
  250. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/index.md +0 -0
  251. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/install-hotkeys.md +0 -0
  252. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/install-services.md +0 -0
  253. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/memory.md +0 -0
  254. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/rag-proxy.md +0 -0
  255. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/transcribe-proxy.md +0 -0
  256. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/tts.md +0 -0
  257. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/speak.md +0 -0
  258. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/start-services.md +0 -0
  259. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/transcribe-daemon.md +0 -0
  260. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/transcribe.md +0 -0
  261. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/voice-edit.md +0 -0
  262. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/configuration.md +0 -0
  263. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/iOS_Shortcut_Guide.md +0 -0
  264. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/index.md +0 -0
  265. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/docker.md +0 -0
  266. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/index.md +0 -0
  267. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/nixos.md +0 -0
  268. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/windows.md +0 -0
  269. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/logo-clean.svg +0 -0
  270. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  271. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/run_markdown_code_runner.py +0 -0
  272. {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/system-integration.md +0 -0
  273. {agent_cli-0.73.0 → agent_cli-0.75.0}/example.agent-cli-config.toml +0 -0
  274. {agent_cli-0.73.0 → agent_cli-0.75.0}/justfile +0 -0
  275. {agent_cli-0.73.0 → agent_cli-0.75.0}/shell.nix +0 -0
  276. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/__init__.py +0 -0
  277. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/__init__.py +0 -0
  278. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_fix_my_text.py +0 -0
  279. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_interactive.py +0 -0
  280. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_interactive_extra.py +0 -0
  281. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_memory_add.py +0 -0
  282. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_speak.py +0 -0
  283. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_speak_e2e.py +0 -0
  284. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe.py +0 -0
  285. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_agent.py +0 -0
  286. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_daemon.py +0 -0
  287. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_e2e.py +0 -0
  288. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_recovery.py +0 -0
  289. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_tts_common.py +0 -0
  290. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_tts_common_extra.py +0 -0
  291. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_voice_agent_common.py +0 -0
  292. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_voice_edit.py +0 -0
  293. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_voice_edit_e2e.py +0 -0
  294. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_wake_word_assistant.py +0 -0
  295. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/conftest.py +0 -0
  296. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/__init__.py +0 -0
  297. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_audio_format.py +0 -0
  298. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_chroma.py +0 -0
  299. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_sse.py +0 -0
  300. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_vad.py +0 -0
  301. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_watch.py +0 -0
  302. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/__init__.py +0 -0
  303. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_cli.py +0 -0
  304. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_coding_agents.py +0 -0
  305. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_editors.py +0 -0
  306. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_project.py +0 -0
  307. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_terminals.py +0 -0
  308. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_verification.py +0 -0
  309. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_worktree.py +0 -0
  310. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/install/__init__.py +0 -0
  311. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/install/test_extras.py +0 -0
  312. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/__init__.py +0 -0
  313. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_api_health.py +0 -0
  314. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_api_integration_liveish.py +0 -0
  315. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_client.py +0 -0
  316. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_engine.py +0 -0
  317. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_files.py +0 -0
  318. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_filters.py +0 -0
  319. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_git_integration.py +0 -0
  320. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_indexer.py +0 -0
  321. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_memory_integration.py +0 -0
  322. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_proxy_passthrough.py +0 -0
  323. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_store.py +0 -0
  324. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_utils.py +0 -0
  325. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/__init__.py +0 -0
  326. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/audio.py +0 -0
  327. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/llm.py +0 -0
  328. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/wyoming.py +0 -0
  329. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/__init__.py +0 -0
  330. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_api.py +0 -0
  331. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_engine.py +0 -0
  332. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_history.py +0 -0
  333. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_indexer.py +0 -0
  334. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_indexing.py +0 -0
  335. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_rag_client.py +0 -0
  336. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_rag_integration_liveish.py +0 -0
  337. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  338. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_retriever.py +0 -0
  339. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_store.py +0 -0
  340. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_utils.py +0 -0
  341. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_api.py +0 -0
  342. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_api_integration.py +0 -0
  343. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_asr.py +0 -0
  344. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_asr_recovery.py +0 -0
  345. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_audio_e2e.py +0 -0
  346. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_cli.py +0 -0
  347. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_config.py +0 -0
  348. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_config_cmd.py +0 -0
  349. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_docs_gen.py +0 -0
  350. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_env_vars.py +0 -0
  351. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_json_output.py +0 -0
  352. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_llm.py +0 -0
  353. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_llm_gemini.py +0 -0
  354. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_memory_tools.py +0 -0
  355. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_mlx_backend.py +0 -0
  356. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_process_manager.py +0 -0
  357. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_requires_extras.py +0 -0
  358. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_server_streaming.py +0 -0
  359. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_server_tts.py +0 -0
  360. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_server_whisper.py +0 -0
  361. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_services.py +0 -0
  362. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_tools.py +0 -0
  363. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_tts.py +0 -0
  364. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_utils.py +0 -0
  365. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_wake_word.py +0 -0
  366. {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_wyoming_utils.py +0 -0
  367. {agent_cli-0.73.0 → agent_cli-0.75.0}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.73.0
3
+ Version: 0.75.0
4
4
  Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
5
5
  Project-URL: Homepage, https://github.com/basnijholt/agent-cli
6
6
  Author-email: Bas Nijholt <bas@nijho.lt>
@@ -46,8 +46,6 @@ Requires-Dist: soundfile>=0.12.0; extra == 'kokoro'
46
46
  Requires-Dist: transformers>=4.40.0; extra == 'kokoro'
47
47
  Provides-Extra: llm
48
48
  Requires-Dist: pydantic-ai-slim[duckduckgo,google,openai,vertexai]>=0.1.1; extra == 'llm'
49
- Provides-Extra: llm-core
50
- Requires-Dist: pydantic-ai-slim[google,openai]>=0.1.1; extra == 'llm-core'
51
49
  Provides-Extra: memory
52
50
  Requires-Dist: chromadb>=0.4.22; extra == 'memory'
53
51
  Requires-Dist: fastapi[standard]; extra == 'memory'
@@ -86,6 +84,10 @@ Requires-Dist: pytest-timeout; extra == 'test'
86
84
  Requires-Dist: pytest>=7.0.0; extra == 'test'
87
85
  Provides-Extra: vad
88
86
  Requires-Dist: silero-vad-lite>=0.2.1; extra == 'vad'
87
+ Provides-Extra: whisper-transformers
88
+ Requires-Dist: fastapi[standard]; extra == 'whisper-transformers'
89
+ Requires-Dist: torch>=2.0.0; extra == 'whisper-transformers'
90
+ Requires-Dist: transformers>=4.30.0; extra == 'whisper-transformers'
89
91
  Provides-Extra: wyoming
90
92
  Requires-Dist: wyoming>=1.5.2; extra == 'wyoming'
91
93
  Description-Content-Type: text/markdown
@@ -426,7 +428,7 @@ Our installation scripts automatically handle all dependencies:
426
428
  |---------|---------|-----------------|
427
429
  | **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
428
430
  | **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
429
- | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[whisper]"` |
431
+ | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[faster-whisper]"` |
430
432
  | **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
431
433
  | **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
432
434
  | **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
@@ -520,6 +522,7 @@ agent-cli install-extras rag memory vad
520
522
  • kokoro - Kokoro neural TTS engine
521
523
  • faster-whisper - Whisper ASR for CUDA/CPU
522
524
  • mlx-whisper - Whisper ASR for Apple Silicon
525
+ • whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
523
526
  • wyoming - Wyoming protocol for ASR/TTS servers
524
527
  • server - FastAPI server components
525
528
  • speed - Audio speed adjustment
@@ -536,7 +539,8 @@ agent-cli install-extras rag memory vad
536
539
 
537
540
  ╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
538
541
  │ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
539
- │ faster-whisper, mlx-whisper, wyoming, server, speed, llm
542
+ │ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
543
+ │ server, speed, llm │
540
544
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
541
545
  ╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
542
546
  │ --list -l Show available extras with descriptions (what each one enables) │
@@ -632,8 +636,8 @@ the `[defaults]` section of your configuration file.
632
636
  ```toml
633
637
  [defaults]
634
638
  # llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
635
- # asr_provider = "wyoming" # 'wyoming' or 'openai'
636
- # tts_provider = "wyoming" # 'wyoming', 'openai', or 'kokoro'
639
+ # asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
640
+ # tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
637
641
  # openai_api_key = "sk-..."
638
642
  # gemini_api_key = "..."
639
643
  ```
@@ -645,7 +649,7 @@ the `[defaults]` section of your configuration file.
645
649
  **Workflow:** This is a simple, one-shot command.
646
650
 
647
651
  1. It reads text from your system clipboard (or from a direct argument).
648
- 2. It sends the text to a local Ollama LLM with a prompt to perform only technical corrections.
652
+ 2. It sends the text to your configured LLM provider (default: Ollama) with a prompt to perform only technical corrections.
649
653
  3. The corrected text is copied back to your clipboard, replacing the original.
650
654
 
651
655
  **How to Use It:** This tool is ideal for integrating with a system-wide hotkey.
@@ -334,7 +334,7 @@ Our installation scripts automatically handle all dependencies:
334
334
  |---------|---------|-----------------|
335
335
  | **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
336
336
  | **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
337
- | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[whisper]"` |
337
+ | **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[faster-whisper]"` |
338
338
  | **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
339
339
  | **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
340
340
  | **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
@@ -428,6 +428,7 @@ agent-cli install-extras rag memory vad
428
428
  • kokoro - Kokoro neural TTS engine
429
429
  • faster-whisper - Whisper ASR for CUDA/CPU
430
430
  • mlx-whisper - Whisper ASR for Apple Silicon
431
+ • whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
431
432
  • wyoming - Wyoming protocol for ASR/TTS servers
432
433
  • server - FastAPI server components
433
434
  • speed - Audio speed adjustment
@@ -444,7 +445,8 @@ agent-cli install-extras rag memory vad
444
445
 
445
446
  ╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
446
447
  │ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
447
- │ faster-whisper, mlx-whisper, wyoming, server, speed, llm
448
+ │ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
449
+ │ server, speed, llm │
448
450
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
449
451
  ╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
450
452
  │ --list -l Show available extras with descriptions (what each one enables) │
@@ -540,8 +542,8 @@ the `[defaults]` section of your configuration file.
540
542
  ```toml
541
543
  [defaults]
542
544
  # llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
543
- # asr_provider = "wyoming" # 'wyoming' or 'openai'
544
- # tts_provider = "wyoming" # 'wyoming', 'openai', or 'kokoro'
545
+ # asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
546
+ # tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
545
547
  # openai_api_key = "sk-..."
546
548
  # gemini_api_key = "..."
547
549
  ```
@@ -553,7 +555,7 @@ the `[defaults]` section of your configuration file.
553
555
  **Workflow:** This is a simple, one-shot command.
554
556
 
555
557
  1. It reads text from your system clipboard (or from a direct argument).
556
- 2. It sends the text to a local Ollama LLM with a prompt to perform only technical corrections.
558
+ 2. It sends the text to your configured LLM provider (default: Ollama) with a prompt to perform only technical corrections.
557
559
  3. The corrected text is copied back to your clipboard, replacing the original.
558
560
 
559
561
  **How to Use It:** This tool is ideal for integrating with a system-wide hotkey.
@@ -6,21 +6,19 @@
6
6
  ]
7
7
  ],
8
8
  "faster-whisper": [
9
- "TODO: add description",
10
- []
9
+ "Whisper ASR via CTranslate2",
10
+ [
11
+ "faster_whisper"
12
+ ]
11
13
  ],
12
14
  "kokoro": [
13
- "TODO: add description",
14
- []
15
- ],
16
- "llm": [
17
- "LLM framework (pydantic-ai)",
15
+ "Kokoro neural TTS (GPU)",
18
16
  [
19
- "pydantic_ai"
17
+ "kokoro"
20
18
  ]
21
19
  ],
22
- "llm-core": [
23
- "Minimal LLM support for Docker images",
20
+ "llm": [
21
+ "LLM framework (pydantic-ai)",
24
22
  [
25
23
  "pydantic_ai"
26
24
  ]
@@ -34,12 +32,16 @@
34
32
  ]
35
33
  ],
36
34
  "mlx-whisper": [
37
- "TODO: add description",
38
- []
35
+ "Whisper ASR for Apple Silicon",
36
+ [
37
+ "mlx_whisper"
38
+ ]
39
39
  ],
40
40
  "piper": [
41
- "TODO: add description",
42
- []
41
+ "Piper TTS (CPU)",
42
+ [
43
+ "piper"
44
+ ]
43
45
  ],
44
46
  "rag": [
45
47
  "RAG proxy (ChromaDB, embeddings)",
@@ -66,6 +68,13 @@
66
68
  "silero_vad"
67
69
  ]
68
70
  ],
71
+ "whisper-transformers": [
72
+ "Whisper ASR via HuggingFace transformers",
73
+ [
74
+ "transformers",
75
+ "torch"
76
+ ]
77
+ ],
69
78
  "wyoming": [
70
79
  "Wyoming protocol support",
71
80
  [
@@ -0,0 +1,256 @@
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv export --extra whisper-transformers --no-dev --no-emit-project --no-hashes
3
+ annotated-doc==0.0.4
4
+ # via fastapi
5
+ annotated-types==0.7.0
6
+ # via pydantic
7
+ anyio==4.12.1
8
+ # via
9
+ # httpx
10
+ # starlette
11
+ # watchfiles
12
+ certifi==2026.1.4
13
+ # via
14
+ # httpcore
15
+ # httpx
16
+ # requests
17
+ # sentry-sdk
18
+ charset-normalizer==3.4.4
19
+ # via requests
20
+ click==8.3.1
21
+ # via
22
+ # rich-toolkit
23
+ # typer
24
+ # typer-slim
25
+ # uvicorn
26
+ colorama==0.4.6 ; sys_platform == 'win32'
27
+ # via
28
+ # click
29
+ # tqdm
30
+ # uvicorn
31
+ dnspython==2.8.0
32
+ # via email-validator
33
+ dotenv==0.9.9
34
+ # via agent-cli
35
+ email-validator==2.3.0
36
+ # via
37
+ # fastapi
38
+ # pydantic
39
+ fastapi==0.128.0
40
+ # via agent-cli
41
+ fastapi-cli==0.0.20
42
+ # via fastapi
43
+ fastapi-cloud-cli==0.10.1
44
+ # via fastapi-cli
45
+ fastar==0.8.0
46
+ # via fastapi-cloud-cli
47
+ filelock==3.20.3
48
+ # via
49
+ # huggingface-hub
50
+ # torch
51
+ # transformers
52
+ fsspec==2026.1.0
53
+ # via
54
+ # huggingface-hub
55
+ # torch
56
+ h11==0.16.0
57
+ # via
58
+ # httpcore
59
+ # uvicorn
60
+ hf-xet==1.2.0 ; platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
61
+ # via huggingface-hub
62
+ httpcore==1.0.9
63
+ # via httpx
64
+ httptools==0.7.1
65
+ # via uvicorn
66
+ httpx==0.28.1
67
+ # via
68
+ # agent-cli
69
+ # fastapi
70
+ # fastapi-cloud-cli
71
+ huggingface-hub==0.36.0
72
+ # via
73
+ # tokenizers
74
+ # transformers
75
+ idna==3.11
76
+ # via
77
+ # anyio
78
+ # email-validator
79
+ # httpx
80
+ # requests
81
+ jinja2==3.1.6
82
+ # via
83
+ # fastapi
84
+ # torch
85
+ markdown-it-py==4.0.0
86
+ # via rich
87
+ markupsafe==3.0.3
88
+ # via jinja2
89
+ mdurl==0.1.2
90
+ # via markdown-it-py
91
+ mpmath==1.3.0
92
+ # via sympy
93
+ networkx==3.6.1
94
+ # via torch
95
+ numpy==2.3.5
96
+ # via transformers
97
+ nvidia-cublas-cu12==12.8.4.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
98
+ # via
99
+ # nvidia-cudnn-cu12
100
+ # nvidia-cusolver-cu12
101
+ # torch
102
+ nvidia-cuda-cupti-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
103
+ # via torch
104
+ nvidia-cuda-nvrtc-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
105
+ # via torch
106
+ nvidia-cuda-runtime-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
107
+ # via torch
108
+ nvidia-cudnn-cu12==9.10.2.21 ; platform_machine == 'x86_64' and sys_platform == 'linux'
109
+ # via torch
110
+ nvidia-cufft-cu12==11.3.3.83 ; platform_machine == 'x86_64' and sys_platform == 'linux'
111
+ # via torch
112
+ nvidia-cufile-cu12==1.13.1.3 ; platform_machine == 'x86_64' and sys_platform == 'linux'
113
+ # via torch
114
+ nvidia-curand-cu12==10.3.9.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
115
+ # via torch
116
+ nvidia-cusolver-cu12==11.7.3.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
117
+ # via torch
118
+ nvidia-cusparse-cu12==12.5.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
119
+ # via
120
+ # nvidia-cusolver-cu12
121
+ # torch
122
+ nvidia-cusparselt-cu12==0.7.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
123
+ # via torch
124
+ nvidia-nccl-cu12==2.27.5 ; platform_machine == 'x86_64' and sys_platform == 'linux'
125
+ # via torch
126
+ nvidia-nvjitlink-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
127
+ # via
128
+ # nvidia-cufft-cu12
129
+ # nvidia-cusolver-cu12
130
+ # nvidia-cusparse-cu12
131
+ # torch
132
+ nvidia-nvshmem-cu12==3.3.20 ; platform_machine == 'x86_64' and sys_platform == 'linux'
133
+ # via torch
134
+ nvidia-nvtx-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
135
+ # via torch
136
+ packaging==25.0
137
+ # via
138
+ # huggingface-hub
139
+ # transformers
140
+ psutil==7.2.1 ; sys_platform == 'win32'
141
+ # via agent-cli
142
+ pydantic==2.12.5
143
+ # via
144
+ # agent-cli
145
+ # fastapi
146
+ # fastapi-cloud-cli
147
+ # pydantic-extra-types
148
+ # pydantic-settings
149
+ pydantic-core==2.41.5
150
+ # via pydantic
151
+ pydantic-extra-types==2.11.0
152
+ # via fastapi
153
+ pydantic-settings==2.12.0
154
+ # via fastapi
155
+ pygments==2.19.2
156
+ # via rich
157
+ pyperclip==1.11.0
158
+ # via agent-cli
159
+ python-dotenv==1.2.1
160
+ # via
161
+ # dotenv
162
+ # pydantic-settings
163
+ # uvicorn
164
+ python-multipart==0.0.21
165
+ # via fastapi
166
+ pyyaml==6.0.3
167
+ # via
168
+ # huggingface-hub
169
+ # transformers
170
+ # uvicorn
171
+ regex==2026.1.15
172
+ # via transformers
173
+ requests==2.32.5
174
+ # via
175
+ # huggingface-hub
176
+ # transformers
177
+ rich==14.2.0
178
+ # via
179
+ # agent-cli
180
+ # rich-toolkit
181
+ # typer
182
+ # typer-slim
183
+ rich-toolkit==0.17.1
184
+ # via
185
+ # fastapi-cli
186
+ # fastapi-cloud-cli
187
+ rignore==0.7.6
188
+ # via fastapi-cloud-cli
189
+ safetensors==0.7.0
190
+ # via transformers
191
+ sentry-sdk==2.49.0
192
+ # via fastapi-cloud-cli
193
+ setproctitle==1.3.7
194
+ # via agent-cli
195
+ setuptools==80.9.0 ; python_full_version >= '3.12'
196
+ # via torch
197
+ shellingham==1.5.4
198
+ # via
199
+ # typer
200
+ # typer-slim
201
+ starlette==0.50.0
202
+ # via fastapi
203
+ sympy==1.14.0
204
+ # via torch
205
+ tokenizers==0.22.2
206
+ # via transformers
207
+ torch==2.9.1
208
+ # via agent-cli
209
+ tqdm==4.67.1
210
+ # via
211
+ # huggingface-hub
212
+ # transformers
213
+ transformers==4.57.5
214
+ # via agent-cli
215
+ triton==3.5.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
216
+ # via torch
217
+ typer==0.21.1
218
+ # via
219
+ # agent-cli
220
+ # fastapi-cli
221
+ # fastapi-cloud-cli
222
+ typer-slim==0.21.1
223
+ # via agent-cli
224
+ typing-extensions==4.15.0
225
+ # via
226
+ # anyio
227
+ # fastapi
228
+ # huggingface-hub
229
+ # pydantic
230
+ # pydantic-core
231
+ # pydantic-extra-types
232
+ # rich-toolkit
233
+ # starlette
234
+ # torch
235
+ # typer
236
+ # typer-slim
237
+ # typing-inspection
238
+ typing-inspection==0.4.2
239
+ # via
240
+ # pydantic
241
+ # pydantic-settings
242
+ urllib3==2.3.0
243
+ # via
244
+ # requests
245
+ # sentry-sdk
246
+ uvicorn==0.40.0
247
+ # via
248
+ # fastapi
249
+ # fastapi-cli
250
+ # fastapi-cloud-cli
251
+ uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
252
+ # via uvicorn
253
+ watchfiles==1.1.1
254
+ # via uvicorn
255
+ websockets==15.0.1
256
+ # via uvicorn
@@ -13,7 +13,10 @@
13
13
  [defaults]
14
14
 
15
15
  # --- Provider Selection ---
16
- # Select the default provider for each service ("ollama"/"openai"/"gemini" for LLM, "wyoming"/"openai" for ASR).
16
+ # Select the default provider for each service.
17
+ # LLM: "ollama", "openai", or "gemini"
18
+ # ASR: "wyoming", "openai", or "gemini"
19
+ # TTS: "wyoming", "openai", "kokoro", or "gemini"
17
20
  llm-provider = "ollama" # "local" still works as a deprecated alias
18
21
  tts-provider = "wyoming"
19
22
 
@@ -63,7 +63,9 @@ def _install_via_uv_tool(extras: list[str], *, quiet: bool = False) -> bool:
63
63
  """Reinstall agent-cli via uv tool with the specified extras."""
64
64
  extras_str = ",".join(extras)
65
65
  package_spec = f"agent-cli[{extras_str}]"
66
- python_version = f"{sys.version_info.major}.{sys.version_info.minor}"
66
+ # Cap at Python 3.13 for compatibility - some deps (e.g., silero-vad-lite) don't support 3.14 yet
67
+ major, minor = sys.version_info[:2]
68
+ python_version = f"{major}.{min(minor, 13)}"
67
69
  cmd = ["uv", "tool", "install", package_spec, "--force", "--python", python_version]
68
70
  if quiet:
69
71
  cmd.append("-q")
@@ -130,7 +132,8 @@ def install_extras(
130
132
  list[str] | None,
131
133
  typer.Argument(
132
134
  help="Extras to install: `rag`, `memory`, `vad`, `audio`, `piper`, `kokoro`, "
133
- "`faster-whisper`, `mlx-whisper`, `wyoming`, `server`, `speed`, `llm`",
135
+ "`faster-whisper`, `mlx-whisper`, `whisper-transformers`, `wyoming`, `server`, "
136
+ "`speed`, `llm`",
134
137
  ),
135
138
  ] = None,
136
139
  list_extras: Annotated[
@@ -161,6 +164,7 @@ def install_extras(
161
164
  - `kokoro` - Kokoro neural TTS engine
162
165
  - `faster-whisper` - Whisper ASR for CUDA/CPU
163
166
  - `mlx-whisper` - Whisper ASR for Apple Silicon
167
+ - `whisper-transformers` - Whisper ASR via HuggingFace transformers (safetensors)
164
168
  - `wyoming` - Wyoming protocol for ASR/TTS servers
165
169
  - `server` - FastAPI server components
166
170
  - `speed` - Audio speed adjustment
@@ -33,7 +33,6 @@ EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
33
33
  "openai": ("OpenAI API provider", ["openai"]),
34
34
  "gemini": ("Google Gemini provider", ["google.genai"]),
35
35
  "llm": ("LLM framework (pydantic-ai)", ["pydantic_ai"]),
36
- "llm-core": ("Minimal LLM support for Docker images", ["pydantic_ai"]),
37
36
  # Feature extras
38
37
  "rag": ("RAG proxy (ChromaDB, embeddings)", ["chromadb", "pydantic_ai"]),
39
38
  "memory": ("Long-term memory proxy", ["chromadb", "yaml", "pydantic_ai"]),
@@ -44,6 +43,16 @@ EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
44
43
  "tts-kokoro": ("Kokoro neural TTS", ["kokoro"]),
45
44
  "server": ("FastAPI server components", ["fastapi"]),
46
45
  "speed": ("Audio speed adjustment (audiostretchy)", ["audiostretchy"]),
46
+ # Whisper backends
47
+ "faster-whisper": ("Whisper ASR via CTranslate2", ["faster_whisper"]),
48
+ "mlx-whisper": ("Whisper ASR for Apple Silicon", ["mlx_whisper"]),
49
+ "whisper-transformers": (
50
+ "Whisper ASR via HuggingFace transformers",
51
+ ["transformers", "torch"],
52
+ ),
53
+ # TTS backends
54
+ "piper": ("Piper TTS (CPU)", ["piper"]),
55
+ "kokoro": ("Kokoro neural TTS (GPU)", ["kokoro"]),
47
56
  }
48
57
 
49
58
 
@@ -157,36 +157,43 @@ def _download_tts_models(
157
157
  def _check_whisper_deps(backend: str, *, download_only: bool = False) -> None:
158
158
  """Check that Whisper dependencies are available."""
159
159
  _check_server_deps()
160
- if download_only:
161
- if not _has("faster_whisper"):
160
+ if backend == "mlx":
161
+ if not _has("mlx_whisper"):
162
162
  err_console.print(
163
- "[bold red]Error:[/bold red] faster-whisper is required for --download-only. "
164
- "Run: [cyan]pip install agent-cli\\[whisper][/cyan] "
165
- "or [cyan]uv sync --extra whisper[/cyan]",
163
+ "[bold red]Error:[/bold red] MLX Whisper backend requires mlx-whisper. "
164
+ "Run: [cyan]pip install mlx-whisper[/cyan]",
166
165
  )
167
166
  raise typer.Exit(1)
168
167
  return
169
168
 
170
- if backend == "mlx":
171
- if not _has("mlx_whisper"):
169
+ if backend == "transformers":
170
+ if not _has("transformers") or not _has("torch"):
172
171
  err_console.print(
173
- "[bold red]Error:[/bold red] MLX Whisper backend requires mlx-whisper. "
174
- "Run: [cyan]pip install mlx-whisper[/cyan]",
172
+ "[bold red]Error:[/bold red] Transformers backend requires transformers and torch. "
173
+ "Run: [cyan]pip install agent-cli\\[whisper-transformers][/cyan] "
174
+ "or [cyan]uv sync --extra whisper-transformers[/cyan]",
175
175
  )
176
176
  raise typer.Exit(1)
177
177
  return
178
178
 
179
179
  if not _has("faster_whisper"):
180
- err_console.print(
181
- "[bold red]Error:[/bold red] Whisper dependencies not installed. "
182
- "Run: [cyan]pip install agent-cli\\[whisper][/cyan] "
183
- "or [cyan]uv sync --extra whisper[/cyan]",
184
- )
180
+ if download_only:
181
+ err_console.print(
182
+ "[bold red]Error:[/bold red] faster-whisper is required for --download-only. "
183
+ "Run: [cyan]pip install agent-cli\\[faster-whisper][/cyan] "
184
+ "or [cyan]uv sync --extra faster-whisper[/cyan]",
185
+ )
186
+ else:
187
+ err_console.print(
188
+ "[bold red]Error:[/bold red] Whisper dependencies not installed. "
189
+ "Run: [cyan]pip install agent-cli\\[faster-whisper][/cyan] "
190
+ "or [cyan]uv sync --extra faster-whisper[/cyan]",
191
+ )
185
192
  raise typer.Exit(1)
186
193
 
187
194
 
188
195
  @app.command("whisper")
189
- @requires_extras("server", "faster-whisper|mlx-whisper", "wyoming")
196
+ @requires_extras("server", "faster-whisper|mlx-whisper|whisper-transformers", "wyoming")
190
197
  def whisper_cmd( # noqa: PLR0912, PLR0915
191
198
  model: Annotated[
192
199
  list[str] | None,
@@ -299,7 +306,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
299
306
  "-b",
300
307
  help=(
301
308
  "Inference backend: `auto` (faster-whisper on CUDA/CPU, MLX on Apple Silicon), "
302
- "`faster-whisper`, `mlx`"
309
+ "`faster-whisper`, `mlx`, `transformers` (HuggingFace, supports safetensors)"
303
310
  ),
304
311
  ),
305
312
  ] = "auto",
@@ -331,7 +338,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
331
338
  # Setup Rich logging for consistent output
332
339
  setup_rich_logging(log_level)
333
340
 
334
- valid_backends = ("auto", "faster-whisper", "mlx")
341
+ valid_backends = ("auto", "faster-whisper", "mlx", "transformers")
335
342
  if backend not in valid_backends:
336
343
  err_console.print(
337
344
  f"[bold red]Error:[/bold red] --backend must be one of: {', '.join(valid_backends)}",
@@ -339,7 +346,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
339
346
  raise typer.Exit(1)
340
347
 
341
348
  resolved_backend = backend
342
- if backend == "auto" and not download_only:
349
+ if backend == "auto":
343
350
  from agent_cli.server.whisper.backends import detect_backend # noqa: PLC0415
344
351
 
345
352
  resolved_backend = detect_backend()
@@ -370,13 +377,26 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
370
377
  for model_name in model:
371
378
  console.print(f" Downloading [cyan]{model_name}[/cyan]...")
372
379
  try:
373
- from faster_whisper import WhisperModel # noqa: PLC0415
374
-
375
- _ = WhisperModel(
376
- model_name,
377
- device="cpu", # Don't need GPU for download
378
- download_root=str(cache_dir) if cache_dir else None,
379
- )
380
+ if resolved_backend == "transformers":
381
+ from agent_cli.server.whisper.backends.transformers import ( # noqa: PLC0415
382
+ download_model as download_transformers_model,
383
+ )
384
+
385
+ download_transformers_model(model_name, cache_dir=cache_dir)
386
+ elif resolved_backend == "mlx":
387
+ from agent_cli.server.whisper.backends.mlx import ( # noqa: PLC0415
388
+ download_model as download_mlx_model,
389
+ )
390
+
391
+ download_mlx_model(model_name)
392
+ else:
393
+ from faster_whisper import WhisperModel # noqa: PLC0415
394
+
395
+ _ = WhisperModel(
396
+ model_name,
397
+ device="cpu", # Don't need GPU for download
398
+ download_root=str(cache_dir) if cache_dir else None,
399
+ )
380
400
  console.print(f" [green]✓[/green] Downloaded {model_name}")
381
401
  except Exception as e:
382
402
  err_console.print(f" [red]✗[/red] Failed to download {model_name}: {e}")
@@ -17,7 +17,7 @@ from agent_cli.server.whisper.backends.base import (
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
20
- BackendType = Literal["faster-whisper", "mlx", "auto"]
20
+ BackendType = Literal["faster-whisper", "mlx", "transformers", "auto"]
21
21
 
22
22
 
23
23
  def detect_backend() -> Literal["faster-whisper", "mlx"]:
@@ -76,6 +76,13 @@ def create_backend(
76
76
 
77
77
  return FasterWhisperBackend(config)
78
78
 
79
+ if backend_type == "transformers":
80
+ from agent_cli.server.whisper.backends.transformers import ( # noqa: PLC0415
81
+ TransformersWhisperBackend,
82
+ )
83
+
84
+ return TransformersWhisperBackend(config)
85
+
79
86
  msg = f"Unknown backend type: {backend_type}"
80
87
  raise ValueError(msg)
81
88
 
@@ -55,6 +55,16 @@ def _resolve_mlx_model_name(model_name: str) -> str:
55
55
  return model_name
56
56
 
57
57
 
58
+ def download_model(model_name: str) -> str:
59
+ """Download an MLX Whisper model and return the resolved repo name."""
60
+ import mlx.core as mx # noqa: PLC0415
61
+ from mlx_whisper.transcribe import ModelHolder # noqa: PLC0415
62
+
63
+ resolved_model = _resolve_mlx_model_name(model_name)
64
+ ModelHolder.get_model(resolved_model, mx.float16)
65
+ return resolved_model
66
+
67
+
58
68
  def _pcm_to_float(audio_bytes: bytes) -> NDArray[np.float32]:
59
69
  """Convert 16-bit PCM audio bytes to float32 array normalized to [-1, 1]."""
60
70
  import numpy as np # noqa: PLC0415