agent-cli 0.64.2__tar.gz → 0.65.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 (342) hide show
  1. agent_cli-0.65.0/.claude-plugin/marketplace.json +21 -0
  2. {agent_cli-0.64.2 → agent_cli-0.65.0}/.claude-plugin/plugin.json +4 -1
  3. agent_cli-0.65.0/.github/workflows/docker.yml +142 -0
  4. {agent_cli-0.64.2 → agent_cli-0.65.0}/PKG-INFO +21 -1
  5. {agent_cli-0.64.2 → agent_cli-0.65.0}/README.md +20 -0
  6. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/cli.py +1 -28
  7. {agent_cli-0.64.2 → agent_cli-0.65.0}/docker/docker-compose.yml +21 -0
  8. agent_cli-0.65.0/docker/transcription-proxy.Dockerfile +51 -0
  9. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/dev.md +11 -15
  10. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/server/transcription-proxy.md +23 -0
  11. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/installation/docker.md +19 -14
  12. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_cli.py +0 -23
  13. agent_cli-0.64.2/.claude-plugin/marketplace.json +0 -8
  14. agent_cli-0.64.2/.github/workflows/docker-tts.yml +0 -72
  15. agent_cli-0.64.2/.github/workflows/docker-whisper.yml +0 -72
  16. {agent_cli-0.64.2 → agent_cli-0.65.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  17. {agent_cli-0.64.2 → agent_cli-0.65.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
  18. {agent_cli-0.64.2 → agent_cli-0.65.0}/.claude-plugin/README.md +0 -0
  19. {agent_cli-0.64.2 → agent_cli-0.65.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  20. {agent_cli-0.64.2 → agent_cli-0.65.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  21. {agent_cli-0.64.2 → agent_cli-0.65.0}/.cursorrules +0 -0
  22. {agent_cli-0.64.2 → agent_cli-0.65.0}/.env.example +0 -0
  23. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/logo.svg +0 -0
  24. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/release-drafter.yml +0 -0
  25. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/renovate.json +0 -0
  26. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/automerge.yml +0 -0
  27. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/docs.yml +0 -0
  28. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/markdown-code-runner.yml +0 -0
  29. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/pytest.yml +0 -0
  30. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/release-drafter.yml +0 -0
  31. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/release.yml +0 -0
  32. {agent_cli-0.64.2 → agent_cli-0.65.0}/.github/workflows/toc.yaml +0 -0
  33. {agent_cli-0.64.2 → agent_cli-0.65.0}/.gitignore +0 -0
  34. {agent_cli-0.64.2 → agent_cli-0.65.0}/.jscpd.json +0 -0
  35. {agent_cli-0.64.2 → agent_cli-0.65.0}/.pre-commit-config.yaml +0 -0
  36. {agent_cli-0.64.2 → agent_cli-0.65.0}/.prompts/docs-review.md +0 -0
  37. {agent_cli-0.64.2 → agent_cli-0.65.0}/.prompts/pr-review.md +0 -0
  38. {agent_cli-0.64.2 → agent_cli-0.65.0}/CLAUDE.md +0 -0
  39. {agent_cli-0.64.2 → agent_cli-0.65.0}/LICENSE +0 -0
  40. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/__init__.py +0 -0
  41. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/__main__.py +0 -0
  42. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/_tools.py +0 -0
  43. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/__init__.py +0 -0
  44. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/_voice_agent_common.py +0 -0
  45. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/assistant.py +0 -0
  46. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/autocorrect.py +0 -0
  47. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/chat.py +0 -0
  48. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/memory/__init__.py +0 -0
  49. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/memory/add.py +0 -0
  50. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/memory/proxy.py +0 -0
  51. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/rag_proxy.py +0 -0
  52. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/speak.py +0 -0
  53. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/transcribe.py +0 -0
  54. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/transcribe_daemon.py +0 -0
  55. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/agents/voice_edit.py +0 -0
  56. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/api.py +0 -0
  57. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/cli.py +0 -0
  58. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/config.py +0 -0
  59. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/config_cmd.py +0 -0
  60. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/constants.py +0 -0
  61. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/__init__.py +0 -0
  62. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/audio.py +0 -0
  63. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/audio_format.py +0 -0
  64. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/chroma.py +0 -0
  65. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/deps.py +0 -0
  66. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/openai_proxy.py +0 -0
  67. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/process.py +0 -0
  68. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/reranker.py +0 -0
  69. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/sse.py +0 -0
  70. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/transcription_logger.py +0 -0
  71. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/utils.py +0 -0
  72. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/vad.py +0 -0
  73. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/core/watch.py +0 -0
  74. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/__init__.py +0 -0
  75. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
  76. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/aider.py +0 -0
  77. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/base.py +0 -0
  78. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/claude.py +0 -0
  79. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/codex.py +0 -0
  80. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  81. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
  82. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  83. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
  84. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
  85. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/registry.py +0 -0
  86. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/__init__.py +0 -0
  87. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/base.py +0 -0
  88. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/cursor.py +0 -0
  89. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/emacs.py +0 -0
  90. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/jetbrains.py +0 -0
  91. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/nano.py +0 -0
  92. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/neovim.py +0 -0
  93. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/registry.py +0 -0
  94. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/sublime.py +0 -0
  95. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/vim.py +0 -0
  96. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/vscode.py +0 -0
  97. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/editors/zed.py +0 -0
  98. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/project.py +0 -0
  99. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/registry.py +0 -0
  100. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/skill/SKILL.md +0 -0
  101. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/skill/examples.md +0 -0
  102. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/__init__.py +0 -0
  103. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  104. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/base.py +0 -0
  105. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/gnome.py +0 -0
  106. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/iterm2.py +0 -0
  107. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/kitty.py +0 -0
  108. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/registry.py +0 -0
  109. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/tmux.py +0 -0
  110. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/warp.py +0 -0
  111. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/terminals/zellij.py +0 -0
  112. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/dev/worktree.py +0 -0
  113. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/docs_gen.py +0 -0
  114. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/example-config.toml +0 -0
  115. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/install/__init__.py +0 -0
  116. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/install/common.py +0 -0
  117. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/install/hotkeys.py +0 -0
  118. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/install/services.py +0 -0
  119. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/__init__.py +0 -0
  120. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_files.py +0 -0
  121. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_filters.py +0 -0
  122. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_git.py +0 -0
  123. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_indexer.py +0 -0
  124. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_ingest.py +0 -0
  125. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_persistence.py +0 -0
  126. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_prompt.py +0 -0
  127. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_retrieval.py +0 -0
  128. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_store.py +0 -0
  129. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_streaming.py +0 -0
  130. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/_tasks.py +0 -0
  131. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/api.py +0 -0
  132. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/client.py +0 -0
  133. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/engine.py +0 -0
  134. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/entities.py +0 -0
  135. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/memory/models.py +0 -0
  136. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/opts.py +0 -0
  137. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/py.typed +0 -0
  138. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/__init__.py +0 -0
  139. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/_indexer.py +0 -0
  140. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/_indexing.py +0 -0
  141. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/_prompt.py +0 -0
  142. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/_retriever.py +0 -0
  143. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/_store.py +0 -0
  144. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/_utils.py +0 -0
  145. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/api.py +0 -0
  146. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/client.py +0 -0
  147. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/engine.py +0 -0
  148. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/rag/models.py +0 -0
  149. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  150. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/__init__.py +0 -0
  151. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  152. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  153. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  154. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  155. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  156. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  157. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  158. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  159. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  160. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  161. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  162. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  163. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  164. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  165. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  166. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
  167. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  168. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-piper.sh +0 -0
  169. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  170. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  171. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  172. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper.sh +0 -0
  173. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  174. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  175. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/setup-linux.sh +0 -0
  176. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  177. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/setup-macos.sh +0 -0
  178. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
  179. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  180. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/scripts/start-all-services.sh +0 -0
  181. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/__init__.py +0 -0
  182. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/cli.py +0 -0
  183. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/common.py +0 -0
  184. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/model_manager.py +0 -0
  185. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/model_registry.py +0 -0
  186. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/proxy/__init__.py +0 -0
  187. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/proxy/api.py +0 -0
  188. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/streaming.py +0 -0
  189. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/__init__.py +0 -0
  190. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/api.py +0 -0
  191. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/backends/__init__.py +0 -0
  192. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/backends/base.py +0 -0
  193. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
  194. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/backends/piper.py +0 -0
  195. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/model_manager.py +0 -0
  196. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/model_registry.py +0 -0
  197. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
  198. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/__init__.py +0 -0
  199. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/api.py +0 -0
  200. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/__init__.py +0 -0
  201. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/base.py +0 -0
  202. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  203. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/mlx.py +0 -0
  204. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/languages.py +0 -0
  205. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/model_manager.py +0 -0
  206. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/model_registry.py +0 -0
  207. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  208. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/services/__init__.py +0 -0
  209. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/services/_wyoming_utils.py +0 -0
  210. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/services/asr.py +0 -0
  211. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/services/llm.py +0 -0
  212. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/services/tts.py +0 -0
  213. {agent_cli-0.64.2 → agent_cli-0.65.0}/agent_cli/services/wake_word.py +0 -0
  214. {agent_cli-0.64.2 → agent_cli-0.65.0}/docker/tts.Dockerfile +0 -0
  215. {agent_cli-0.64.2 → agent_cli-0.65.0}/docker/whisper.Dockerfile +0 -0
  216. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/CNAME +0 -0
  217. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/architecture/index.md +0 -0
  218. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/architecture/memory.md +0 -0
  219. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/architecture/rag.md +0 -0
  220. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/assistant.md +0 -0
  221. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/autocorrect.md +0 -0
  222. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/chat.md +0 -0
  223. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/config.md +0 -0
  224. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/index.md +0 -0
  225. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/install-hotkeys.md +0 -0
  226. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/install-services.md +0 -0
  227. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/memory.md +0 -0
  228. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/rag-proxy.md +0 -0
  229. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/server/index.md +0 -0
  230. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/server/tts.md +0 -0
  231. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/server/whisper.md +0 -0
  232. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/speak.md +0 -0
  233. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/start-services.md +0 -0
  234. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/transcribe-daemon.md +0 -0
  235. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/transcribe.md +0 -0
  236. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/commands/voice-edit.md +0 -0
  237. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/configuration.md +0 -0
  238. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/getting-started.md +0 -0
  239. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/iOS_Shortcut_Guide.md +0 -0
  240. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/index.md +0 -0
  241. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/installation/index.md +0 -0
  242. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/installation/linux.md +0 -0
  243. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/installation/macos.md +0 -0
  244. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/installation/nixos.md +0 -0
  245. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/installation/windows.md +0 -0
  246. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/logo-clean.svg +0 -0
  247. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  248. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/run_markdown_code_runner.py +0 -0
  249. {agent_cli-0.64.2 → agent_cli-0.65.0}/docs/system-integration.md +0 -0
  250. {agent_cli-0.64.2 → agent_cli-0.65.0}/example.agent-cli-config.toml +0 -0
  251. {agent_cli-0.64.2 → agent_cli-0.65.0}/justfile +0 -0
  252. {agent_cli-0.64.2 → agent_cli-0.65.0}/pyproject.toml +0 -0
  253. {agent_cli-0.64.2 → agent_cli-0.65.0}/shell.nix +0 -0
  254. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/__init__.py +0 -0
  255. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/__init__.py +0 -0
  256. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_fix_my_text.py +0 -0
  257. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_interactive.py +0 -0
  258. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_interactive_extra.py +0 -0
  259. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_memory_add.py +0 -0
  260. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_speak.py +0 -0
  261. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_speak_e2e.py +0 -0
  262. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_transcribe.py +0 -0
  263. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_transcribe_agent.py +0 -0
  264. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_transcribe_daemon.py +0 -0
  265. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_transcribe_e2e.py +0 -0
  266. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_transcribe_recovery.py +0 -0
  267. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_tts_common.py +0 -0
  268. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_tts_common_extra.py +0 -0
  269. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_voice_agent_common.py +0 -0
  270. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_voice_edit.py +0 -0
  271. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_voice_edit_e2e.py +0 -0
  272. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/agents/test_wake_word_assistant.py +0 -0
  273. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/conftest.py +0 -0
  274. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/core/__init__.py +0 -0
  275. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/core/test_audio_format.py +0 -0
  276. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/core/test_chroma.py +0 -0
  277. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/core/test_sse.py +0 -0
  278. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/core/test_vad.py +0 -0
  279. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/core/test_watch.py +0 -0
  280. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/__init__.py +0 -0
  281. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_coding_agents.py +0 -0
  282. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_editors.py +0 -0
  283. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_project.py +0 -0
  284. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_terminals.py +0 -0
  285. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_verification.py +0 -0
  286. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/dev/test_worktree.py +0 -0
  287. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/__init__.py +0 -0
  288. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_api_health.py +0 -0
  289. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_api_integration_liveish.py +0 -0
  290. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_client.py +0 -0
  291. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_engine.py +0 -0
  292. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_files.py +0 -0
  293. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_filters.py +0 -0
  294. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_git_integration.py +0 -0
  295. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_indexer.py +0 -0
  296. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_memory_integration.py +0 -0
  297. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_proxy_passthrough.py +0 -0
  298. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_store.py +0 -0
  299. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/memory/test_utils.py +0 -0
  300. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/mocks/__init__.py +0 -0
  301. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/mocks/audio.py +0 -0
  302. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/mocks/llm.py +0 -0
  303. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/mocks/wyoming.py +0 -0
  304. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/__init__.py +0 -0
  305. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_api.py +0 -0
  306. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_engine.py +0 -0
  307. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_history.py +0 -0
  308. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_indexer.py +0 -0
  309. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_indexing.py +0 -0
  310. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_rag_client.py +0 -0
  311. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_rag_integration_liveish.py +0 -0
  312. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  313. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_retriever.py +0 -0
  314. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_store.py +0 -0
  315. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/rag/test_utils.py +0 -0
  316. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_api.py +0 -0
  317. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_api_integration.py +0 -0
  318. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_asr.py +0 -0
  319. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_asr_recovery.py +0 -0
  320. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_audio_e2e.py +0 -0
  321. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_cli.py +0 -0
  322. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_config.py +0 -0
  323. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_config_cmd.py +0 -0
  324. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_docs_gen.py +0 -0
  325. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_env_vars.py +0 -0
  326. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_json_output.py +0 -0
  327. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_llm.py +0 -0
  328. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_llm_gemini.py +0 -0
  329. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_memory_tools.py +0 -0
  330. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_mlx_backend.py +0 -0
  331. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_process_manager.py +0 -0
  332. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_server_streaming.py +0 -0
  333. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_server_tts.py +0 -0
  334. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_server_whisper.py +0 -0
  335. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_services.py +0 -0
  336. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_tools.py +0 -0
  337. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_tts.py +0 -0
  338. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_utils.py +0 -0
  339. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_wake_word.py +0 -0
  340. {agent_cli-0.64.2 → agent_cli-0.65.0}/tests/test_wyoming_utils.py +0 -0
  341. {agent_cli-0.64.2 → agent_cli-0.65.0}/uv.lock +0 -0
  342. {agent_cli-0.64.2 → agent_cli-0.65.0}/zensical.toml +0 -0
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "agent-cli",
3
+ "owner": {
4
+ "name": "Bas Nijholt",
5
+ "github": "basnijholt"
6
+ },
7
+ "metadata": {
8
+ "description": "Parallel development environment manager using git worktrees",
9
+ "repository": "https://github.com/basnijholt/agent-cli",
10
+ "homepage": "https://github.com/basnijholt/agent-cli",
11
+ "documentation": "https://github.com/basnijholt/agent-cli/blob/main/docs/commands/dev.md",
12
+ "keywords": ["git", "worktree", "parallel", "agents", "development", "claude", "ai"],
13
+ "license": "MIT"
14
+ },
15
+ "plugins": [
16
+ {
17
+ "name": "agent-cli-dev",
18
+ "source": "./.claude-plugin"
19
+ }
20
+ ]
21
+ }
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "agent-cli-dev",
3
3
  "version": "1.0.0",
4
- "author": "basnijholt",
4
+ "author": {
5
+ "name": "Bas Nijholt",
6
+ "github": "basnijholt"
7
+ },
5
8
  "description": "Spawn parallel AI coding agents in isolated git worktrees. Creates isolated development environments with automatic project setup, letting you work on multiple features simultaneously with different AI agents (Claude, Codex, Gemini, Aider).",
6
9
  "skills": ["./skills/agent-cli-dev"]
7
10
  }
@@ -0,0 +1,142 @@
1
+ name: Publish Docker Images
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: ["Upload Python Package"]
6
+ types: [completed]
7
+ workflow_dispatch:
8
+
9
+ env:
10
+ REGISTRY: ghcr.io
11
+
12
+ jobs:
13
+ # Images with cuda/cpu targets (whisper, tts)
14
+ build-multi-target:
15
+ runs-on: ubuntu-latest
16
+ if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
17
+ permissions:
18
+ contents: read
19
+ packages: write
20
+
21
+ strategy:
22
+ matrix:
23
+ include:
24
+ - image: whisper
25
+ dockerfile: docker/whisper.Dockerfile
26
+ target: cuda
27
+ suffix: cuda
28
+ - image: whisper
29
+ dockerfile: docker/whisper.Dockerfile
30
+ target: cpu
31
+ suffix: cpu
32
+ - image: tts
33
+ dockerfile: docker/tts.Dockerfile
34
+ target: cuda
35
+ suffix: cuda
36
+ - image: tts
37
+ dockerfile: docker/tts.Dockerfile
38
+ target: cpu
39
+ suffix: cpu
40
+
41
+ steps:
42
+ - name: Checkout repository
43
+ uses: actions/checkout@v6
44
+
45
+ - name: Set up Docker Buildx
46
+ uses: docker/setup-buildx-action@v3
47
+
48
+ - name: Log in to Container Registry
49
+ uses: docker/login-action@v3
50
+ with:
51
+ registry: ${{ env.REGISTRY }}
52
+ username: ${{ github.actor }}
53
+ password: ${{ secrets.GITHUB_TOKEN }}
54
+
55
+ - name: Get version from trigger
56
+ id: version
57
+ run: |
58
+ if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
59
+ # Extract version from release tag (v0.61.3 -> 0.61.3)
60
+ TAG="${{ github.event.workflow_run.head_branch }}"
61
+ echo "version=${TAG#v}" >> $GITHUB_OUTPUT
62
+ fi
63
+
64
+ - name: Extract metadata
65
+ id: meta
66
+ uses: docker/metadata-action@v5
67
+ with:
68
+ images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
69
+ tags: |
70
+ type=raw,value=${{ steps.version.outputs.version }},suffix=-${{ matrix.suffix }},enable=${{ steps.version.outputs.version != '' }}
71
+ type=raw,value=latest,suffix=-${{ matrix.suffix }}
72
+ type=sha,suffix=-${{ matrix.suffix }}
73
+
74
+ - name: Build and push
75
+ uses: docker/build-push-action@v6
76
+ with:
77
+ context: .
78
+ file: ${{ matrix.dockerfile }}
79
+ target: ${{ matrix.target }}
80
+ push: true
81
+ tags: ${{ steps.meta.outputs.tags }}
82
+ labels: ${{ steps.meta.outputs.labels }}
83
+ cache-from: type=gha
84
+ cache-to: type=gha,mode=max
85
+
86
+ # Single-target images (transcription-proxy)
87
+ build-single-target:
88
+ runs-on: ubuntu-latest
89
+ if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
90
+ permissions:
91
+ contents: read
92
+ packages: write
93
+
94
+ strategy:
95
+ matrix:
96
+ include:
97
+ - image: transcription-proxy
98
+ dockerfile: docker/transcription-proxy.Dockerfile
99
+
100
+ steps:
101
+ - name: Checkout repository
102
+ uses: actions/checkout@v6
103
+
104
+ - name: Set up Docker Buildx
105
+ uses: docker/setup-buildx-action@v3
106
+
107
+ - name: Log in to Container Registry
108
+ uses: docker/login-action@v3
109
+ with:
110
+ registry: ${{ env.REGISTRY }}
111
+ username: ${{ github.actor }}
112
+ password: ${{ secrets.GITHUB_TOKEN }}
113
+
114
+ - name: Get version from trigger
115
+ id: version
116
+ run: |
117
+ if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
118
+ # Extract version from release tag (v0.61.3 -> 0.61.3)
119
+ TAG="${{ github.event.workflow_run.head_branch }}"
120
+ echo "version=${TAG#v}" >> $GITHUB_OUTPUT
121
+ fi
122
+
123
+ - name: Extract metadata
124
+ id: meta
125
+ uses: docker/metadata-action@v5
126
+ with:
127
+ images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
128
+ tags: |
129
+ type=raw,value=${{ steps.version.outputs.version }},enable=${{ steps.version.outputs.version != '' }}
130
+ type=raw,value=latest
131
+ type=sha
132
+
133
+ - name: Build and push
134
+ uses: docker/build-push-action@v6
135
+ with:
136
+ context: .
137
+ file: ${{ matrix.dockerfile }}
138
+ push: true
139
+ tags: ${{ steps.meta.outputs.tags }}
140
+ labels: ${{ steps.meta.outputs.labels }}
141
+ cache-from: type=gha
142
+ cache-to: type=gha,mode=max
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.64.2
3
+ Version: 0.65.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>
@@ -220,6 +220,7 @@ The setup scripts automatically install:
220
220
  - [System Integration](#system-integration)
221
221
  - [macOS Hotkeys](#macos-hotkeys)
222
222
  - [Linux Hotkeys](#linux-hotkeys)
223
+ - [Claude Code Plugin](#claude-code-plugin)
223
224
  - [Prerequisites](#prerequisites)
224
225
  - [What You Need to Install Manually](#what-you-need-to-install-manually)
225
226
  - [What the Setup Scripts Install for You](#what-the-setup-scripts-install-for-you)
@@ -367,6 +368,25 @@ This script automatically:
367
368
 
368
369
  The script supports Hyprland, GNOME, KDE, Sway, i3, XFCE, and provides instructions for manual configuration on other environments.
369
370
 
371
+ ### Claude Code Plugin
372
+
373
+ The [`dev`](docs/commands/dev.md) command is also available as a **Claude Code plugin**, enabling Claude to automatically spawn parallel AI agents in isolated git worktrees when you ask it to work on multiple features.
374
+
375
+ ```bash
376
+ # Option 1: Install skill directly in your project (recommended)
377
+ agent-cli dev install-skill
378
+
379
+ # Option 2: Install via Claude Code plugin marketplace
380
+ claude plugin marketplace add basnijholt/agent-cli
381
+ claude plugin install agent-cli@agent-cli-dev
382
+ ```
383
+
384
+ Once installed, Claude Code can automatically use this skill when you ask to:
385
+ - "Work on these 3 features in parallel"
386
+ - "Spawn agents for auth and payments"
387
+ - "Delegate this refactoring to a separate agent"
388
+
389
+ See the [plugin documentation](.claude-plugin/README.md) for more details.
370
390
 
371
391
  ## Prerequisites
372
392
 
@@ -140,6 +140,7 @@ The setup scripts automatically install:
140
140
  - [System Integration](#system-integration)
141
141
  - [macOS Hotkeys](#macos-hotkeys)
142
142
  - [Linux Hotkeys](#linux-hotkeys)
143
+ - [Claude Code Plugin](#claude-code-plugin)
143
144
  - [Prerequisites](#prerequisites)
144
145
  - [What You Need to Install Manually](#what-you-need-to-install-manually)
145
146
  - [What the Setup Scripts Install for You](#what-the-setup-scripts-install-for-you)
@@ -287,6 +288,25 @@ This script automatically:
287
288
 
288
289
  The script supports Hyprland, GNOME, KDE, Sway, i3, XFCE, and provides instructions for manual configuration on other environments.
289
290
 
291
+ ### Claude Code Plugin
292
+
293
+ The [`dev`](docs/commands/dev.md) command is also available as a **Claude Code plugin**, enabling Claude to automatically spawn parallel AI agents in isolated git worktrees when you ask it to work on multiple features.
294
+
295
+ ```bash
296
+ # Option 1: Install skill directly in your project (recommended)
297
+ agent-cli dev install-skill
298
+
299
+ # Option 2: Install via Claude Code plugin marketplace
300
+ claude plugin marketplace add basnijholt/agent-cli
301
+ claude plugin install agent-cli@agent-cli-dev
302
+ ```
303
+
304
+ Once installed, Claude Code can automatically use this skill when you ask to:
305
+ - "Work on these 3 features in parallel"
306
+ - "Spawn agents for auth and payments"
307
+ - "Delegate this refactoring to a separate agent"
308
+
309
+ See the [plugin documentation](.claude-plugin/README.md) for more details.
290
310
 
291
311
  ## Prerequisites
292
312
 
@@ -673,10 +673,6 @@ def new( # noqa: PLR0912, PLR0915
673
673
 
674
674
  @app.command("list")
675
675
  def list_envs(
676
- porcelain: Annotated[
677
- bool,
678
- typer.Option("--porcelain", "-p", help="Machine-readable output"),
679
- ] = False,
680
676
  json_output: Annotated[
681
677
  bool,
682
678
  typer.Option("--json", help="Output as JSON for automation"),
@@ -710,11 +706,6 @@ def list_envs(
710
706
  print(json.dumps({"worktrees": data}))
711
707
  return
712
708
 
713
- if porcelain:
714
- for wt in worktrees:
715
- print(f"{wt.path.as_posix()}\t{wt.branch or '(detached)'}")
716
- return
717
-
718
709
  table = Table(title="Dev Environments (Git Worktrees)")
719
710
  table.add_column("Name", style="cyan")
720
711
  table.add_column("Branch", style="green")
@@ -784,15 +775,11 @@ def _is_stale(status: worktree.WorktreeStatus, stale_days: int) -> bool:
784
775
 
785
776
 
786
777
  @app.command("status")
787
- def status_cmd( # noqa: PLR0912, PLR0915
778
+ def status_cmd( # noqa: PLR0915
788
779
  stale_days: Annotated[
789
780
  int,
790
781
  typer.Option("--stale-days", "-s", help="Highlight worktrees inactive for N+ days"),
791
782
  ] = 7,
792
- porcelain: Annotated[
793
- bool,
794
- typer.Option("--porcelain", "-p", help="Machine-readable output"),
795
- ] = False,
796
783
  json_output: Annotated[
797
784
  bool,
798
785
  typer.Option("--json", help="Output as JSON for automation"),
@@ -836,20 +823,6 @@ def status_cmd( # noqa: PLR0912, PLR0915
836
823
  print(json.dumps({"worktrees": data, "stale_days": stale_days}))
837
824
  return
838
825
 
839
- if porcelain:
840
- # Machine-readable: name\tbranch\tmodified\tstaged\tuntracked\tahead\tbehind\ttimestamp
841
- for wt in worktrees:
842
- status = worktree.get_worktree_status(wt.path)
843
- if status:
844
- print(
845
- f"{wt.name}\t{wt.branch or ''}\t"
846
- f"{status.modified}\t{status.staged}\t{status.untracked}\t"
847
- f"{status.ahead}\t{status.behind}\t{status.last_commit_timestamp or ''}",
848
- )
849
- else:
850
- print(f"{wt.name}\t{wt.branch or ''}\t\t\t\t\t\t")
851
- return
852
-
853
826
  table = Table(title="Dev Environment Status")
854
827
  table.add_column("Name", style="cyan")
855
828
  table.add_column("Branch", style="green")
@@ -27,6 +27,8 @@
27
27
  # TTS_LOG_LEVEL - Logging level (default: info)
28
28
  #
29
29
  # OLLAMA_MODEL - Ollama model to pull on startup (default: gemma3:4b)
30
+ #
31
+ # PROXY_PORT - Transcription proxy port (default: 61337)
30
32
 
31
33
  services:
32
34
  # ===========================================================================
@@ -175,6 +177,25 @@ services:
175
177
  - TTS_DEVICE=cpu
176
178
  restart: unless-stopped
177
179
 
180
+ # ===========================================================================
181
+ # Transcription Proxy
182
+ # ===========================================================================
183
+
184
+ transcription-proxy:
185
+ image: ghcr.io/basnijholt/agent-cli-transcription-proxy:latest
186
+ build:
187
+ context: ..
188
+ dockerfile: docker/transcription-proxy.Dockerfile
189
+ profiles: [cuda, cpu]
190
+ ports:
191
+ - "61337:61337"
192
+ # volumes:
193
+ # - ./config.toml:/home/transcribe/.config/agent-cli/config.toml:ro
194
+ environment:
195
+ - PROXY_HOST=0.0.0.0
196
+ - PROXY_PORT=${PROXY_PORT:-61337}
197
+ restart: unless-stopped
198
+
178
199
  volumes:
179
200
  ollama-data:
180
201
  name: agent-cli-ollama-data
@@ -0,0 +1,51 @@
1
+ # syntax=docker/dockerfile:1
2
+ # Dockerfile for agent-cli Transcription Proxy server
3
+ # A lightweight proxy that forwards requests to configured ASR providers
4
+ #
5
+ # Build example:
6
+ # docker build -f docker/transcription-proxy.Dockerfile -t agent-cli-transcription-proxy .
7
+ #
8
+ # Run example:
9
+ # docker run -p 61337:61337 agent-cli-transcription-proxy
10
+
11
+ # Build stage - install with uv
12
+ FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
13
+
14
+ # --refresh bypasses uv cache to ensure latest version from PyPI
15
+ RUN uv tool install --refresh --compile-bytecode "agent-cli[server]"
16
+
17
+ # Runtime stage - minimal image without uv
18
+ FROM python:3.13-slim
19
+
20
+ # Create non-root user with explicit UID:GID 1000:1000
21
+ RUN groupadd -g 1000 transcribe && useradd -m -u 1000 -g transcribe transcribe
22
+
23
+ # Copy installed tool virtualenv from builder (keep original path for shebang compatibility)
24
+ COPY --from=builder /root/.local/share/uv/tools/agent-cli /root/.local/share/uv/tools/agent-cli
25
+
26
+ # Make tool accessible to non-root users and create symlinks
27
+ RUN chmod 755 /root /root/.local /root/.local/share /root/.local/share/uv /root/.local/share/uv/tools && \
28
+ chmod -R 755 /root/.local/share/uv/tools/agent-cli && \
29
+ ln -s /root/.local/share/uv/tools/agent-cli/bin/agent-cli /usr/local/bin/agent-cli && \
30
+ ln -s /root/.local/share/uv/tools/agent-cli/bin/agent /usr/local/bin/agent && \
31
+ ln -s /root/.local/share/uv/tools/agent-cli/bin/ag /usr/local/bin/ag
32
+
33
+ USER transcribe
34
+
35
+ WORKDIR /app
36
+
37
+ # Expose port
38
+ EXPOSE 61337
39
+
40
+ # Default environment variables
41
+ ENV PROXY_HOST=0.0.0.0 \
42
+ PROXY_PORT=61337
43
+
44
+ # Health check
45
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
46
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${PROXY_PORT}/health')" || exit 1
47
+
48
+ ENTRYPOINT ["sh", "-c", "agent-cli server transcription-proxy \
49
+ --host ${PROXY_HOST} \
50
+ --port ${PROXY_PORT} \
51
+ ${PROXY_EXTRA_ARGS:-}"]
@@ -98,7 +98,6 @@ agent-cli dev list [OPTIONS]
98
98
 
99
99
  | Option | Description |
100
100
  |--------|-------------|
101
- | `--porcelain`, `-p` | Machine-readable output (path + branch) |
102
101
  | `--json` | Output as JSON for automation |
103
102
 
104
103
  ### `dev status`
@@ -114,7 +113,6 @@ agent-cli dev status [OPTIONS]
114
113
  | Option | Description |
115
114
  |--------|-------------|
116
115
  | `--stale-days`, `-s` | Highlight worktrees inactive for N+ days (default: 7) |
117
- | `--porcelain`, `-p` | Machine-readable output |
118
116
  | `--json` | Output as JSON for automation |
119
117
 
120
118
  **Output columns:**
@@ -135,9 +133,6 @@ agent-cli dev status
135
133
 
136
134
  # Highlight worktrees inactive for 14+ days
137
135
  agent-cli dev status --stale-days 14
138
-
139
- # Machine-readable output for scripting
140
- agent-cli dev status --porcelain
141
136
  ```
142
137
 
143
138
  **Example output:**
@@ -162,16 +157,6 @@ agent-cli dev status --porcelain
162
157
  - `-N` = N commits behind upstream
163
158
  - `⚠️` = Stale worktree (inactive for longer than `--stale-days`)
164
159
 
165
- **Porcelain format:**
166
-
167
- Tab-separated values: `name`, `branch`, `modified`, `staged`, `untracked`, `ahead`, `behind`, `timestamp`
168
-
169
- ```bash
170
- $ agent-cli dev status --porcelain
171
- main main 3 0 0 0 0 1768343512
172
- my-feature feat/my-feature 0 0 0 0 0 1767544043
173
- ```
174
-
175
160
  ### `dev rm`
176
161
 
177
162
  Remove a dev environment (worktree).
@@ -327,6 +312,17 @@ agent-cli dev install-skill --force
327
312
 
328
313
  Once installed, Claude Code can automatically use the skill when you ask to work on multiple features or parallelize development tasks.
329
314
 
315
+ **Alternative: Plugin Marketplace**
316
+
317
+ You can also install the skill globally via the Claude Code plugin marketplace:
318
+
319
+ ```bash
320
+ claude plugin marketplace add basnijholt/agent-cli
321
+ claude plugin install agent-cli-dev@agent-cli
322
+ ```
323
+
324
+ This installs the skill globally so it's available in all projects without needing to run `dev install-skill` in each one.
325
+
330
326
  ## Discovery Commands
331
327
 
332
328
  ### `dev agents`
@@ -93,3 +93,26 @@ pip install "agent-cli[server]"
93
93
  # or
94
94
  uv sync --extra server
95
95
  ```
96
+
97
+ ## Docker
98
+
99
+ Run as a Docker container:
100
+
101
+ ```bash
102
+ # Build the image
103
+ docker build -f docker/transcription-proxy.Dockerfile -t agent-cli-transcription-proxy .
104
+
105
+ # Run standalone
106
+ docker run -p 61337:61337 agent-cli-transcription-proxy
107
+
108
+ # Or use docker-compose (included in both cuda and cpu profiles)
109
+ docker compose -f docker/docker-compose.yml --profile cpu up transcription-proxy
110
+ ```
111
+
112
+ To use a custom config, mount it as a volume:
113
+
114
+ ```bash
115
+ docker run -p 61337:61337 \
116
+ -v ./config.toml:/root/.config/agent-cli/config.toml:ro \
117
+ agent-cli-transcription-proxy
118
+ ```
@@ -55,12 +55,13 @@ Universal Docker setup that works on any platform with Docker support.
55
55
 
56
56
  The Docker setup provides:
57
57
 
58
- | Service | Image | Port | Purpose |
59
- | ---------------- | --------------------------------- | ----------- | ------------------------------ |
60
- | **whisper** | agent-cli-whisper (custom) | 10300/10301 | Speech-to-text (Faster Whisper)|
61
- | **tts** | agent-cli-tts (custom) | 10200/10201 | Text-to-speech (Kokoro/Piper) |
62
- | **ollama** | ollama/ollama | 11434 | LLM server |
63
- | **openwakeword** | rhasspy/wyoming-openwakeword | 10400 | Wake word detection |
58
+ | Service | Image | Port | Purpose |
59
+ | ----------------------- | --------------------------------- | ----------- | ------------------------------ |
60
+ | **whisper** | agent-cli-whisper (custom) | 10300/10301 | Speech-to-text (Faster Whisper)|
61
+ | **tts** | agent-cli-tts (custom) | 10200/10201 | Text-to-speech (Kokoro/Piper) |
62
+ | **transcription-proxy** | agent-cli-transcription-proxy | 61337 | ASR proxy for iOS/external apps|
63
+ | **ollama** | ollama/ollama | 11434 | LLM server |
64
+ | **openwakeword** | rhasspy/wyoming-openwakeword | 10400 | Wake word detection |
64
65
 
65
66
  ## Configuration
66
67
 
@@ -75,6 +76,9 @@ WHISPER_TTL=300 # Seconds before unloading idle model
75
76
  TTS_MODEL=kokoro # For CUDA: kokoro, For CPU: en_US-lessac-medium
76
77
  TTS_BACKEND=kokoro # Backend: kokoro (GPU), piper (CPU)
77
78
  TTS_TTL=300 # Seconds before unloading idle model
79
+
80
+ # Transcription Proxy
81
+ PROXY_PORT=61337 # Port for transcription proxy
78
82
  ```
79
83
 
80
84
  ### GPU Support
@@ -108,14 +112,15 @@ Services store data in Docker volumes:
108
112
 
109
113
  ## Ports Reference
110
114
 
111
- | Port | Service | Protocol |
112
- | ----- | ------------ | -------- |
113
- | 10200 | TTS | Wyoming |
114
- | 10201 | TTS | HTTP API |
115
- | 10300 | Whisper | Wyoming |
116
- | 10301 | Whisper | HTTP API |
117
- | 10400 | OpenWakeWord | Wyoming |
118
- | 11434 | Ollama | HTTP API |
115
+ | Port | Service | Protocol |
116
+ | ----- | ------------------- | -------- |
117
+ | 10200 | TTS | Wyoming |
118
+ | 10201 | TTS | HTTP API |
119
+ | 10300 | Whisper | Wyoming |
120
+ | 10301 | Whisper | HTTP API |
121
+ | 10400 | OpenWakeWord | Wyoming |
122
+ | 11434 | Ollama | HTTP API |
123
+ | 61337 | Transcription Proxy | HTTP API |
119
124
 
120
125
  ## Alternative: Native Installation
121
126
 
@@ -151,29 +151,6 @@ class TestDevList:
151
151
  assert "main" in result.output
152
152
  assert "feature" in result.output
153
153
 
154
- def test_list_porcelain(self) -> None:
155
- """List with --porcelain shows machine-readable output."""
156
- mock_worktrees = [
157
- WorktreeInfo(
158
- path=Path("/repo"),
159
- branch="main",
160
- commit="abc",
161
- is_main=True,
162
- is_detached=False,
163
- is_locked=False,
164
- is_prunable=False,
165
- ),
166
- ]
167
-
168
- with (
169
- patch("agent_cli.dev.worktree.get_main_repo_root", return_value=Path("/repo")),
170
- patch("agent_cli.dev.worktree.git_available", return_value=True),
171
- patch("agent_cli.dev.worktree.list_worktrees", return_value=mock_worktrees),
172
- ):
173
- result = runner.invoke(app, ["dev", "list", "--porcelain"])
174
- assert result.exit_code == 0
175
- assert "/repo\tmain" in result.output
176
-
177
154
 
178
155
  class TestDevPath:
179
156
  """Tests for dev path command."""
@@ -1,8 +0,0 @@
1
- {
2
- "source": "./.claude-plugin",
3
- "repository": "https://github.com/basnijholt/agent-cli",
4
- "homepage": "https://github.com/basnijholt/agent-cli",
5
- "documentation": "https://github.com/basnijholt/agent-cli/blob/main/docs/commands/dev.md",
6
- "keywords": ["git", "worktree", "parallel", "agents", "development", "claude", "ai"],
7
- "license": "MIT"
8
- }
@@ -1,72 +0,0 @@
1
- name: Publish TTS Docker Images
2
-
3
- on:
4
- workflow_run:
5
- workflows: ["Upload Python Package"]
6
- types: [completed]
7
- workflow_dispatch:
8
-
9
- env:
10
- REGISTRY: ghcr.io
11
- IMAGE_NAME: ${{ github.repository }}-tts
12
-
13
- jobs:
14
- build-and-push:
15
- runs-on: ubuntu-latest
16
- if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
17
- permissions:
18
- contents: read
19
- packages: write
20
-
21
- strategy:
22
- matrix:
23
- include:
24
- - target: cuda
25
- suffix: cuda
26
- - target: cpu
27
- suffix: cpu
28
-
29
- steps:
30
- - name: Checkout repository
31
- uses: actions/checkout@v6
32
-
33
- - name: Set up Docker Buildx
34
- uses: docker/setup-buildx-action@v3
35
-
36
- - name: Log in to Container Registry
37
- uses: docker/login-action@v3
38
- with:
39
- registry: ${{ env.REGISTRY }}
40
- username: ${{ github.actor }}
41
- password: ${{ secrets.GITHUB_TOKEN }}
42
-
43
- - name: Get version from trigger
44
- id: version
45
- run: |
46
- if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
47
- # Extract version from release tag (v0.61.3 -> 0.61.3)
48
- TAG="${{ github.event.workflow_run.head_branch }}"
49
- echo "version=${TAG#v}" >> $GITHUB_OUTPUT
50
- fi
51
-
52
- - name: Extract metadata
53
- id: meta
54
- uses: docker/metadata-action@v5
55
- with:
56
- images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
57
- tags: |
58
- type=raw,value=${{ steps.version.outputs.version }},suffix=-${{ matrix.suffix }},enable=${{ steps.version.outputs.version != '' }}
59
- type=raw,value=latest,suffix=-${{ matrix.suffix }}
60
- type=sha,suffix=-${{ matrix.suffix }}
61
-
62
- - name: Build and push
63
- uses: docker/build-push-action@v6
64
- with:
65
- context: .
66
- file: docker/tts.Dockerfile
67
- target: ${{ matrix.target }}
68
- push: true
69
- tags: ${{ steps.meta.outputs.tags }}
70
- labels: ${{ steps.meta.outputs.labels }}
71
- cache-from: type=gha
72
- cache-to: type=gha,mode=max