# lmcli - Large Language Model CLI `lmcli` is a versatile command-line interface for interacting with LLMs and LMMs. ## Features - Multiple model backends (Ollama, OpenAI, Anthropic, Google) - Customizable agents with tool calling - Persistent conversation management - Interactive terminal interface for seamless chat experiences - Syntax highlighting! ## Screenshots [TODO: Add screenshots of the TUI in action, showing different views and features] ## Installation To install `lmcli`, make sure you have Go installed on your system, then run: ```sh go install git.mlow.ca/mlow/lmcli@latest ``` ## Configuration `lmcli` uses a YAML configuration file located at `~/.config/lmcli/config.yaml`. Here's a sample configuration: ```yaml defaults: model: claude-3-5-sonnet-20240620 maxTokens: 3072 temperature: 0.2 conversations: titleGenerationModel: claude-3-haiku-20240307 chroma: style: onedark formatter: terminal16m agents: - name: code-helper tools: - dir_tree - read_file #- write_file systemPrompt: | You are an experienced software engineer... # ... providers: - kind: ollama models: - phi3:instruct - llama3:8b - kind: anthropic apiKey: your-api-key-here models: - claude-3-5-sonnet-20240620 - claude-3-opus-20240229 - claude-3-haiku-20240307 - kind: openai apiKey: your-api-key-here models: - gpt-4o - gpt-4-turbo - name: openrouter kind: openai apiKey: your-api-key-here baseUrl: https://openrouter.ai/api/ models: - qwen/qwen-2-72b-instruct # ... ``` Customize this file to add your own providers, agents, and models. ## Usage Here's the default help output for `lmcli`: ``` [TODO: Insert the output of `lmcli help` here] ``` ### Examples Start a new chat: ```sh lmcli chat --agent code-helper ``` Send a one-shot prompt: ```sh lmcli prompt "Explain the theory of everything" ``` ## Agents Agents in `lmcli` are configurations that combine a system prompt with a set of available tools. You can define agents in the `config.yaml` file and switch between them using the `--agent` or `-a` flag. Example: ```sh lmcli chat -a financier ``` ## Tools `lmcli` supports various tool calling. Currently built-in tools are: - `dir_tree`: Display a directory structure - `read_file`: Read the contents of a file - `write_file`: Write content to a file - `file_insert_lines`: Insert lines at a specific position in a file - `file_replace_lines`: Replace a range of lines in a file Obviously, some of these tools carry significant risk. Use wisely :) ## Contributing Contributions to `lmcli` are welcome! Feel free to open issues or submit pull requests on the project repository. For a full list of planned features and improvements, check out the [TODO.md](TODO.md) file. ## License MIT ## Acknowledgements `lmcli` is just a hobby project. Special thanks to the Go community and the creators of the libraries used in this project.