{"id":20700195,"url":"https://github.com/paulrobello/par_gpt","last_synced_at":"2025-04-22T22:33:48.182Z","repository":{"id":261140479,"uuid":"883392187","full_name":"paulrobello/par_gpt","owner":"paulrobello","description":"CLI LLM / Agent multi-tool","archived":false,"fork":false,"pushed_at":"2025-04-10T01:06:28.000Z","size":5323,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T02:20:09.207Z","etag":null,"topics":["agents","ai","cli"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paulrobello.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-04T22:11:44.000Z","updated_at":"2025-04-10T01:06:32.000Z","dependencies_parsed_at":"2025-01-08T05:20:45.148Z","dependency_job_id":"bc992c9f-0fcc-44aa-8313-3e624bfe1403","html_url":"https://github.com/paulrobello/par_gpt","commit_stats":null,"previous_names":["paulrobello/par_gpt"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2Fpar_gpt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2Fpar_gpt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2Fpar_gpt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2Fpar_gpt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulrobello","download_url":"https://codeload.github.com/paulrobello/par_gpt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250334144,"owners_count":21413518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","cli"],"created_at":"2024-11-17T00:33:57.497Z","updated_at":"2025-04-22T22:33:48.174Z","avatar_url":"https://github.com/paulrobello.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PAR GPT\n\n## Description\n\nA flexible command-line interface for interacting with various AI language models, supporting multiple providers and\ncustomizable output formats.\n\nPAR GPT has grown into a swiss army tool that help accelerate many tasks I deal with on a daily basis.\nSome features / functions may be kind of niche to things I work on but could be useful to others as well.\n\n**NOTE: This is a very work in progress project and may break at any time.**\n\n## Features\n\n* Can be run in basic LLM mode or agent mode that can use tools\n* Shows pricing info when requested\n* Support for multiple AI providers (OpenAI, Anthropic, Groq, Google, Ollama, Bedrock)\n* Support for custom output formats Markdown, CSV, etc.\n* Support for custom context sources stdin, file, url, and web search\n\n## Technology\n\n- Python 3.11+\n- Rich for terminal output\n- Typer for CLI interface\n- Support for multiple AI providers (OpenAI, Ollama, Bedrock)\n- Uses my [PAR AI Core](https://github.com/paulrobello/par_ai_core)\n\n## Prerequisites\n\n- Python 3.11 or higher\n- UV package manager\n- API keys for chosen AI provider (except for Ollama and LlamaCpp)\n    - See provider-specific documentation for required API key environment variables\n- If you want to use image or audio features ensure you install ffmpeg\n- If you want to use audio features you may need portaudio installed\n\n### **Install ffmpeg**:\n\nYou can download an installer for your OS from the [ffmpeg Website](https://ffmpeg.org/download.html).  \n\nOr use a package manager:\n\n- **On Ubuntu or Debian**:\n    ```bash\n    sudo apt update \u0026\u0026 sudo apt install ffmpeg\n    ```\n\n- **On Arch Linux**:\n    ```bash\n    sudo pacman -S ffmpeg\n    ```\n\n- **On MacOS using Homebrew** ([https://brew.sh/](https://brew.sh/)):\n    ```bash\n    brew install ffmpeg\n    ```\n\n- **On Windows using Winget** [official documentation](https://learn.microsoft.com/en-us/windows/package-manager/winget/) :\n    ```bash\n    winget install Gyan.FFmpeg\n    ```\n      \n- **On Windows using Chocolatey** ([https://chocolatey.org/](https://chocolatey.org/)):\n    ```bash\n    choco install ffmpeg\n    ```\n\n- **On Windows using Scoop** ([https://scoop.sh/](https://scoop.sh/)):\n    ```bash\n    scoop install ffmpeg\n    ```    \n\n### **Install portaudio**:\n\n- **On Linux**:\n  ```bash\n  sudo apt-get update\n  sudo apt-get install portaudio19-dev\n  ```\n\n- **On MacOS**:\n  ```bash\n  brew install portaudio\n  ```\n\n### **Install Clang**:\n- **On Linux**:\n  ```bash\n  sudo apt-get update\n  sudo apt-get install clang\n  ```\n\n\n## Installation\n\n### Source\n\n```shell\ngit clone https://github.com/paulrobello/par_gpt.git\ncd par_gpt\nuv tool install .\n```\n\n### GitHub\n\n```shell\nuv tool install git+https://github.com/paulrobello/par_gpt\n```\n\n## Update\n\n### Source\n\n```shell\ncd par_gpt\ngit pull\nuv tool install -U --force .\n```\n\n### GitHub\n\n```shell\nuv tool install -U --force git+https://github.com/paulrobello/par_gpt\n```\n\n## Usage\n\n```shell\npar_gpt [OPTIONS]\n```\n\n## CLI Args\n### Global Options\n\n```\n--ai-provider          -a      [Ollama|LlamaCpp|OpenRouter|OpenAI|Google|Github|XAI|Anthropic|Groq|Mistral|Bedrock]  AI provider to use for processing [env var: PARGPT_AI_PROVIDER] [default: OpenAI]\n--model                -m      TEXT                                                                                  AI model to use for processing. If not specified, a default model will be used. [env var: PARGPT_MODEL] [default: None]\n--fallback-models      -b      TEXT                                                                                  Fallback models to use if the specified model is not available. [env var: PARGPT_FALLBACK_MODELS] [default: None]\n--light-model          -l                                                                                            Use a light model for processing. If not specified, a default model will be used. [env var: PARGPT_LIGHT_MODEL]\n--ai-base-url          -b      TEXT                                                                                  Override the base URL for the AI provider. [env var: PARGPT_AI_BASE_URL] [default: None]\n--temperature          -t      FLOAT                                                                                 Temperature to use for processing. If not specified, a default temperature will be used. [env var: PARGPT_TEMPERATURE] [default: 0.5]\n--user-agent-appid     -U      TEXT                                                                                  Extra data to include in the User-Agent header for the AI provider. [env var: PARGPT_USER_AGENT_APPID] [default: None]\n--pricing              -p      [none|price|details]                                                                  Enable pricing summary display [env var: PARGPT_PRICING] [default: none]\n--display-output       -d      [none|plain|md|csv|json]                                                              Display output in terminal (none, plain, md, csv, or json) [env var: PARGPT_DISPLAY_OUTPUT] [default: md]\n--context-location     -f      TEXT                                                                                  Location of context to use for processing.\n--system-prompt        -s      TEXT                                                                                  System prompt to use for processing. If not specified, a default system prompt will be used. [default: None]\n--user-prompt          -u      TEXT                                                                                  User prompt to use for processing. If not specified, a default user prompt will be used. [default: None]\n--max-context-size     -M      INTEGER                                                                               Maximum context size when provider supports it. 0 = default. [env var: PARGPT_MAX_CONTEXT_SIZE] [default: 0]\n--copy-to-clipboard    -c                                                                                            Copy output to clipboard\n--copy-from-clipboard  -C                                                                                            Copy context or context location from clipboard\n--debug                -D                                                                                            Enable debug mode [env var: PARGPT_DEBUG]\n--show-config          -S                                                                                            Show config [env var: PARGPT_SHOW_CONFIG]\n--user                 -u      TEXT                                                                                  User to use for memory and preferences. [env var: PARGPT_USER] [default: ogged in users username]\n--redis-host           -r      TEXT                                                                                  Host or ip of redis server. Used for memory functions. [env var: PARGPT_REDIS_HOST] [default: localhost]\n--redis-port           -R      INTEGER                                                                               Redis port number. Used for memory functions. [env var: PARGPT_REDIS_PORT] [default: 6379]\n--tts                  -T                                                                                            Use TTS for LLM response. [env var: PARGPT_TTS]\n--tts-provider                 [local|kokoro|elevenlabs|openai]                                                      Provider to use for TTS. Defaults to kokoro [env var: PARGPT_TTS_PROVIDER] [default: None]\n--tts-voice                    TEXT                                                                                  Voice to use for TTS. Depends on TTS provider chosen. [env var: PARGPT_TTS_VOICE] [default: None]\n--tts-list-voices                                                                                                    List voices for selected TTS provider.\n--voice-input                                                                                                        Use voice input.\n--chat-history                 TEXT                                                                                  Save and or resume chat history from file [env var: PARGPT_CHAT_HISTORY] [default: None]\n--loop-mode            -L      [one_shot|infinite]                                                                   One shot or infinite mode [env var: PARGPT_LOOP_MODE] [default: one_shot]\n--version              -v\n--install-completion                                                                                                 Install completion for the current shell.\n--show-completion                                                                                                    Show completion for the current shell, to copy it or customize the installation.\n--help                                                                                                               Show this message and exit.\n```\n\n### CLI Commands\n```\nshow-env          Show environment context.\nllm               Basic LLM mode with no tools.\nagent             Full agent with dynamic tools.\ngit               Git commit helper.\ncode-review       Review code.\ngenerate-prompt   Use meta prompting to generate a new prompt.\nsandbox           Build and run code runner docker sandbox.\nupdate-deps       Update python project dependencies.\npub-repo-gh       Create and publish a github repository using current local git repo as source.\ntinify            Compress image using tinify.\npi-profile        Convert Pyinstrument json report to markdown\n```\n\n### CLI agent Arguments\n```\n--max-iterations   -i      INTEGER  Maximum number of iterations to run when in agent mode. [env var: PARGPT_MAX_ITERATIONS] [default: 5]\n--show-tool-calls  -T               Show tool calls [env var: PARGPT_SHOW_TOOL_CALLS]\n--yes-to-all       -y               Yes to all prompts [env var: PARGPT_YES_TO_ALL]\n--repl                              Enable REPL tool [env var: PARGPT_REPL]\n--code-sandbox     -c               Enable code sandbox tool. Requires a running code sandbox container. [env var: PARGPT_CODE_SANDBOX]\n```\n\n### CLI sandbox Arguments\n```\n--action  -a      [start|stop|build]  Sandbox action to perform. [required]\n```\n\n### Update deps Arguments\n```\n--no-uv-update  -n        Dont run 'uv sync -U'\n```\n\n### Publish Repo to Github\n```\n--repo-name  -r      TEXT  Name of the repository. (Defaults to repo root folder name)\n--public     -p            Publish as public repo.\n```\n\n### Tinify arguments\n```\n--image         -i      TEXT  Image to tinify. [default: None] [required]\n--output-image  -o      TEXT  File to save compressed image to. Defaults to image_file.\n```\n\n## Pyinstrument (pi-profile) arguments\n```\n--profile_json  -p      TEXT     JSON report to examine. [default: None] [required]\n--module        -m      TEXT     Module to include in analysis. Can be specified more than once. [default: None]\n--output        -o      TEXT     File to save markdown to. Defaults to screen. [default: None]\n--limit         -l      INTEGER  Max number of functions to include. [default: 15]\n```\n\n## Environment Variables\n\n### Create a file ~/.par_gpt.env with the following content adjusted for your needs\n\n```shell\n# AI API KEYS\nOPENAI_API_KEY=\nANTHROPIC_API_KEY=\nGROQ_API_KEY=\nXAI_API_KEY=\nGOOGLE_API_KEY=\nMISTRAL_API_KEY=\nGITHUB_TOKEN=\nOPENROUTER_API_KEY=\nDEEPSEEK_API_KEY=\n# Used by Bedrock\nAWS_PROFILE=\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\n\n# Search\nGOOGLE_CSE_ID=\nGOOGLE_CSE_API_KEY=\nSERPER_API_KEY=\nSERPER_API_KEY_GOOGLE=\nTAVILY_API_KEY=\nJINA_API_KEY=\nBRAVE_API_KEY=\nREDDIT_CLIENT_ID=\nREDDIT_CLIENT_SECRET=\n\n# Misc api\nWEATHERAPI_KEY=\nGITHUB_PERSONAL_ACCESS_TOKEN=\nTINIFY_KEY=\n\n### Tracing (optional)\nLANGCHAIN_TRACING_V2=false\nLANGCHAIN_ENDPOINT=https://api.smith.langchain.com\nLANGCHAIN_API_KEY=\nLANGCHAIN_PROJECT=par_gpt\n\n# Application Options\nPARGPT_AI_PROVIDER=OpenAI\nPARGPT_MODEL=# if blank, strong model default will be used\nPARGPT_PRICING=price # none | price | details\nPARGPT_DISPLAY_OUTPUT=md\nPARGPT_DEBUG=false\nPARGPT_SHOW_CONFIG=false\nPARGPT_REPL=false # set this to true to allow agent to WRITE and EXECUTE CODE ON HOST MACHINE \nPARGPT_CODE_SANDBOX=false # set this to true to allow agent to write and execute code in a secure docker container sandbox\nPARGPT_MAX_ITERATIONS=5 # maximum number of iterations to allow when in agent mode. Tool calls require iterations\nPARGPT_YES_TO_ALL=false # set this to true to skip all confirmation prompts\nPARGPT_SHOW_TOOL_CALLS=true\nPARGPT_REASONING_EFFORT=medium # used by o1 and o3 reasoning models\nPARGPT_REASONING_BUDGET=0 # used by sonnet 3.7 to enable reasoning mode. 1024 minimum\n\n# REDIS (Currently used for memories)\nPARGPT_REDIS_HOST=localhost\nPARGPT_REDIS_PORT=6379\nPARGPT_REDIS_DB=0\n\n# NEO4J (Just testing)\nPARGPT_NEO4J_HOST=localhost\nPARGPT_NEO4J_PORT=7687\nPARGPT_NEO4J_USER=neo4j\nPARGPT_NEO4J_PASS=neo4j\n```\n\n### AI API KEYS\n\n* ANTHROPIC_API_KEY is required for Anthropic. Get a key from https://console.anthropic.com/\n* OPENAI_API_KEY is required for OpenAI. Get a key from https://platform.openai.com/account/api-keys\n* GITHUB_TOKEN is required for GitHub Models. Get a free key from https://github.com/marketplace/models\n* GOOGLE_API_KEY is required for Google Models. Get a free key from https://console.cloud.google.com\n* XAI_API_KEY is required for XAI. Get a free key from https://x.ai/api\n* GROQ_API_KEY is required for Groq. Get a free key from https://console.groq.com/\n* MISTRAL_API_KEY is required for Mistral. Get a free key from https://console.mistral.ai/\n* OPENROUTER_KEY is required for OpenRouter. Get a key from https://openrouter.ai/\n* DEEPSEEK_API_KEY is required for Deepseek. Get a key from https://platform.deepseek.com/\n* AWS_PROFILE or AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are used for Bedrock authentication. The environment must\n  already be authenticated with AWS.\n* No key required to use with Ollama or LlamaCpp.\n\n### Search\n\n* TAVILY_API_KEY is required for Tavily AI search. Get a free key from https://tavily.com/. Tavily is much better than\n* JINA_API_KEY is required for Jina search. Get a free key from https://jina.ai\n* BRAVE_API_KEY is required for Brave search. Get a free key from https://brave.com/search/api/\n* SERPER_API_KEY is required for Serper search. Get a free key from https://serper.dev\n* SERPER_API_KEY_GOOGLE is required for Google Serper search. Get a free key from https://serpapi.com/\n* GOOGLE_CSE_ID and GOOGLE_CSE_API_KEY are required for Google search.\n* REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET are needed for Reddit search. Get a free key\n  from https://www.reddit.com/prefs/apps/\n\n### Misc\n\n* GITHUB_PERSONAL_ACCESS_TOKEN is required for GitHub related tools. Get a free key\n  from https://github.com/settings/tokens\n* WEATHERAPI_KEY is required for weather. Get a free key from https://www.weatherapi.com/\n* LANGCHAIN_API_KEY is required for Langchain / Langsmith tracing. Get a free key\n  from https://smith.langchain.com/settings\n* TINIFY_KEY is required to use the tinify images compression tools\n\n### Database and Memory\n\nCurrently par_gpt has a tool to store and retrieve memory.  \nMemories are stored on a per user basis defaulting to the logged in user but can be overridden.  \nAny memories stored are loaded into context when calling LLMs. \nCurrently Redis is used to store memories but this may change\n\n## Agent mode\n\nNOTE: Agent mode enables tool use.  \nSome tools require API keys to be available and various keywords in your request to be present to be enabled. \nOnly enabling some tools when keywords are present helps to reduce context and LLM confusion.\n\nIf the REPL tool is enabled the Code sandbox tool will not be used.\n\n### AI Tools\n- Memory - allows storage and retrival of memories in a persistent DB. Currently Redis.\n- REPL - Allows the AI to **WRITE AND EXECUTE CODE ON YOUR SYSTEM**.  \n  The REPL tool must be manually enabled. If the REPL tool is used it will prompt you before executing the code. Unless you specify --yes-to-all.\n- Code sandbox - Allows AI to write and execute code in a secure docker sandbox container which must be setup separately.\n  The Code sandbox tool must be manually enabled.\n- Open URL - Opens a URL in the default browser.\n- Fetch URL - Fetches the content of one or more webpages and returns as markdown.\n- Show image in terminal - Displays low resolution image in terminal sized based on terminal dimensions.\n- Youtube search - Search youtube and get video info.\n  - keywords: youtube\n- Youtube transcript - Get youtube transcript for video.\n  - keywords: youtube\n- Hacker News - Fetch top posts from HackerNews.\n  - keywords: hackernews\n- Git - Allows interaction with local git repos.\n  - keywords: git, commit\n- Tavily search - Search web and get scraped web results.\n- Serper search - Search web using serper.\n- Google search - Search web using google.\n- Brave search - Search web using brave search.\n- Reddit search - Search reddit and get posts and optionally comments.\n  - keywords: reddit\n- Clipboard - Allows copy to and from clipboard.\n  - keywords: clipboard\n- RSS - Fetch RSS feed content.\n  - keywords: rss\n- Weather - Fetch weather info.\n  - keywords: weather, wx\n- Github - Allows creation, publishing to and listing of personal Github repos.\n  - keywords: github\n- List visible windows - Gets info on all visible windows. Can be used for window / screen capture.\n  - keywords: windows\n- Figlet - Displays Figlet style text in terminal.\n  - keywords: figlet\n- Capture Window Image - Capture screenshot of of window or desktop\n  - keywords: capture, screenshot\n- Image Gen - Generate image using Dall-E-3\n  - keywords: image\n\n## Code sandbox\nThe code sandbox allows the AI agent mode to write and execute code safely contained in a docker container.  \nTo use the sandbox you must have `docker` installed as well as build and run the sandbox container.  \nSandbox setup steps:\n### From code\n```bash\ngit clone https://github.com/paulrobello/par_gpt.git\ncd par_gpt\nmake sandbox\n```\n### From installed tool\n```bash\npar_gpt sandbox -a build\n```\n\n## Code Review mode\n\nCode review mode sends code related files to AI for review. The review looks for bugs and issues in the code and\nprovides a ranking of severity as well as suggestions for how to fix them.\n\nChange to the root of the project you want to check (or sub folder for smaller / faster / more cost-effective checks)\nand run the following:\n\n```shell\npar_gpt code_review\n```\n\n\n## Example Usage\n\n```shell\n# Basic usage with stdin\necho \"What is Python?\" | par_gpt llm\n\n# Use a the light model with custom temperature\npar_gpt --light-model -t 0.7 llm \"Explain quantum computing\"\n\n# Use Ollama with local models Note: you must have qwen2:latest pulled\npar_gpt -a ollama -m qwen2:latest llm \"Write a haiku\"\n\n# get 3d printer filament grade and properties from youtube then generate a sorted table and save to Obsidian vault.\n# this example uses other commands that may not be available on your system however does showcase can it can be chainable\npar_yt2text --transcript 'https://www.youtube.com/watch?v=weeG9yOp3i4' | \\\npar_gpt -p \"use the transcript in the context and create a markdown table with 3 columns 'filament_name', 'properties' and 'grade' generate the table based on the feedback from the transcript\" llm | \\\npar_gpt llm \"sort the table by grade in the following order S,A,B,C,F\" | \\\nsave_vault fillament_grade_props\n\n# get commit message for current changes\npar_gpt git 'display commit message for current changes'\n\n# commit current changes with automatically generated commit message also show config and pricing\npar_gpt --show-config --pricing details git 'commit current changes'\n\n# copy commit message for current changes to clipboard using agent mode\npar_gpt -t 0 --debug agent 'create a commit messages that would be relevant to the changes in the current repository and copy to clipboard'\n\n# get details for new Macbook M4 Max (this will use web search and web scrape tools)\npar_gpt agent 'get me the details for the new Macbook M4 Max'\n\n# generate a csv file named data.csv filled with fake names and ages\npar_gpt agent 'generate a csv file named data.csv filled with fake names and ages'\n\n# read csv file named data.csv and generate a PNG format image graph with age on the x axis and count of age on y axis. open the PNG in a browser\npar_gpt agent 'read csv file named data.csv and generate a PNG format image graph with age on the x axis and count of age on y axis. open the PNG in a browser'\n\n# read csv file named data.csv and generate a graph with age on the x axis and count of age on y axis. display the image in the terminal\npar_gpt agent 'read csv file named data.csv and generate a graph.png graph with age on the x axis and count of age on y axis. display the image in the terminal size large'\n\n# display the current weather in Woodland CA\npar_gpt agent 'current weather in Woodland CA and display the current conditions image / icon in the terminal'\n\npar_gpt -p details -a OpenAI -d md agent --repl 'what is the value of 4 times the ArcTangent of 1'\n\n# tell me a joke using github model on azure\npar_gpt --show-config --debug -p -a Github -m \"Llama-3.2-90B-Vision-Instruct\" llm \"tell me a joke\"\npar_gpt --show-config --debug -p -a Github -m \"gpt-4o\" llm \"tell me a joke\"\n\n# Groq vision model\npar_gpt -a Groq -m 'llama-3.2-90b-vision-preview' -f PATH_TO_IMAGE llm \"describe this image\"\n\n# get image from url and answer question\npar_gpt -f \"https://gratisography.com/wp-content/uploads/2024/10/gratisography-birthday-dog-sunglasses-1036x780.jpg\" llm \"describe the image\"\n\n# Get context from url and answer question about it. Note does not currently use RAG so can be token heavy\npar_gpt -p details -f 'https://console.groq.com/docs/vision' llm \"what model ids support vision\"\n\n# get image from url and answer question\npar_gpt -p details -f 'https://freerangestock.com/sample/157314/mystical-glowing-mushrooms-in-a-magical-forest.jpg' llm \"describe this image\"\n\n# check code for bugs (change to root for project you want to check)\npar_gpt code_review\n```\n\n## What's New\n- Version 0.10.0:\n  - Fixed sixel error on windows\n- Version 0.8.0:\n  - Added the tinify image compression command\n- Version 0.7.1:\n  - Updated PAR AI CORE: Now supports OpenAI Reasoning Effort and Anthropic Reasoning token budget\n- Version 0.7.0:\n  - Updated PAR AI CORE: Now supports Deepseek and LiteLLM\n- Version 0.6.0:\n  - Added support for TTS output\n  - Added screenshot support\n  - Aider support removed (too many dependency conflicts)\n- Version 0.5.0:\n  - Added Aider command for code editing\n- Version 0.4.0:\n  - Reworked sub commands and cli options \n- Version 0.3.0:\n  - Added support for LlamaCPP (use base_url and run llamacpp in option ai server mode)\n  - Added code review agent\n  - Added prompt generation agent (work in progress)\n  - Updated pricing data\n  - Lots of bug fixes and improvements\n- Version 0.2.1:\n  - Removed --context-source cli option as it is now auto-detected\n  - When working with images and model is not specified a suitable vision model will be selected\n  - added options to copy context from clipboard and results to clipboard\n- Version 0.2.0:\n  - Added confirmation prompt for agent mode REPL tool\n  - Added yes-to-all flag to skip confirmation prompts\n  - Updated pricing data\n- Version 0.1.0:\n  - Initial release\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. Before contributing:\n\n1. Ensure you have Python 3.11+\n2. Use UV for dependency management\n3. Follow the existing code style\n4. Update documentation as needed\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Author\n\nPaul Robello - probello@gmail.com\nGitHub: paulrobello\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulrobello%2Fpar_gpt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulrobello%2Fpar_gpt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulrobello%2Fpar_gpt/lists"}