agent-cli 0.77.0__tar.gz → 0.77.1__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 (374) hide show
  1. {agent_cli-0.77.0 → agent_cli-0.77.1}/PKG-INFO +1 -1
  2. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/daemon/cli.py +34 -3
  3. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/launchd.py +25 -0
  4. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/service_config.py +1 -0
  5. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/systemd.py +26 -0
  6. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/cli.py +12 -0
  7. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/services/tts.py +4 -1
  8. agent_cli-0.77.1/docs/commands/daemon.md +169 -0
  9. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/index.md +1 -0
  10. {agent_cli-0.77.0 → agent_cli-0.77.1}/zensical.toml +1 -0
  11. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  12. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
  13. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude-plugin/README.md +0 -0
  14. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude-plugin/marketplace.json +0 -0
  15. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude-plugin/plugin.json +0 -0
  16. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  17. {agent_cli-0.77.0 → agent_cli-0.77.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  18. {agent_cli-0.77.0 → agent_cli-0.77.1}/.cursorrules +0 -0
  19. {agent_cli-0.77.0 → agent_cli-0.77.1}/.dockerignore +0 -0
  20. {agent_cli-0.77.0 → agent_cli-0.77.1}/.env.example +0 -0
  21. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/logo.svg +0 -0
  22. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/release-drafter.yml +0 -0
  23. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/renovate.json +0 -0
  24. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/scripts/check_extras_sync.py +0 -0
  25. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/scripts/sync_requirements.py +0 -0
  26. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/automerge.yml +0 -0
  27. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/docker.yml +0 -0
  28. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/docs.yml +0 -0
  29. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/markdown-code-runner.yml +0 -0
  30. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/pytest.yml +0 -0
  31. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/release-drafter.yml +0 -0
  32. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/release.yml +0 -0
  33. {agent_cli-0.77.0 → agent_cli-0.77.1}/.github/workflows/toc.yaml +0 -0
  34. {agent_cli-0.77.0 → agent_cli-0.77.1}/.gitignore +0 -0
  35. {agent_cli-0.77.0 → agent_cli-0.77.1}/.jscpd.json +0 -0
  36. {agent_cli-0.77.0 → agent_cli-0.77.1}/.pre-commit-config.yaml +0 -0
  37. {agent_cli-0.77.0 → agent_cli-0.77.1}/.prompts/docs-review.md +0 -0
  38. {agent_cli-0.77.0 → agent_cli-0.77.1}/.prompts/pr-review.md +0 -0
  39. {agent_cli-0.77.0 → agent_cli-0.77.1}/CLAUDE.md +0 -0
  40. {agent_cli-0.77.0 → agent_cli-0.77.1}/LICENSE +0 -0
  41. {agent_cli-0.77.0 → agent_cli-0.77.1}/README.md +0 -0
  42. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/__init__.py +0 -0
  43. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/__main__.py +0 -0
  44. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_extras.json +0 -0
  45. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/.gitkeep +0 -0
  46. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/audio.txt +0 -0
  47. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
  48. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/kokoro.txt +0 -0
  49. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/llm.txt +0 -0
  50. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/memory.txt +0 -0
  51. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  52. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/piper.txt +0 -0
  53. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/rag.txt +0 -0
  54. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/server.txt +0 -0
  55. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/speed.txt +0 -0
  56. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/vad.txt +0 -0
  57. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  58. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_requirements/wyoming.txt +0 -0
  59. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/_tools.py +0 -0
  60. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/__init__.py +0 -0
  61. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/_voice_agent_common.py +0 -0
  62. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/assistant.py +0 -0
  63. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/autocorrect.py +0 -0
  64. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/chat.py +0 -0
  65. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/memory/__init__.py +0 -0
  66. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/memory/add.py +0 -0
  67. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/memory/proxy.py +0 -0
  68. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/rag_proxy.py +0 -0
  69. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/speak.py +0 -0
  70. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/transcribe.py +0 -0
  71. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/transcribe_live.py +0 -0
  72. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/agents/voice_edit.py +0 -0
  73. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/api.py +0 -0
  74. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/cli.py +0 -0
  75. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/config.py +0 -0
  76. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/config_cmd.py +0 -0
  77. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/constants.py +0 -0
  78. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/__init__.py +0 -0
  79. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/audio.py +0 -0
  80. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/audio_format.py +0 -0
  81. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/chroma.py +0 -0
  82. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/deps.py +0 -0
  83. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/openai_proxy.py +0 -0
  84. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/process.py +0 -0
  85. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/reranker.py +0 -0
  86. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/sse.py +0 -0
  87. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/transcription_logger.py +0 -0
  88. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/utils.py +0 -0
  89. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/vad.py +0 -0
  90. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/core/watch.py +0 -0
  91. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/daemon/__init__.py +0 -0
  92. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/__init__.py +0 -0
  93. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/cli.py +0 -0
  94. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
  95. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/aider.py +0 -0
  96. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/base.py +0 -0
  97. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/claude.py +0 -0
  98. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/codex.py +0 -0
  99. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  100. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
  101. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  102. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
  103. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
  104. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/coding_agents/registry.py +0 -0
  105. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/__init__.py +0 -0
  106. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/base.py +0 -0
  107. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/cursor.py +0 -0
  108. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/emacs.py +0 -0
  109. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/jetbrains.py +0 -0
  110. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/nano.py +0 -0
  111. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/neovim.py +0 -0
  112. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/registry.py +0 -0
  113. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/sublime.py +0 -0
  114. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/vim.py +0 -0
  115. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/vscode.py +0 -0
  116. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/editors/zed.py +0 -0
  117. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/project.py +0 -0
  118. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/registry.py +0 -0
  119. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/skill/SKILL.md +0 -0
  120. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/skill/examples.md +0 -0
  121. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/__init__.py +0 -0
  122. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  123. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/base.py +0 -0
  124. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/gnome.py +0 -0
  125. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/iterm2.py +0 -0
  126. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/kitty.py +0 -0
  127. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/registry.py +0 -0
  128. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/tmux.py +0 -0
  129. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/warp.py +0 -0
  130. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/terminals/zellij.py +0 -0
  131. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/dev/worktree.py +0 -0
  132. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/docs_gen.py +0 -0
  133. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/example-config.toml +0 -0
  134. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/__init__.py +0 -0
  135. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/common.py +0 -0
  136. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/extras.py +0 -0
  137. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/hotkeys.py +0 -0
  138. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/install/services.py +0 -0
  139. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/__init__.py +0 -0
  140. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_files.py +0 -0
  141. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_filters.py +0 -0
  142. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_git.py +0 -0
  143. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_indexer.py +0 -0
  144. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_ingest.py +0 -0
  145. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_persistence.py +0 -0
  146. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_prompt.py +0 -0
  147. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_retrieval.py +0 -0
  148. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_store.py +0 -0
  149. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_streaming.py +0 -0
  150. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/_tasks.py +0 -0
  151. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/api.py +0 -0
  152. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/client.py +0 -0
  153. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/engine.py +0 -0
  154. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/entities.py +0 -0
  155. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/memory/models.py +0 -0
  156. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/opts.py +0 -0
  157. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/py.typed +0 -0
  158. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/__init__.py +0 -0
  159. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/_indexer.py +0 -0
  160. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/_indexing.py +0 -0
  161. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/_prompt.py +0 -0
  162. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/_retriever.py +0 -0
  163. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/_store.py +0 -0
  164. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/_utils.py +0 -0
  165. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/api.py +0 -0
  166. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/client.py +0 -0
  167. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/engine.py +0 -0
  168. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/rag/models.py +0 -0
  169. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  170. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/__init__.py +0 -0
  171. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  172. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  173. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  174. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  175. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  176. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  177. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  178. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  179. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  180. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  181. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  182. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  183. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  184. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  185. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  186. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
  187. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  188. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-piper.sh +0 -0
  189. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  190. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  191. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  192. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run-whisper.sh +0 -0
  193. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  194. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  195. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/setup-linux.sh +0 -0
  196. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  197. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/setup-macos.sh +0 -0
  198. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
  199. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  200. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/start-all-services.sh +0 -0
  201. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/scripts/sync_extras.py +0 -0
  202. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/__init__.py +0 -0
  203. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/common.py +0 -0
  204. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/model_manager.py +0 -0
  205. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/model_registry.py +0 -0
  206. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/proxy/__init__.py +0 -0
  207. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/proxy/api.py +0 -0
  208. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/streaming.py +0 -0
  209. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/__init__.py +0 -0
  210. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/api.py +0 -0
  211. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/backends/__init__.py +0 -0
  212. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/backends/base.py +0 -0
  213. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
  214. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/backends/piper.py +0 -0
  215. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/model_manager.py +0 -0
  216. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/model_registry.py +0 -0
  217. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
  218. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/__init__.py +0 -0
  219. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/api.py +0 -0
  220. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
  221. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/backends/base.py +0 -0
  222. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  223. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
  224. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
  225. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/languages.py +0 -0
  226. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/model_manager.py +0 -0
  227. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/model_registry.py +0 -0
  228. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  229. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/services/__init__.py +0 -0
  230. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/services/_wyoming_utils.py +0 -0
  231. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/services/asr.py +0 -0
  232. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/services/llm.py +0 -0
  233. {agent_cli-0.77.0 → agent_cli-0.77.1}/agent_cli/services/wake_word.py +0 -0
  234. {agent_cli-0.77.0 → agent_cli-0.77.1}/docker/docker-compose.yml +0 -0
  235. {agent_cli-0.77.0 → agent_cli-0.77.1}/docker/memory-proxy.Dockerfile +0 -0
  236. {agent_cli-0.77.0 → agent_cli-0.77.1}/docker/rag-proxy.Dockerfile +0 -0
  237. {agent_cli-0.77.0 → agent_cli-0.77.1}/docker/transcribe-proxy.Dockerfile +0 -0
  238. {agent_cli-0.77.0 → agent_cli-0.77.1}/docker/tts.Dockerfile +0 -0
  239. {agent_cli-0.77.0 → agent_cli-0.77.1}/docker/whisper.Dockerfile +0 -0
  240. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/CNAME +0 -0
  241. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/architecture/index.md +0 -0
  242. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/architecture/memory.md +0 -0
  243. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/architecture/rag.md +0 -0
  244. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/assistant.md +0 -0
  245. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/autocorrect.md +0 -0
  246. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/chat.md +0 -0
  247. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/config.md +0 -0
  248. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/dev.md +0 -0
  249. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/install-extras.md +0 -0
  250. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/install-hotkeys.md +0 -0
  251. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/install-services.md +0 -0
  252. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/memory.md +0 -0
  253. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/rag-proxy.md +0 -0
  254. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/server/index.md +0 -0
  255. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/server/transcribe-proxy.md +0 -0
  256. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/server/tts.md +0 -0
  257. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/server/whisper.md +0 -0
  258. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/speak.md +0 -0
  259. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/start-services.md +0 -0
  260. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/transcribe-live.md +0 -0
  261. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/transcribe.md +0 -0
  262. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/commands/voice-edit.md +0 -0
  263. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/configuration.md +0 -0
  264. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/getting-started.md +0 -0
  265. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/iOS_Shortcut_Guide.md +0 -0
  266. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/index.md +0 -0
  267. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/installation/docker.md +0 -0
  268. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/installation/index.md +0 -0
  269. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/installation/linux.md +0 -0
  270. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/installation/macos.md +0 -0
  271. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/installation/nixos.md +0 -0
  272. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/installation/windows.md +0 -0
  273. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/logo-clean.svg +0 -0
  274. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  275. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/run_markdown_code_runner.py +0 -0
  276. {agent_cli-0.77.0 → agent_cli-0.77.1}/docs/system-integration.md +0 -0
  277. {agent_cli-0.77.0 → agent_cli-0.77.1}/example.agent-cli-config.toml +0 -0
  278. {agent_cli-0.77.0 → agent_cli-0.77.1}/justfile +0 -0
  279. {agent_cli-0.77.0 → agent_cli-0.77.1}/pyproject.toml +0 -0
  280. {agent_cli-0.77.0 → agent_cli-0.77.1}/shell.nix +0 -0
  281. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/__init__.py +0 -0
  282. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/__init__.py +0 -0
  283. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_fix_my_text.py +0 -0
  284. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_interactive.py +0 -0
  285. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_interactive_extra.py +0 -0
  286. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_memory_add.py +0 -0
  287. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_speak.py +0 -0
  288. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_speak_e2e.py +0 -0
  289. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_transcribe.py +0 -0
  290. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_transcribe_agent.py +0 -0
  291. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_transcribe_e2e.py +0 -0
  292. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_transcribe_live.py +0 -0
  293. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_transcribe_recovery.py +0 -0
  294. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_tts_common.py +0 -0
  295. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_tts_common_extra.py +0 -0
  296. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_voice_agent_common.py +0 -0
  297. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_voice_edit.py +0 -0
  298. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_voice_edit_e2e.py +0 -0
  299. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/agents/test_wake_word_assistant.py +0 -0
  300. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/conftest.py +0 -0
  301. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/core/__init__.py +0 -0
  302. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/core/test_audio_format.py +0 -0
  303. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/core/test_chroma.py +0 -0
  304. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/core/test_sse.py +0 -0
  305. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/core/test_vad.py +0 -0
  306. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/core/test_watch.py +0 -0
  307. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/__init__.py +0 -0
  308. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_cli.py +0 -0
  309. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_coding_agents.py +0 -0
  310. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_editors.py +0 -0
  311. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_project.py +0 -0
  312. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_terminals.py +0 -0
  313. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_verification.py +0 -0
  314. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/dev/test_worktree.py +0 -0
  315. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/install/__init__.py +0 -0
  316. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/install/test_extras.py +0 -0
  317. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/__init__.py +0 -0
  318. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_api_health.py +0 -0
  319. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_api_integration_liveish.py +0 -0
  320. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_client.py +0 -0
  321. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_engine.py +0 -0
  322. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_files.py +0 -0
  323. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_filters.py +0 -0
  324. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_git_integration.py +0 -0
  325. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_indexer.py +0 -0
  326. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_memory_integration.py +0 -0
  327. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_proxy_passthrough.py +0 -0
  328. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_store.py +0 -0
  329. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/memory/test_utils.py +0 -0
  330. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/mocks/__init__.py +0 -0
  331. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/mocks/audio.py +0 -0
  332. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/mocks/llm.py +0 -0
  333. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/mocks/wyoming.py +0 -0
  334. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/__init__.py +0 -0
  335. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_api.py +0 -0
  336. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_engine.py +0 -0
  337. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_history.py +0 -0
  338. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_indexer.py +0 -0
  339. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_indexing.py +0 -0
  340. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_rag_client.py +0 -0
  341. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_rag_integration_liveish.py +0 -0
  342. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  343. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_retriever.py +0 -0
  344. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_store.py +0 -0
  345. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/rag/test_utils.py +0 -0
  346. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_api.py +0 -0
  347. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_api_integration.py +0 -0
  348. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_asr.py +0 -0
  349. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_asr_recovery.py +0 -0
  350. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_audio_e2e.py +0 -0
  351. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_cli.py +0 -0
  352. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_config.py +0 -0
  353. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_config_cmd.py +0 -0
  354. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_daemon.py +0 -0
  355. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_docs_gen.py +0 -0
  356. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_env_vars.py +0 -0
  357. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_json_output.py +0 -0
  358. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_llm.py +0 -0
  359. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_llm_gemini.py +0 -0
  360. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_memory_tools.py +0 -0
  361. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_mlx_backend.py +0 -0
  362. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_process_manager.py +0 -0
  363. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_requires_extras.py +0 -0
  364. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_server_streaming.py +0 -0
  365. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_server_tts.py +0 -0
  366. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_server_whisper.py +0 -0
  367. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_services.py +0 -0
  368. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_tools.py +0 -0
  369. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_transformers_backend.py +0 -0
  370. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_tts.py +0 -0
  371. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_utils.py +0 -0
  372. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_wake_word.py +0 -0
  373. {agent_cli-0.77.0 → agent_cli-0.77.1}/tests/test_wyoming_utils.py +0 -0
  374. {agent_cli-0.77.0 → agent_cli-0.77.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.77.0
3
+ Version: 0.77.1
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>
@@ -62,10 +62,18 @@ def status_cmd(
62
62
  help="Service to check, or omit for all services",
63
63
  ),
64
64
  ] = None,
65
+ logs: Annotated[
66
+ int,
67
+ typer.Option(
68
+ "--logs",
69
+ "-l",
70
+ help="Number of recent log lines to show (0 to disable)",
71
+ ),
72
+ ] = 10,
65
73
  ) -> None:
