chat

January 30, 2026 · View on GitHub

A full-featured conversational AI assistant with tool-calling capabilities.

Usage

agent-cli chat [OPTIONS]

Description

A persistent, conversational agent that you can have a back-and-forth conversation with:

  1. Run the command—it starts listening for your voice
  2. Speak your command or question
  3. The agent transcribes, sends to the LLM (which can use tools), and responds
  4. The response is spoken back to you (if TTS enabled)
  5. Immediately starts listening for your next command
  6. Conversation history is saved between sessions

Interaction Controls

  • To Interrupt: Press Ctrl+C once to stop listening or speaking and return to a listening state
  • To Exit: Press Ctrl+C twice in a row to terminate the application

Examples

# Start with TTS
agent-cli chat --input-device-index 1 --tts

# List available devices
agent-cli chat --list-devices

# Custom history settings
agent-cli chat --last-n-messages 100 --history-dir ~/.my-chat-history

Options

Provider Selection

OptionDefaultDescription
--asr-providerwyomingThe ASR provider to use ('wyoming', 'openai', 'gemini').
--llm-providerollamaThe LLM provider to use ('ollama', 'openai', 'gemini').
--tts-providerwyomingThe TTS provider to use ('wyoming', 'openai', 'kokoro', 'gemini').

Audio Input

OptionDefaultDescription
--input-device-index-Audio input device index (see --list-devices). Uses system default if omitted.
--input-device-name-Select input device by name substring (e.g., MacBook or USB).
--list-devicesfalseList available audio devices with their indices and exit.

Audio Input: Wyoming

OptionDefaultDescription
--asr-wyoming-iplocalhostWyoming ASR server IP address.
--asr-wyoming-port10300Wyoming ASR server port.

Audio Input: OpenAI-compatible

OptionDefaultDescription
--asr-openai-modelwhisper-1The OpenAI model to use for ASR (transcription).
--asr-openai-base-url-Custom base URL for OpenAI-compatible ASR API (e.g., for custom Whisper server: http://localhost:9898).
--asr-openai-prompt-Custom prompt to guide transcription (optional).

Audio Input: Gemini

OptionDefaultDescription
--asr-gemini-modelgemini-3-flash-previewThe Gemini model to use for ASR (transcription).

LLM: Ollama

OptionDefaultDescription
--llm-ollama-modelgemma3:4bThe Ollama model to use. Default is gemma3:4b.
--llm-ollama-hosthttp://localhost:11434The Ollama server host. Default is http://localhost:11434.

LLM: OpenAI-compatible

OptionDefaultDescription
--llm-openai-modelgpt-5-miniThe OpenAI model to use for LLM tasks.
--openai-api-key-Your OpenAI API key. Can also be set with the OPENAI_API_KEY environment variable.
--openai-base-url-Custom base URL for OpenAI-compatible API (e.g., for llama-server: http://localhost:8080/v1).

LLM: Gemini

OptionDefaultDescription
--llm-gemini-modelgemini-3-flash-previewThe Gemini model to use for LLM tasks.
--gemini-api-key-Your Gemini API key. Can also be set with the GEMINI_API_KEY environment variable.

Audio Output

OptionDefaultDescription
--tts/--no-ttsfalseEnable text-to-speech for responses.
--output-device-index-Audio output device index (see --list-devices for available devices).
--output-device-name-Partial match on device name (e.g., 'speakers', 'headphones').
--tts-speed1.0Speech speed multiplier (1.0 = normal, 2.0 = twice as fast, 0.5 = half speed).

Audio Output: Wyoming

OptionDefaultDescription
--tts-wyoming-iplocalhostWyoming TTS server IP address.
--tts-wyoming-port10200Wyoming TTS server port.
--tts-wyoming-voice-Voice name to use for Wyoming TTS (e.g., 'en_US-lessac-medium').
--tts-wyoming-language-Language for Wyoming TTS (e.g., 'en_US').
--tts-wyoming-speaker-Speaker name for Wyoming TTS voice.

Audio Output: OpenAI-compatible

OptionDefaultDescription
--tts-openai-modeltts-1The OpenAI model to use for TTS.
--tts-openai-voicealloyVoice for OpenAI TTS (alloy, echo, fable, onyx, nova, shimmer).
--tts-openai-base-url-Custom base URL for OpenAI-compatible TTS API (e.g., http://localhost:8000/v1 for a proxy).

Audio Output: Kokoro

OptionDefaultDescription
--tts-kokoro-modelkokoroThe Kokoro model to use for TTS.
--tts-kokoro-voiceaf_skyThe voice to use for Kokoro TTS.
--tts-kokoro-hosthttp://localhost:8880/v1The base URL for the Kokoro API.

Audio Output: Gemini

OptionDefaultDescription
--tts-gemini-modelgemini-2.5-flash-preview-ttsThe Gemini model to use for TTS.
--tts-gemini-voiceKoreThe voice to use for Gemini TTS (e.g., 'Kore', 'Puck', 'Charon', 'Fenrir').

Process Management

OptionDefaultDescription
--stopfalseStop any running instance of this command.
--statusfalseCheck if an instance is currently running.
--togglefalseStart if not running, stop if running. Ideal for hotkey binding.

History Options

OptionDefaultDescription
--history-dir~/.config/agent-cli/historyDirectory for conversation history and long-term memory. Both conversation.json and long_term_memory.json are stored here.
--last-n-messages50Number of past messages to include as context for the LLM. Set to 0 to start fresh each session (memory tools still persist).

General Options

OptionDefaultDescription
--save-file-Save audio to WAV file instead of playing through speakers.
--log-levelwarningSet logging level.
--log-file-Path to a file to write logs to.
--quiet, -qfalseSuppress console output from rich.
--config-Path to a TOML configuration file.
--print-argsfalsePrint the command line arguments, including variables taken from the configuration file.

Available Tools

The chat agent has access to tools that let it interact with your system:

Note

The memory tools below use a simple, built-in JSON storage system. For the advanced, vector-backed memory system, see the memory command.

  • read_file: Read file contents
  • execute_code: Run a single command (no shell features like pipes or redirects)
  • duckduckgo_search: Search the web via DuckDuckGo
  • add_memory: Store information for future conversations
  • search_memory: Search stored memories
  • update_memory: Update existing memories
  • list_all_memories: List all stored memories
  • list_memory_categories: Show memory category summary

Example Conversation

You: "Read the pyproject.toml file and tell me the project version."
AI: (Uses read_file tool) "The project version is 0.5.0."

You: "What dependencies does it have?"
AI: "The project has the following dependencies: typer, pydantic, ..."

You: "Thanks!"
AI: "You're welcome! Let me know if you need anything else."

Conversation History

History is stored in ~/.config/agent-cli/history/ and persists between sessions.

To start fresh:

rm -rf ~/.config/agent-cli/history/*

Or limit context:

agent-cli chat --last-n-messages 10