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.
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/README.md +1 -1
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/docker.yml +4 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/PKG-INFO +5 -3
- {agent_cli-0.72.4 → agent_cli-0.72.6}/README.md +2 -2
- agent_cli-0.72.6/agent_cli/_extras.json +73 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/cli.py +3 -1
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/sync_extras.py +1 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/docker-compose.yml +84 -0
- agent_cli-0.72.6/docker/memory-proxy.Dockerfile +115 -0
- agent_cli-0.72.6/docker/rag-proxy.Dockerfile +100 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/transcribe-proxy.Dockerfile +10 -18
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/tts.Dockerfile +6 -12
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docker/whisper.Dockerfile +6 -12
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/architecture/memory.md +11 -1
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/architecture/rag.md +13 -1
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/install-extras.md +7 -6
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/docker.md +23 -1
- {agent_cli-0.72.4 → agent_cli-0.72.6}/pyproject.toml +2 -1
- {agent_cli-0.72.4 → agent_cli-0.72.6}/uv.lock +5 -1
- agent_cli-0.72.4/agent_cli/_extras.json +0 -14
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.cursorrules +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.dockerignore +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.env.example +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/logo.svg +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/release-drafter.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/renovate.json +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/release.yml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.gitignore +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.jscpd.json +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.prompts/docs-review.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/.prompts/pr-review.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/CLAUDE.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/LICENSE +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/__main__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/_tools.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/cli.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/config.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/constants.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/process.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/common.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/install/services.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/opts.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/py.typed +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/common.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/CNAME +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/architecture/index.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/assistant.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/chat.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/config.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/dev.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/index.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/install-services.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/memory.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/index.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/speak.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/start-services.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/configuration.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/getting-started.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/index.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/index.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/linux.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/macos.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/nixos.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/installation/windows.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/logo-clean.svg +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/docs/system-integration.md +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/justfile +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/shell.nix +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/conftest.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_sse.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_vad.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/core/test_watch.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_project.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/install/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/install/test_extras.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_client.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_files.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_store.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/audio.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/llm.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/__init__.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_history.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_store.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_api.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_api_integration.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_asr.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_cli.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_config.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_env_vars.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_json_output.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_llm.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_process_manager.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_server_tts.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_services.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_tools.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_tts.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_utils.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_wake_word.py +0 -0
- {agent_cli-0.72.4 → agent_cli-0.72.6}/tests/test_wyoming_utils.py +0 -0
- {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
|
|
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.
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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
|
-
|
|
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-
|
|
27
|
+
FROM python:3.13-alpine AS builder
|
|
28
28
|
|
|
29
|
-
RUN
|
|
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
|
|
44
|
+
FROM python:3.13-alpine
|
|
47
45
|
|
|
48
|
-
|
|
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
|
-
|
|
55
|
-
RUN uv python install 3.13
|
|
48
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
56
49
|
|
|
57
|
-
RUN
|
|
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 -
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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).
|
|
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).
|
|
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
|
|