agent-cli 0.72.4__tar.gz → 0.72.6__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 (365) hide show
  1. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/README.md +1 -1
  2. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/docker.yml +4 -0
  3. {agent_cli-0.72.4 → agent_cli-0.72.6}/PKG-INFO +5 -3
  4. {agent_cli-0.72.4 → agent_cli-0.72.6}/README.md +2 -2
  5. agent_cli-0.72.6/agent_cli/_extras.json +73 -0
  6. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/cli.py +3 -1
  7. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/sync_extras.py +1 -0
  8. {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/docker-compose.yml +84 -0
  9. agent_cli-0.72.6/docker/memory-proxy.Dockerfile +115 -0
  10. agent_cli-0.72.6/docker/rag-proxy.Dockerfile +100 -0
  11. {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/transcribe-proxy.Dockerfile +10 -18
  12. {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/tts.Dockerfile +6 -12
  13. {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/whisper.Dockerfile +6 -12
  14. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/architecture/memory.md +11 -1
  15. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/architecture/rag.md +13 -1
  16. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/install-extras.md +7 -6
  17. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/docker.md +23 -1
  18. {agent_cli-0.72.4 → agent_cli-0.72.6}/pyproject.toml +2 -1
  19. {agent_cli-0.72.4 → agent_cli-0.72.6}/uv.lock +5 -1
  20. agent_cli-0.72.4/agent_cli/_extras.json +0 -14
  21. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  22. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude/skills/agent-cli-dev/examples.md +0 -0
  23. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/marketplace.json +0 -0
  24. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/plugin.json +0 -0
  25. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  26. {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  27. {agent_cli-0.72.4 → agent_cli-0.72.6}/.cursorrules +0 -0
  28. {agent_cli-0.72.4 → agent_cli-0.72.6}/.dockerignore +0 -0
  29. {agent_cli-0.72.4 → agent_cli-0.72.6}/.env.example +0 -0
  30. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/logo.svg +0 -0
  31. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/release-drafter.yml +0 -0
  32. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/renovate.json +0 -0
  33. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/scripts/check_extras_sync.py +0 -0
  34. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/scripts/sync_requirements.py +0 -0
  35. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/automerge.yml +0 -0
  36. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/docs.yml +0 -0
  37. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/markdown-code-runner.yml +0 -0
  38. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/pytest.yml +0 -0
  39. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/release-drafter.yml +0 -0
  40. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/release.yml +0 -0
  41. {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/toc.yaml +0 -0
  42. {agent_cli-0.72.4 → agent_cli-0.72.6}/.gitignore +0 -0
  43. {agent_cli-0.72.4 → agent_cli-0.72.6}/.jscpd.json +0 -0
  44. {agent_cli-0.72.4 → agent_cli-0.72.6}/.pre-commit-config.yaml +0 -0
  45. {agent_cli-0.72.4 → agent_cli-0.72.6}/.prompts/docs-review.md +0 -0
  46. {agent_cli-0.72.4 → agent_cli-0.72.6}/.prompts/pr-review.md +0 -0
  47. {agent_cli-0.72.4 → agent_cli-0.72.6}/CLAUDE.md +0 -0
  48. {agent_cli-0.72.4 → agent_cli-0.72.6}/LICENSE +0 -0
  49. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/__init__.py +0 -0
  50. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/__main__.py +0 -0
  51. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/.gitkeep +0 -0
  52. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/audio.txt +0 -0
  53. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/faster-whisper.txt +0 -0
  54. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/kokoro.txt +0 -0
  55. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/llm.txt +0 -0
  56. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/memory.txt +0 -0
  57. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  58. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/piper.txt +0 -0
  59. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/rag.txt +0 -0
  60. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/server.txt +0 -0
  61. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/speed.txt +0 -0
  62. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/vad.txt +0 -0
  63. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/wyoming.txt +0 -0
  64. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_tools.py +0 -0
  65. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/__init__.py +0 -0
  66. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/_voice_agent_common.py +0 -0
  67. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/assistant.py +0 -0
  68. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/autocorrect.py +0 -0
  69. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/chat.py +0 -0
  70. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/memory/__init__.py +0 -0
  71. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/memory/add.py +0 -0
  72. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/memory/proxy.py +0 -0
  73. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/rag_proxy.py +0 -0
  74. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/speak.py +0 -0
  75. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/transcribe.py +0 -0
  76. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/transcribe_daemon.py +0 -0
  77. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/voice_edit.py +0 -0
  78. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/api.py +0 -0
  79. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/cli.py +0 -0
  80. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/config.py +0 -0
  81. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/config_cmd.py +0 -0
  82. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/constants.py +0 -0
  83. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/__init__.py +0 -0
  84. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/audio.py +0 -0
  85. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/audio_format.py +0 -0
  86. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/chroma.py +0 -0
  87. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/deps.py +0 -0
  88. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/openai_proxy.py +0 -0
  89. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/process.py +0 -0
  90. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/reranker.py +0 -0
  91. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/sse.py +0 -0
  92. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/transcription_logger.py +0 -0
  93. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/utils.py +0 -0
  94. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/vad.py +0 -0
  95. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/watch.py +0 -0
  96. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/__init__.py +0 -0
  97. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/__init__.py +0 -0
  98. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/aider.py +0 -0
  99. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/base.py +0 -0
  100. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/claude.py +0 -0
  101. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/codex.py +0 -0
  102. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  103. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/copilot.py +0 -0
  104. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  105. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/gemini.py +0 -0
  106. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/opencode.py +0 -0
  107. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/registry.py +0 -0
  108. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/__init__.py +0 -0
  109. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/base.py +0 -0
  110. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/cursor.py +0 -0
  111. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/emacs.py +0 -0
  112. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/jetbrains.py +0 -0
  113. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/nano.py +0 -0
  114. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/neovim.py +0 -0
  115. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/registry.py +0 -0
  116. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/sublime.py +0 -0
  117. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/vim.py +0 -0
  118. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/vscode.py +0 -0
  119. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/zed.py +0 -0
  120. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/project.py +0 -0
  121. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/registry.py +0 -0
  122. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/skill/SKILL.md +0 -0
  123. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/skill/examples.md +0 -0
  124. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/__init__.py +0 -0
  125. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  126. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/base.py +0 -0
  127. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/gnome.py +0 -0
  128. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/iterm2.py +0 -0
  129. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/kitty.py +0 -0
  130. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/registry.py +0 -0
  131. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/tmux.py +0 -0
  132. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/warp.py +0 -0
  133. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/zellij.py +0 -0
  134. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/worktree.py +0 -0
  135. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/docs_gen.py +0 -0
  136. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/example-config.toml +0 -0
  137. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/__init__.py +0 -0
  138. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/common.py +0 -0
  139. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/extras.py +0 -0
  140. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/hotkeys.py +0 -0
  141. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/services.py +0 -0
  142. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/__init__.py +0 -0
  143. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_files.py +0 -0
  144. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_filters.py +0 -0
  145. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_git.py +0 -0
  146. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_indexer.py +0 -0
  147. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_ingest.py +0 -0
  148. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_persistence.py +0 -0
  149. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_prompt.py +0 -0
  150. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_retrieval.py +0 -0
  151. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_store.py +0 -0
  152. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_streaming.py +0 -0
  153. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_tasks.py +0 -0
  154. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/api.py +0 -0
  155. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/client.py +0 -0
  156. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/engine.py +0 -0
  157. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/entities.py +0 -0
  158. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/models.py +0 -0
  159. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/opts.py +0 -0
  160. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/py.typed +0 -0
  161. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/__init__.py +0 -0
  162. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_indexer.py +0 -0
  163. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_indexing.py +0 -0
  164. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_prompt.py +0 -0
  165. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_retriever.py +0 -0
  166. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_store.py +0 -0
  167. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_utils.py +0 -0
  168. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/api.py +0 -0
  169. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/client.py +0 -0
  170. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/engine.py +0 -0
  171. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/models.py +0 -0
  172. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  173. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/__init__.py +0 -0
  174. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  175. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  176. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  177. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  178. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  179. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  180. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  181. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  182. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  183. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  184. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  185. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  186. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  187. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  188. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  189. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-openwakeword.sh +0 -0
  190. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  191. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-piper.sh +0 -0
  192. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  193. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  194. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  195. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper.sh +0 -0
  196. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  197. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  198. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-linux.sh +0 -0
  199. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  200. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-macos.sh +0 -0
  201. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-windows.ps1 +0 -0
  202. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  203. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/start-all-services.sh +0 -0
  204. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/__init__.py +0 -0
  205. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/cli.py +0 -0
  206. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/common.py +0 -0
  207. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/model_manager.py +0 -0
  208. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/model_registry.py +0 -0
  209. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/proxy/__init__.py +0 -0
  210. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/proxy/api.py +0 -0
  211. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/streaming.py +0 -0
  212. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/__init__.py +0 -0
  213. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/api.py +0 -0
  214. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/__init__.py +0 -0
  215. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/base.py +0 -0
  216. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/kokoro.py +0 -0
  217. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/piper.py +0 -0
  218. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/model_manager.py +0 -0
  219. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/model_registry.py +0 -0
  220. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/wyoming_handler.py +0 -0
  221. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/__init__.py +0 -0
  222. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/api.py +0 -0
  223. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/__init__.py +0 -0
  224. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/base.py +0 -0
  225. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  226. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/mlx.py +0 -0
  227. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/languages.py +0 -0
  228. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/model_manager.py +0 -0
  229. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/model_registry.py +0 -0
  230. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  231. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/__init__.py +0 -0
  232. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/_wyoming_utils.py +0 -0
  233. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/asr.py +0 -0
  234. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/llm.py +0 -0
  235. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/tts.py +0 -0
  236. {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/wake_word.py +0 -0
  237. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/CNAME +0 -0
  238. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/architecture/index.md +0 -0
  239. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/assistant.md +0 -0
  240. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/autocorrect.md +0 -0
  241. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/chat.md +0 -0
  242. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/config.md +0 -0
  243. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/dev.md +0 -0
  244. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/index.md +0 -0
  245. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/install-hotkeys.md +0 -0
  246. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/install-services.md +0 -0
  247. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/memory.md +0 -0
  248. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/rag-proxy.md +0 -0
  249. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/index.md +0 -0
  250. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/transcribe-proxy.md +0 -0
  251. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/tts.md +0 -0
  252. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/whisper.md +0 -0
  253. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/speak.md +0 -0
  254. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/start-services.md +0 -0
  255. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/transcribe-daemon.md +0 -0
  256. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/transcribe.md +0 -0
  257. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/voice-edit.md +0 -0
  258. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/configuration.md +0 -0
  259. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/getting-started.md +0 -0
  260. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/iOS_Shortcut_Guide.md +0 -0
  261. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/index.md +0 -0
  262. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/index.md +0 -0
  263. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/linux.md +0 -0
  264. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/macos.md +0 -0
  265. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/nixos.md +0 -0
  266. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/windows.md +0 -0
  267. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/logo-clean.svg +0 -0
  268. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  269. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/run_markdown_code_runner.py +0 -0
  270. {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/system-integration.md +0 -0
  271. {agent_cli-0.72.4 → agent_cli-0.72.6}/example.agent-cli-config.toml +0 -0
  272. {agent_cli-0.72.4 → agent_cli-0.72.6}/justfile +0 -0
  273. {agent_cli-0.72.4 → agent_cli-0.72.6}/shell.nix +0 -0
  274. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/__init__.py +0 -0
  275. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/__init__.py +0 -0
  276. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_fix_my_text.py +0 -0
  277. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_interactive.py +0 -0
  278. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_interactive_extra.py +0 -0
  279. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_memory_add.py +0 -0
  280. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_speak.py +0 -0
  281. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_speak_e2e.py +0 -0
  282. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe.py +0 -0
  283. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_agent.py +0 -0
  284. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_daemon.py +0 -0
  285. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_e2e.py +0 -0
  286. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_recovery.py +0 -0
  287. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_tts_common.py +0 -0
  288. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_tts_common_extra.py +0 -0
  289. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_voice_agent_common.py +0 -0
  290. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_voice_edit.py +0 -0
  291. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_voice_edit_e2e.py +0 -0
  292. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_wake_word_assistant.py +0 -0
  293. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/conftest.py +0 -0
  294. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/__init__.py +0 -0
  295. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_audio_format.py +0 -0
  296. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_chroma.py +0 -0
  297. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_sse.py +0 -0
  298. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_vad.py +0 -0
  299. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_watch.py +0 -0
  300. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/__init__.py +0 -0
  301. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_cli.py +0 -0
  302. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_coding_agents.py +0 -0
  303. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_editors.py +0 -0
  304. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_project.py +0 -0
  305. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_terminals.py +0 -0
  306. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_verification.py +0 -0
  307. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_worktree.py +0 -0
  308. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/install/__init__.py +0 -0
  309. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/install/test_extras.py +0 -0
  310. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/__init__.py +0 -0
  311. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_api_health.py +0 -0
  312. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_api_integration_liveish.py +0 -0
  313. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_client.py +0 -0
  314. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_engine.py +0 -0
  315. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_files.py +0 -0
  316. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_filters.py +0 -0
  317. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_git_integration.py +0 -0
  318. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_indexer.py +0 -0
  319. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_memory_integration.py +0 -0
  320. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_proxy_passthrough.py +0 -0
  321. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_store.py +0 -0
  322. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_utils.py +0 -0
  323. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/__init__.py +0 -0
  324. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/audio.py +0 -0
  325. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/llm.py +0 -0
  326. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/wyoming.py +0 -0
  327. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/__init__.py +0 -0
  328. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_api.py +0 -0
  329. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_engine.py +0 -0
  330. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_history.py +0 -0
  331. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_indexer.py +0 -0
  332. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_indexing.py +0 -0
  333. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_rag_client.py +0 -0
  334. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_rag_integration_liveish.py +0 -0
  335. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  336. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_retriever.py +0 -0
  337. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_store.py +0 -0
  338. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_utils.py +0 -0
  339. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_api.py +0 -0
  340. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_api_integration.py +0 -0
  341. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_asr.py +0 -0
  342. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_asr_recovery.py +0 -0
  343. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_audio_e2e.py +0 -0
  344. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_cli.py +0 -0
  345. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_config.py +0 -0
  346. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_config_cmd.py +0 -0
  347. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_docs_gen.py +0 -0
  348. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_env_vars.py +0 -0
  349. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_json_output.py +0 -0
  350. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_llm.py +0 -0
  351. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_llm_gemini.py +0 -0
  352. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_memory_tools.py +0 -0
  353. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_mlx_backend.py +0 -0
  354. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_process_manager.py +0 -0
  355. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_requires_extras.py +0 -0
  356. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_server_streaming.py +0 -0
  357. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_server_tts.py +0 -0
  358. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_server_whisper.py +0 -0
  359. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_services.py +0 -0
  360. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_tools.py +0 -0
  361. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_tts.py +0 -0
  362. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_utils.py +0 -0
  363. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_wake_word.py +0 -0
  364. {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_wyoming_utils.py +0 -0
  365. {agent_cli-0.72.4 → agent_cli-0.72.6}/zensical.toml +0 -0
@@ -30,7 +30,7 @@ uvx --python 3.13 agent-cli dev new my-feature --agent --prompt "..."
30
30
  claude plugin marketplace add basnijholt/agent-cli
31
31
 
32
32
  # Then install
33
- claude plugin install agent-cli@agent-cli-dev
33
+ claude plugin install agent-cli-dev@agent-cli
34
34
  ```
35
35
 
36
36
  ## Usage
@@ -104,6 +104,10 @@ jobs:
104
104
  include:
105
105
  - image: transcribe-proxy
106
106
  dockerfile: docker/transcribe-proxy.Dockerfile
107
+ - image: rag-proxy
108
+ dockerfile: docker/rag-proxy.Dockerfile
109
+ - image: memory-proxy
110
+ dockerfile: docker/memory-proxy.Dockerfile
107
111
 
108
112
  steps:
109
113
  - name: Checkout repository
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.72.4
3
+ Version: 0.72.6
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,6 +46,8 @@ 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'
49
51
  Provides-Extra: memory
50
52
  Requires-Dist: chromadb>=0.4.22; extra == 'memory'
51
53
  Requires-Dist: fastapi[standard]; extra == 'memory'
@@ -88,7 +90,7 @@ Description-Content-Type: text/markdown
88
90
 
89
91
  # Agent CLI
90
92
 
91
- <img src="https://raw.githubusercontent.com/basnijholt/agent-cli/refs/heads/main/.github/logo.svg" alt="agent-cli logo" align="right" style="width: 250px;" />
93
+ <img src="https://raw.githubusercontent.com/basnijholt/agent-cli/refs/heads/main/.github/logo.svg" alt="agent-cli logo" align="right" style="width: 200px;" />
92
94
 
93
95
  `agent-cli` is a collection of **_local-first_**, AI-powered command-line agents that run entirely on your machine.
94
96
  It provides a suite of powerful tools for voice and text interaction, designed for privacy, offline capability, and seamless integration with system-wide hotkeys and workflows.
@@ -391,7 +393,7 @@ agent-cli dev install-skill
391
393
 
392
394
  # Option 2: Install via Claude Code plugin marketplace
393
395
  claude plugin marketplace add basnijholt/agent-cli
394
- claude plugin install agent-cli@agent-cli-dev
396
+ claude plugin install agent-cli-dev@agent-cli
395
397
  ```
396
398
 
397
399
  Once installed, Claude Code can automatically use this skill when you ask to:
@@ -1,6 +1,6 @@
1
1
  # Agent CLI
2
2
 
3
- <img src="https://raw.githubusercontent.com/basnijholt/agent-cli/refs/heads/main/.github/logo.svg" alt="agent-cli logo" align="right" style="width: 250px;" />
3
+ <img src="https://raw.githubusercontent.com/basnijholt/agent-cli/refs/heads/main/.github/logo.svg" alt="agent-cli logo" align="right" style="width: 200px;" />
4
4
 
5
5
  `agent-cli` is a collection of **_local-first_**, AI-powered command-line agents that run entirely on your machine.
6
6
  It provides a suite of powerful tools for voice and text interaction, designed for privacy, offline capability, and seamless integration with system-wide hotkeys and workflows.
@@ -303,7 +303,7 @@ agent-cli dev install-skill
303
303
 
304
304
  # Option 2: Install via Claude Code plugin marketplace
305
305
  claude plugin marketplace add basnijholt/agent-cli
306
- claude plugin install agent-cli@agent-cli-dev
306
+ claude plugin install agent-cli-dev@agent-cli
307
307
  ```
308
308
 
309
309
  Once installed, Claude Code can automatically use this skill when you ask to:
@@ -0,0 +1,73 @@
1
+ {
2
+ "audio": [
3
+ "Audio recording/playback",
4
+ [
5
+ "sounddevice"
6
+ ]
7
+ ],
8
+ "faster-whisper": [
9
+ "TODO: add description",
10
+ []
11
+ ],
12
+ "kokoro": [
13
+ "TODO: add description",
14
+ []
15
+ ],
16
+ "llm": [
17
+ "LLM framework (pydantic-ai)",
18
+ [
19
+ "pydantic_ai"
20
+ ]
21
+ ],
22
+ "llm-core": [
23
+ "Minimal LLM support for Docker images",
24
+ [
25
+ "pydantic_ai"
26
+ ]
27
+ ],
28
+ "memory": [
29
+ "Long-term memory proxy",
30
+ [
31
+ "chromadb",
32
+ "yaml"
33
+ ]
34
+ ],
35
+ "mlx-whisper": [
36
+ "TODO: add description",
37
+ []
38
+ ],
39
+ "piper": [
40
+ "TODO: add description",
41
+ []
42
+ ],
43
+ "rag": [
44
+ "RAG proxy (ChromaDB, embeddings)",
45
+ [
46
+ "chromadb"
47
+ ]
48
+ ],
49
+ "server": [
50
+ "FastAPI server components",
51
+ [
52
+ "fastapi"
53
+ ]
54
+ ],
55
+ "speed": [
56
+ "Audio speed adjustment (audiostretchy)",
57
+ [
58
+ "audiostretchy"
59
+ ]
60
+ ],
61
+ "vad": [
62
+ "Voice Activity Detection (silero-vad)",
63
+ [
64
+ "silero_vad"
65
+ ]
66
+ ],
67
+ "wyoming": [
68
+ "Wyoming protocol support",
69
+ [
70
+ "wyoming"
71
+ ]
72
+ ]
73
+ }
@@ -1779,7 +1779,9 @@ def install_skill(
1779
1779
  - Works when you ask to "work on multiple features" or "parallelize tasks"
1780
1780
 
1781
1781
  **Alternative:** Install globally via Claude Code plugin marketplace:
1782
- `claude plugin marketplace add basnijholt/agent-cli`
1782
+
1783
+ 1. `claude plugin marketplace add basnijholt/agent-cli`
1784
+ 2. `claude plugin install agent-cli-dev@agent-cli`
1783
1785
  """
1784
1786
  # Use current repo root (works in worktrees too)
1785
1787
  repo_root = _get_current_repo_root()
@@ -33,6 +33,7 @@ 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"]),
36
37
  # Feature extras
37
38
  "rag": ("RAG proxy (ChromaDB, embeddings)", ["chromadb"]),
38
39
  "memory": ("Long-term memory proxy", ["chromadb", "yaml"]),
@@ -41,6 +41,17 @@
41
41
  # LLM_OPENAI_MODEL - Model name for OpenAI LLM provider
42
42
  # OPENAI_BASE_URL - OpenAI-compatible LLM endpoint
43
43
  # OPENAI_API_KEY - API key for OpenAI LLM
44
+ #
45
+ # RAG_PORT - RAG proxy port (default: 8000)
46
+ # RAG_LIMIT - Number of document chunks per query (default: 3)
47
+ # RAG_ENABLE_TOOLS - Enable read_full_document tool (default: true)
48
+ # EMBEDDING_MODEL - Embedding model for RAG/memory (default: text-embedding-3-small)
49
+ #
50
+ # MEMORY_PORT - Memory proxy port (default: 8100)
51
+ # MEMORY_TOP_K - Number of memories per query (default: 5)
52
+ # MEMORY_MAX_ENTRIES - Max entries per conversation (default: 500)
53
+ # MEMORY_SUMMARIZATION - Enable fact extraction (default: true)
54
+ # MEMORY_GIT_VERSIONING - Enable git versioning (default: true)
44
55
 
45
56
  services:
46
57
  # ===========================================================================
@@ -227,6 +238,69 @@ services:
227
238
  # - OPENAI_API_KEY=your-api-key
228
239
  restart: unless-stopped
229
240
 
241
+ # ===========================================================================
242
+ # RAG Proxy
243
+ # ===========================================================================
244
+
245
+ rag-proxy:
246
+ image: ghcr.io/basnijholt/agent-cli-rag-proxy:latest
247
+ build:
248
+ context: ..
249
+ dockerfile: docker/rag-proxy.Dockerfile
250
+ profiles: [cuda, cpu]
251
+ ports:
252
+ - "8000:8000"
253
+ volumes:
254
+ - rag-docs:/data/docs
255
+ - rag-db:/data/db
256
+ - rag-cache:/home/rag/.cache
257
+ environment:
258
+ - RAG_HOST=0.0.0.0
259
+ - RAG_PORT=${RAG_PORT:-8000}
260
+ - RAG_DOCS_FOLDER=/data/docs
261
+ - RAG_CHROMA_PATH=/data/db
262
+ - RAG_LIMIT=${RAG_LIMIT:-3}
263
+ - RAG_ENABLE_TOOLS=${RAG_ENABLE_TOOLS:-true}
264
+ - EMBEDDING_MODEL=${EMBEDDING_MODEL:-text-embedding-3-small}
265
+ - LOG_LEVEL=${LOG_LEVEL:-info}
266
+ # OpenAI-compatible backend configuration
267
+ - OPENAI_BASE_URL=${OPENAI_BASE_URL:-http://ollama:11434/v1}
268
+ - OPENAI_API_KEY=${OPENAI_API_KEY:-}
269
+ restart: unless-stopped
270
+
271
+ # ===========================================================================
272
+ # Memory Proxy
273
+ # ===========================================================================
274
+
275
+ memory-proxy:
276
+ image: ghcr.io/basnijholt/agent-cli-memory-proxy:latest
277
+ build:
278
+ context: ..
279
+ dockerfile: docker/memory-proxy.Dockerfile
280
+ profiles: [cuda, cpu]
281
+ ports:
282
+ - "8100:8100"
283
+ volumes:
284
+ - memory-data:/data/memory
285
+ - memory-cache:/home/memory/.cache
286
+ environment:
287
+ - MEMORY_HOST=0.0.0.0
288
+ - MEMORY_PORT=${MEMORY_PORT:-8100}
289
+ - MEMORY_PATH=/data/memory
290
+ - MEMORY_TOP_K=${MEMORY_TOP_K:-5}
291
+ - MEMORY_MAX_ENTRIES=${MEMORY_MAX_ENTRIES:-500}
292
+ - MEMORY_MMR_LAMBDA=${MEMORY_MMR_LAMBDA:-0.7}
293
+ - MEMORY_RECENCY_WEIGHT=${MEMORY_RECENCY_WEIGHT:-0.2}
294
+ - MEMORY_SCORE_THRESHOLD=${MEMORY_SCORE_THRESHOLD:-0.35}
295
+ - MEMORY_SUMMARIZATION=${MEMORY_SUMMARIZATION:-true}
296
+ - MEMORY_GIT_VERSIONING=${MEMORY_GIT_VERSIONING:-true}
297
+ - EMBEDDING_MODEL=${EMBEDDING_MODEL:-text-embedding-3-small}
298
+ - LOG_LEVEL=${LOG_LEVEL:-info}
299
+ # OpenAI-compatible backend configuration
300
+ - OPENAI_BASE_URL=${OPENAI_BASE_URL:-http://ollama:11434/v1}
301
+ - OPENAI_API_KEY=${OPENAI_API_KEY:-}
302
+ restart: unless-stopped
303
+
230
304
  volumes:
231
305
  ollama-data:
232
306
  name: agent-cli-ollama-data
@@ -236,3 +310,13 @@ volumes:
236
310
  name: agent-cli-whisper-cache
237
311
  tts-cache:
238
312
  name: agent-cli-tts-cache
313
+ rag-docs:
314
+ name: agent-cli-rag-docs
315
+ rag-db:
316
+ name: agent-cli-rag-db
317
+ rag-cache:
318
+ name: agent-cli-rag-cache
319
+ memory-data:
320
+ name: agent-cli-memory-data
321
+ memory-cache:
322
+ name: agent-cli-memory-cache
@@ -0,0 +1,115 @@
1
+ # Dockerfile for agent-cli Memory Proxy server
2
+ # A long-term memory proxy that stores facts and injects relevant context into LLM requests
3
+ #
4
+ # Build example:
5
+ # docker build -f docker/memory-proxy.Dockerfile -t agent-cli-memory-proxy .
6
+ #
7
+ # Run examples:
8
+ # docker run -p 8100:8100 -v ./memory:/data/memory agent-cli-memory-proxy
9
+ #
10
+ # # With custom OpenAI-compatible backend:
11
+ # docker run -p 8100:8100 \
12
+ # -v ./memory:/data/memory \
13
+ # -e OPENAI_BASE_URL=http://ollama:11434/v1 \
14
+ # agent-cli-memory-proxy
15
+ #
16
+ # Environment variables (priority: env var > config file > default):
17
+ # MEMORY_PATH - Directory for memory storage (default: /data/memory)
18
+ # MEMORY_TOP_K - Number of memories to retrieve per query (default: 5)
19
+ # MEMORY_MAX_ENTRIES - Max entries per conversation before eviction (default: 500)
20
+ # MEMORY_MMR_LAMBDA - MMR lambda 0-1, higher=relevance (default: 0.7)
21
+ # MEMORY_RECENCY_WEIGHT - Weight for recency vs semantic (default: 0.2)
22
+ # MEMORY_SCORE_THRESHOLD - Min relevance threshold (default: 0.35)
23
+ # MEMORY_SUMMARIZATION - Enable fact extraction: true/false (default: true)
24
+ # MEMORY_GIT_VERSIONING - Enable git versioning: true/false (default: true)
25
+ # EMBEDDING_MODEL - Embedding model name (default: text-embedding-3-small)
26
+ # OPENAI_BASE_URL - OpenAI-compatible API base URL
27
+ # OPENAI_API_KEY - API key for embeddings and chat
28
+ # MEMORY_HOST - Server bind address (default: 0.0.0.0)
29
+ # MEMORY_PORT - Server port (default: 8100)
30
+ # LOG_LEVEL - Logging level: debug, info, warning, error (default: info)
31
+
32
+ # =============================================================================
33
+ # Builder stage - install dependencies and project
34
+ # =============================================================================
35
+ FROM python:3.13-slim AS builder
36
+
37
+ RUN apt-get update && \
38
+ apt-get install -y --no-install-recommends git build-essential && \
39
+ apt-get clean && rm -rf /var/lib/apt/lists/*
40
+
41
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
42
+
43
+ WORKDIR /app
44
+
45
+ COPY pyproject.toml uv.lock README.md ./
46
+ COPY .git ./.git
47
+ COPY agent_cli ./agent_cli
48
+ COPY scripts ./scripts
49
+ RUN uv sync --frozen --no-dev --no-editable --extra memory
50
+
51
+ # =============================================================================
52
+ # Runtime stage - minimal image using Python slim directly
53
+ # =============================================================================
54
+ FROM python:3.13-slim
55
+
56
+ # Install runtime dependencies:
57
+ # - libgomp1: Required by onnxruntime for parallel processing
58
+ # - git: Required for memory git versioning feature
59
+ RUN apt-get update && \
60
+ apt-get install -y --no-install-recommends libgomp1 git && \
61
+ apt-get clean && rm -rf /var/lib/apt/lists/*
62
+
63
+ RUN groupadd -g 1000 memory && useradd -m -u 1000 -g memory memory
64
+
65
+ WORKDIR /app
66
+
67
+ COPY --from=builder /app/.venv /app/.venv
68
+
69
+ RUN ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
70
+
71
+ # Create data directory
72
+ RUN mkdir -p /data/memory && chown -R memory:memory /data
73
+
74
+ USER memory
75
+
76
+ # Configure git for memory versioning (required for commits)
77
+ RUN git config --global user.email "memory-proxy@agent-cli.local" && \
78
+ git config --global user.name "Memory Proxy"
79
+
80
+ # Cache directory for models (embeddings)
81
+ ENV HF_HOME=/home/memory/.cache/huggingface
82
+ RUN mkdir -p /home/memory/.cache/huggingface
83
+
84
+ EXPOSE 8100
85
+
86
+ ENV MEMORY_HOST=0.0.0.0 \
87
+ MEMORY_PORT=8100 \
88
+ MEMORY_PATH=/data/memory \
89
+ MEMORY_TOP_K=5 \
90
+ MEMORY_MAX_ENTRIES=500 \
91
+ MEMORY_MMR_LAMBDA=0.7 \
92
+ MEMORY_RECENCY_WEIGHT=0.2 \
93
+ MEMORY_SCORE_THRESHOLD=0.35 \
94
+ MEMORY_SUMMARIZATION=true \
95
+ MEMORY_GIT_VERSIONING=true \
96
+ EMBEDDING_MODEL=text-embedding-3-small \
97
+ LOG_LEVEL=info
98
+
99
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
100
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${MEMORY_PORT}/health')" || exit 1
101
+
102
+ ENTRYPOINT ["sh", "-c", "agent-cli memory proxy \
103
+ --host ${MEMORY_HOST} \
104
+ --port ${MEMORY_PORT} \
105
+ --memory-path ${MEMORY_PATH} \
106
+ --default-top-k ${MEMORY_TOP_K} \
107
+ --max-entries ${MEMORY_MAX_ENTRIES} \
108
+ --mmr-lambda ${MEMORY_MMR_LAMBDA} \
109
+ --recency-weight ${MEMORY_RECENCY_WEIGHT} \
110
+ --score-threshold ${MEMORY_SCORE_THRESHOLD} \
111
+ --embedding-model ${EMBEDDING_MODEL} \
112
+ --log-level ${LOG_LEVEL} \
113
+ $([ \"${MEMORY_SUMMARIZATION}\" = \"false\" ] && echo '--no-summarization' || echo '--summarization') \
114
+ $([ \"${MEMORY_GIT_VERSIONING}\" = \"false\" ] && echo '--no-git-versioning' || echo '--git-versioning') \
115
+ ${MEMORY_EXTRA_ARGS:-}"]
@@ -0,0 +1,100 @@
1
+ # Dockerfile for agent-cli RAG Proxy server
2
+ # A document-aware proxy that indexes files and injects relevant context into LLM requests
3
+ #
4
+ # Build example:
5
+ # docker build -f docker/rag-proxy.Dockerfile -t agent-cli-rag-proxy .
6
+ #
7
+ # Run examples:
8
+ # docker run -p 8000:8000 -v ./docs:/data/docs agent-cli-rag-proxy
9
+ #
10
+ # # With custom OpenAI-compatible backend:
11
+ # docker run -p 8000:8000 \
12
+ # -v ./docs:/data/docs \
13
+ # -v ./rag_db:/data/db \
14
+ # -e OPENAI_BASE_URL=http://ollama:11434/v1 \
15
+ # agent-cli-rag-proxy
16
+ #
17
+ # Environment variables (priority: env var > config file > default):
18
+ # RAG_DOCS_FOLDER - Folder to watch for documents (default: /data/docs)
19
+ # RAG_CHROMA_PATH - ChromaDB storage directory (default: /data/db)
20
+ # RAG_LIMIT - Number of chunks to retrieve per query (default: 3)
21
+ # RAG_ENABLE_TOOLS - Enable read_full_document tool: true/false (default: true)
22
+ # EMBEDDING_MODEL - Embedding model name (default: text-embedding-3-small)
23
+ # OPENAI_BASE_URL - OpenAI-compatible API base URL
24
+ # OPENAI_API_KEY - API key for embeddings and chat
25
+ # RAG_HOST - Server bind address (default: 0.0.0.0)
26
+ # RAG_PORT - Server port (default: 8000)
27
+ # LOG_LEVEL - Logging level: debug, info, warning, error (default: info)
28
+
29
+ # =============================================================================
30
+ # Builder stage - install dependencies and project
31
+ # =============================================================================
32
+ FROM python:3.13-slim AS builder
33
+
34
+ RUN apt-get update && \
35
+ apt-get install -y --no-install-recommends git build-essential && \
36
+ apt-get clean && rm -rf /var/lib/apt/lists/*
37
+
38
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
39
+
40
+ WORKDIR /app
41
+
42
+ COPY pyproject.toml uv.lock README.md ./
43
+ COPY .git ./.git
44
+ COPY agent_cli ./agent_cli
45
+ COPY scripts ./scripts
46
+ RUN uv sync --frozen --no-dev --no-editable --extra rag
47
+
48
+ # =============================================================================
49
+ # Runtime stage - minimal image using Python slim directly
50
+ # =============================================================================
51
+ FROM python:3.13-slim
52
+
53
+ # Install runtime dependencies:
54
+ # - libgomp1: Required by onnxruntime for parallel processing
55
+ # - git: Required for .git detection in some document types
56
+ RUN apt-get update && \
57
+ apt-get install -y --no-install-recommends libgomp1 git && \
58
+ apt-get clean && rm -rf /var/lib/apt/lists/*
59
+
60
+ RUN groupadd -g 1000 rag && useradd -m -u 1000 -g rag rag
61
+
62
+ WORKDIR /app
63
+
64
+ COPY --from=builder /app/.venv /app/.venv
65
+
66
+ RUN ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
67
+
68
+ # Create data directories
69
+ RUN mkdir -p /data/docs /data/db && chown -R rag:rag /data
70
+
71
+ USER rag
72
+
73
+ # Cache directory for models (embeddings, reranker)
74
+ ENV HF_HOME=/home/rag/.cache/huggingface
75
+ RUN mkdir -p /home/rag/.cache/huggingface
76
+
77
+ EXPOSE 8000
78
+
79
+ ENV RAG_HOST=0.0.0.0 \
80
+ RAG_PORT=8000 \
81
+ RAG_DOCS_FOLDER=/data/docs \
82
+ RAG_CHROMA_PATH=/data/db \
83
+ RAG_LIMIT=3 \
84
+ RAG_ENABLE_TOOLS=true \
85
+ EMBEDDING_MODEL=text-embedding-3-small \
86
+ LOG_LEVEL=info
87
+
88
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
89
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${RAG_PORT}/health')" || exit 1
90
+
91
+ ENTRYPOINT ["sh", "-c", "agent-cli rag-proxy \
92
+ --host ${RAG_HOST} \
93
+ --port ${RAG_PORT} \
94
+ --docs-folder ${RAG_DOCS_FOLDER} \
95
+ --chroma-path ${RAG_CHROMA_PATH} \
96
+ --limit ${RAG_LIMIT} \
97
+ --embedding-model ${EMBEDDING_MODEL} \
98
+ --log-level ${LOG_LEVEL} \
99
+ $([ \"${RAG_ENABLE_TOOLS}\" = \"false\" ] && echo '--no-rag-tools' || echo '--rag-tools') \
100
+ ${RAG_EXTRA_ARGS:-}"]
@@ -24,11 +24,9 @@
24
24
  # =============================================================================
25
25
  # Builder stage - install dependencies and project
26
26
  # =============================================================================
27
- FROM python:3.13-slim AS builder
27
+ FROM python:3.13-alpine AS builder
28
28
 
29
- RUN apt-get update && \
30
- apt-get install -y --no-install-recommends git && \
31
- apt-get clean && rm -rf /var/lib/apt/lists/*
29
+ RUN apk add --no-cache git
32
30
 
33
31
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
34
32
 
@@ -38,30 +36,24 @@ COPY pyproject.toml uv.lock README.md ./
38
36
  COPY .git ./.git
39
37
  COPY agent_cli ./agent_cli
40
38
  COPY scripts ./scripts
41
- RUN uv sync --frozen --no-dev --no-editable --extra server --extra wyoming --extra llm
39
+ RUN uv sync --frozen --no-dev --no-editable --extra server --extra wyoming --extra llm-core
42
40
 
43
41
  # =============================================================================
44
- # Runtime stage - minimal image
42
+ # Runtime stage - minimal Alpine image
45
43
  # =============================================================================
46
- FROM debian:bookworm-slim
44
+ FROM python:3.13-alpine
47
45
 
48
- COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
49
-
50
- RUN apt-get update && \
51
- apt-get install -y --no-install-recommends ffmpeg && \
52
- apt-get clean && rm -rf /var/lib/apt/lists/*
46
+ RUN apk add --no-cache ffmpeg
53
47
 
54
- ENV UV_PYTHON_INSTALL_DIR=/opt/python
55
- RUN uv python install 3.13
48
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
56
49
 
57
- RUN groupadd -g 1000 transcribe && useradd -m -u 1000 -g transcribe transcribe
50
+ RUN addgroup -g 1000 transcribe && adduser -u 1000 -G transcribe -D transcribe
58
51
 
59
52
  WORKDIR /app
60
53
 
61
54
  COPY --from=builder /app/.venv /app/.venv
62
55
 
63
- RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
64
- ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
56
+ RUN ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
65
57
 
66
58
  USER transcribe
67
59
 
@@ -71,7 +63,7 @@ ENV PROXY_HOST=0.0.0.0 \
71
63
  PROXY_PORT=61337
72
64
 
73
65
  HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
74
- CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${PROXY_PORT}/health')" || exit 1
66
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${PROXY_PORT}/health')" || exit 1
75
67
 
76
68
  ENTRYPOINT ["sh", "-c", "agent-cli server transcribe-proxy \
77
69
  --host ${PROXY_HOST} \
@@ -108,25 +108,19 @@ ENTRYPOINT ["sh", "-c", "agent-cli server tts \
108
108
  # =============================================================================
109
109
  # CPU target: CPU-only with Piper TTS
110
110
  # =============================================================================
111
- FROM debian:bookworm-slim AS cpu
111
+ FROM python:3.13-slim AS cpu
112
112
 
113
113
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
114
114
 
115
- RUN apt-get update && \
116
- apt-get install -y --no-install-recommends ffmpeg && \
117
- apt-get clean && rm -rf /var/lib/apt/lists/*
118
-
119
- ENV UV_PYTHON_INSTALL_DIR=/opt/python
120
- RUN uv python install 3.13
121
-
122
- RUN getent group 1000 || groupadd -g 1000 tts; \
123
- id -u 1000 >/dev/null 2>&1 || useradd -m -u 1000 -g 1000 tts
115
+ RUN groupadd -g 1000 tts && useradd -m -u 1000 -g 1000 tts
124
116
 
125
117
  WORKDIR /app
126
118
 
127
119
  COPY --from=builder-cpu /app/.venv /app/.venv
128
120
 
129
- RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
121
+ # Install imageio-ffmpeg for bundled static ffmpeg binary (77MB vs 420MB for Debian package)
122
+ RUN uv pip install --python /app/.venv/bin/python imageio-ffmpeg && \
123
+ ln -s $(/app/.venv/bin/python -c "import imageio_ffmpeg; print(imageio_ffmpeg.get_ffmpeg_exe())") /usr/local/bin/ffmpeg && \
130
124
  ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
131
125
  mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
132
126
 
@@ -144,7 +138,7 @@ ENV TTS_HOST=0.0.0.0 \
144
138
  TTS_DEVICE=cpu
145
139
 
146
140
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
147
- CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${TTS_PORT}/health')" || exit 1
141
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${TTS_PORT}/health')" || exit 1
148
142
 
149
143
  ENTRYPOINT ["sh", "-c", "agent-cli server tts \
150
144
  --host ${TTS_HOST} \
@@ -83,25 +83,19 @@ ENTRYPOINT ["sh", "-c", "agent-cli server whisper \
83
83
  # =============================================================================
84
84
  # CPU target: CPU-only with faster-whisper
85
85
  # =============================================================================
86
- FROM debian:bookworm-slim AS cpu
86
+ FROM python:3.13-slim AS cpu
87
87
 
88
88
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
89
89
 
90
- RUN apt-get update && \
91
- apt-get install -y --no-install-recommends ffmpeg && \
92
- apt-get clean && rm -rf /var/lib/apt/lists/*
93
-
94
- ENV UV_PYTHON_INSTALL_DIR=/opt/python
95
- RUN uv python install 3.13
96
-
97
- RUN getent group 1000 || groupadd -g 1000 whisper; \
98
- id -u 1000 >/dev/null 2>&1 || useradd -m -u 1000 -g 1000 whisper
90
+ RUN groupadd -g 1000 whisper && useradd -m -u 1000 -g 1000 whisper
99
91
 
100
92
  WORKDIR /app
101
93
 
102
94
  COPY --from=builder /app/.venv /app/.venv
103
95
 
104
- RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
96
+ # Install imageio-ffmpeg for bundled static ffmpeg binary (77MB vs 420MB for Debian package)
97
+ RUN uv pip install --python /app/.venv/bin/python imageio-ffmpeg && \
98
+ ln -s $(/app/.venv/bin/python -c "import imageio_ffmpeg; print(imageio_ffmpeg.get_ffmpeg_exe())") /usr/local/bin/ffmpeg && \
105
99
  ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
106
100
  mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
107
101
 
@@ -118,7 +112,7 @@ ENV WHISPER_HOST=0.0.0.0 \
118
112
  WHISPER_DEVICE=cpu
119
113
 
120
114
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
121
- CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${WHISPER_PORT}/health')" || exit 1
115
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${WHISPER_PORT}/health')" || exit 1
122
116
 
123
117
  ENTRYPOINT ["sh", "-c", "agent-cli server whisper \
124
118
  --host ${WHISPER_HOST} \
@@ -46,7 +46,17 @@ A local-first system that gives LLMs persistent memory across conversations, wit
46
46
 
47
47
  ### Try It Now
48
48
 
49
- Get an LLM that remembers you using [Ollama](https://ollama.com). Two options:
49
+ Get an LLM that remembers you using [Ollama](https://ollama.com). Three options:
50
+
51
+ **Option 0: With Docker Compose (easiest)**
52
+
53
+ ```bash
54
+ # Start Memory proxy with Ollama backend
55
+ docker compose -f docker/docker-compose.yml --profile cpu up memory-proxy ollama
56
+
57
+ # Point your chat client at http://localhost:8100/v1
58
+ # The LLM will now remember facts across conversations
59
+ ```
50
60
 
51
61
  **Option A: With [Open WebUI](https://github.com/open-webui/open-webui) (web interface)**
52
62
 
@@ -40,7 +40,19 @@ A local proxy that gives LLMs access to your documents using smarter multi-stage
40
40
 
41
41
  ### Try It Now
42
42
 
43
- Chat with your documents using [Ollama](https://ollama.com). Two options:
43
+ Chat with your documents using [Ollama](https://ollama.com). Three options:
44
+
45
+ **Option 0: With Docker Compose (easiest)**
46
+
47
+ ```bash
48
+ # Start RAG proxy with Ollama backend
49
+ docker compose -f docker/docker-compose.yml --profile cpu up rag-proxy ollama
50
+
51
+ # Copy your documents into the volume
52
+ docker cp ./my-docs/. $(docker volume inspect agent-cli-rag-docs --format '{{ .Mountpoint }}')/
53
+
54
+ # Point your chat client at http://localhost:8000/v1
55
+ ```
44
56
 
45
57
  **Option A: With [Open WebUI](https://github.com/open-webui/open-webui) (web interface)**
46
58