66
74
  """Check status of installed daemons.
67
75
 
68
- Shows whether each daemon is installed and running.
76
+ Shows whether each daemon is installed and running, along with recent log output.
69
77
 
70
78
  Examples:
71
79
  # Check all daemons
@@ -74,6 +82,12 @@ def status_cmd(
74
82
  # Check specific daemon
75
83
  agent-cli daemon status whisper
76
84
 
85
+ # Show more log lines
86
+ agent-cli daemon status tts --logs 20
87
+
88
+ # Hide logs
89
+ agent-cli daemon status --logs 0
90
+
77
91
  """
78
92
  try:
79
93
  manager = get_service_manager()
@@ -102,12 +116,29 @@ def status_cmd(
102
116
  else:
103
117
  console.print(f" {svc_name}: [yellow]installed but not running[/yellow]")
104
118
 
119
+ # Show recent logs for installed services
120
+ if logs > 0 and status.installed:
121
+ log_lines = manager.get_recent_logs(svc_name, logs)
122
+ if log_lines:
123
+ console.print()
124
+ console.print(f" [dim]Recent logs ({len(log_lines)} lines):[/dim]")
125
+ max_line_width = 120
126
+ for line in log_lines:
127
+ # Truncate long lines for readability
128
+ display_line = (
129
+ line[:max_line_width] + "..." if len(line) > max_line_width else line
130
+ )
131
+ console.print(f" [dim]{display_line}[/dim]")
132
+ elif status.running:
133
+ console.print()
134
+ console.print(" [dim]No recent logs available[/dim]")
135
+
105
136
  console.print()
106
137
  system = platform.system()
107
138
  if system == "Darwin":
108
- console.print("[dim]Log locations: ~/Library/Logs/agent-cli-<service>/[/dim]")
139
+ console.print("[dim]Full logs: ~/Library/Logs/agent-cli-<service>/[/dim]")
109
140
  else:
110
- console.print("[dim]Log locations: journalctl --user -u agent-cli-<service>[/dim]")
141
+ console.print("[dim]Full logs: journalctl --user -u agent-cli-<service> -f[/dim]")
111
142
 
112
143
 
113
144
  def _confirm_action(message: str) -> bool:
@@ -46,6 +46,30 @@ def _get_log_command(service_name: str) -> str:
46
46
  return f"tail -f {log_dir}/*.log"
47
47
 
48
48
 
49
+ def _get_recent_logs(service_name: str, num_lines: int = 10) -> list[str]:
50
+ """Get recent log lines for a service."""
51
+ log_dir = _get_log_dir(service_name)
52
+ stderr_log = log_dir / "stderr.log"
53
+ stdout_log = log_dir / "stdout.log"
54
+
55
+ lines: list[str] = []
56
+
57
+ # Prefer stdout as it has structured output (startup message, usage examples)
58
+ # stderr often has noisy warnings from libraries like PyTorch/Kokoro
59
+ for log_file in [stdout_log, stderr_log]:
60
+ if log_file.exists():
61
+ try:
62
+ with log_file.open() as f:
63
+ all_lines = f.readlines()
64
+ lines = [line.rstrip() for line in all_lines[-num_lines:]]
65
+ if lines:
66
+ break
67
+ except OSError:
68
+ continue
69
+
70
+ return lines
71
+
72
+
49
73
  def _generate_plist(
50
74
  service: ServiceConfig,
51
75
  uv_path: Path,
@@ -217,4 +241,5 @@ manager = ServiceManager(
217
241
  uninstall_service=_uninstall_service,
218
242
  get_service_status=_get_service_status,
219
243
  get_log_command=_get_log_command,
244
+ get_recent_logs=_get_recent_logs,
220
245
  )
@@ -171,6 +171,7 @@ class ServiceManager(NamedTuple):
171
171
  uninstall_service: Callable[[str], UninstallResult]
172
172
  get_service_status: Callable[[str], ServiceStatus]
173
173
  get_log_command: Callable[[str], str]
174
+ get_recent_logs: Callable[[str, int], list[str]]
174
175
 
175
176
 
176
177
  def get_service_manager() -> ServiceManager:
@@ -36,6 +36,31 @@ def _get_log_command(service_name: str) -> str:
36
36
  return f"journalctl --user -u agent-cli-{service_name} -f"
37
37
 
38
38
 
39
+ def _get_recent_logs(service_name: str, num_lines: int = 10) -> list[str]:
40
+ """Get recent log lines for a service using journalctl."""
41
+ result = subprocess.run(
42
+ [ # noqa: S607
43
+ "journalctl",
44
+ "--user",
45
+ "-u",
46
+ f"agent-cli-{service_name}",
47
+ "-n",
48
+ str(num_lines),
49
+ "--no-pager",
50
+ "-o",
51
+ "cat", # Output only the message, no metadata
52
+ ],
53
+ capture_output=True,
54
+ text=True,
55
+ check=False,
56
+ )
57
+
58
+ if result.returncode != 0:
59
+ return []
60
+
61
+ return [line.rstrip() for line in result.stdout.splitlines() if line.strip()]
62
+
63
+
39
64
  def _generate_unit_file(
40
65
  service: ServiceConfig,
41
66
  uv_path: Path,
@@ -252,4 +277,5 @@ manager = ServiceManager(
252
277
  uninstall_service=_uninstall_service,
253
278
  get_service_status=_get_service_status,
254
279
  get_log_command=_get_log_command,
280
+ get_recent_logs=_get_recent_logs,
255
281
  )
@@ -803,6 +803,18 @@ def tts_cmd( # noqa: PLR0915
803
803
  'input="Hello")[/cyan]',
804
804
  )
805
805
  console.print()
806
+ voice = "af_heart" if resolved_backend == "kokoro" else "alloy"
807
+ console.print("[dim]Usage with agent-cli:[/dim]")
808
+ console.print(
809
+ f' [cyan]ag speak "Hello" --tts-provider openai '
810
+ f"--tts-openai-base-url http://localhost:{port}/v1 --tts-openai-voice {voice}[/cyan]",
811
+ )
812
+ if not no_wyoming:
813
+ console.print(
814
+ f' [cyan]ag speak "Hello" --tts-provider wyoming --tts-wyoming-ip {host} '
815
+ f"--tts-wyoming-port {wyoming_port}[/cyan]",
816
+ )
817
+ console.print()
806
818
 
807
819
  # Create and run the app
808
820
  from agent_cli.server.tts.api import create_app # noqa: PLC0415
@@ -220,10 +220,13 @@ async def _synthesize_speech_kokoro(
220
220
  **_kwargs: object,
221
221
  ) -> bytes | None:
222
222
  """Synthesize speech from text using Kokoro TTS server via OpenAI client."""
223
+ host = kokoro_tts_cfg.tts_kokoro_host
224
+ if not host.startswith(("http://", "https://")):
225
+ host = f"http://{host}"
223
226
  openai_tts_cfg = config.OpenAITTS(
224
227
  tts_openai_model=kokoro_tts_cfg.tts_kokoro_model,
225
228
  tts_openai_voice=kokoro_tts_cfg.tts_kokoro_voice,
226
- tts_openai_base_url=kokoro_tts_cfg.tts_kokoro_host,
229
+ tts_openai_base_url=host,
227
230
  )
228
231
  try:
229
232
  return await synthesize_speech_openai(
@@ -0,0 +1,169 @@
1
+ ---
2
+ icon: lucide/settings
3
+ ---
4
+
5
+ # daemon
6
+
7
+ Manage agent-cli servers as background daemons.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ agent-cli daemon [COMMAND] [OPTIONS]
13
+ ```
14
+
15
+ ## Description
16
+
17
+ Install, uninstall, and monitor agent-cli servers running as system daemons:
18
+
19
+ - **macOS**: launchd services (`~/Library/LaunchAgents/`)
20
+ - **Linux**: systemd user services (`~/.config/systemd/user/`)
21
+
22
+ Daemons run via `uv tool run` and start automatically at login.
23
+
24
+ ## Available Daemons
25
+
26
+ | Daemon | Description | Ports |
27
+ |--------|-------------|-------|
28
+ | `whisper` | Speech-to-text ASR server | 10300/10301 |
29
+ | `tts` | Text-to-speech (Kokoro) | 10200/10201 |
30
+ | `transcription-proxy` | ASR provider proxy | 61337 |
31
+
32
+ ## Commands
33
+
34
+ ### `status`
35
+
36
+ Check status of installed daemons.
37
+
38
+ ```bash
39
+ # Check all daemons
40
+ agent-cli daemon status
41
+
42
+ # Check specific daemon
43
+ agent-cli daemon status whisper
44
+ ```
45
+
46
+ ### `install`
47
+
48
+ Install server daemons as background processes.
49
+
50
+ ```bash
51
+ # Install specific daemons
52
+ agent-cli daemon install whisper tts
53
+
54
+ # Install all daemons
55
+ agent-cli daemon install --all
56
+
57
+ # Skip confirmation prompts
58
+ agent-cli daemon install whisper -y
59
+ ```
60
+
61
+ **Options:**
62
+
63
+ | Option | Description |
64
+ |--------|-------------|
65
+ | `--all, -a` | Install all available services |
66
+ | `--skip-deps` | Skip uv dependency check |
67
+ | `--no-confirm, -y` | Skip confirmation prompts |
68
+
69
+ ### `uninstall`
70
+
71
+ Uninstall server daemons.
72
+
73
+ ```bash
74
+ # Uninstall specific daemons
75
+ agent-cli daemon uninstall whisper tts
76
+
77
+ # Uninstall all daemons
78
+ agent-cli daemon uninstall --all
79
+ ```
80
+
81
+ **Options:**
82
+
83
+ | Option | Description |
84
+ |--------|-------------|
85
+ | `--all, -a` | Uninstall all installed services |
86
+ | `--no-confirm, -y` | Skip confirmation prompts |
87
+
88
+ ## Examples
89
+
90
+ ```bash
91
+ # Install whisper as a background daemon
92
+ agent-cli daemon install whisper
93
+
94
+ # Check status of all daemons
95
+ agent-cli daemon status
96
+
97
+ # Uninstall a daemon
98
+ agent-cli daemon uninstall whisper
99
+ ```
100
+
101
+ ## Logs
102
+
103
+ - **macOS**: `~/Library/Logs/agent-cli-<service>/`
104
+ - **Linux**: `journalctl --user -u agent-cli-<service> -f`
105
+
106
+ ## Full Help
107
+
108
+ <details>
109
+ <summary>See the output of <code>agent-cli daemon --help</code></summary>
110
+
111
+ <!-- CODE:BASH:START -->
112
+ <!-- echo '```yaml' -->
113
+ <!-- export NO_COLOR=1 -->
114
+ <!-- export TERM=dumb -->
115
+ <!-- export COLUMNS=90 -->
116
+ <!-- export TERMINAL_WIDTH=90 -->
117
+ <!-- agent-cli daemon --help -->
118
+ <!-- echo '```' -->
119
+ <!-- CODE:END -->
120
+ <!-- OUTPUT:START -->
121
+ <!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
122
+ ```yaml
123
+
124
+ Usage: agent-cli daemon [OPTIONS] COMMAND [ARGS]...
125
+
126
+ Manage agent-cli servers as background daemons.
127
+
128
+ Install, uninstall, and monitor agent-cli servers running as system daemons (launchd on
129
+ macOS, systemd on Linux).
130
+
131
+ Available daemons:
132
+
133
+
134
+ Daemon Description Ports
135
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
136
+ whisper Speech-to-text ASR 10300/10301
137
+ tts Text-to-speech (Kokoro) 10200/10201
138
+ transcription-proxy ASR provider proxy 61337
139
+
140
+
141
+ Examples:
142
+
143
+
144
+ # Install whisper as a background daemon
145
+ agent-cli daemon install whisper
146
+
147
+ # Check status of all daemons
148
+ agent-cli daemon status
149
+
150
+ # Uninstall a daemon
151
+ agent-cli daemon uninstall whisper
152
+
153
+
154
+ Daemons run via uv tool run and start automatically at login.
155
+
156
+ ╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
157
+ │ --help -h Show this message and exit. │
158
+ ╰────────────────────────────────────────────────────────────────────────────────────────╯
159
+ ╭─ Commands ─────────────────────────────────────────────────────────────────────────────╮
160
+ │ status Check status of installed daemons. │
161
+ │ install Install server daemons as background processes. │
162
+ │ uninstall Uninstall server daemons. │
163
+ ╰────────────────────────────────────────────────────────────────────────────────────────╯
164
+
165
+ ```
166
+
167
+ <!-- OUTPUT:END -->
168
+
169
+ </details>
@@ -30,6 +30,7 @@ Agent CLI provides multiple commands, each designed for a specific purpose.
30
30
  | [`rag-proxy`](rag-proxy.md) | RAG server | Chat with your documents |
31
31
  | [`memory`](memory.md) | Long-term memory | Persistent conversation memory |
32
32
  | [`server`](server/index.md) | ASR & TTS servers | Local Whisper and Kokoro/Piper with TTL-based memory management |
33
+ | [`daemon`](daemon.md) | Service manager | Install/manage servers as system daemons |
33
34
 
34
35
  The [`server`](server/index.md) command provides local ASR (speech-to-text) and TTS (text-to-speech) servers with unique advantages over standalone alternatives:
35
36
 
@@ -46,6 +46,7 @@ nav = [
46
46
  { "tts" = "commands/server/tts.md" },
47
47
  { "transcribe-proxy" = "commands/server/transcribe-proxy.md" },
48
48
  ] },
49
+ { "daemon" = "commands/daemon.md" },
49
50
  ] },
50
51
  { "Setup" = [
51
52
  { "config" = "commands/config.md" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes