{"id":28499804,"url":"https://github.com/richstokes/infinichat","last_synced_at":"2026-05-18T19:09:40.643Z","repository":{"id":297350402,"uuid":"996173266","full_name":"richstokes/InfiniChat","owner":"richstokes","description":"💬 A CLI app that lets you watch conversations between two LLMs (all running locally using Ollama)","archived":false,"fork":false,"pushed_at":"2025-06-12T22:31:43.000Z","size":236,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-12T22:56:51.492Z","etag":null,"topics":["ai","ai-conversation","ai-demo","ai-simulation","chatbot","chatgpt","llm","ollama","python","python-llm"],"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/richstokes.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,"zenodo":null}},"created_at":"2025-06-04T15:01:33.000Z","updated_at":"2025-06-12T22:40:31.000Z","dependencies_parsed_at":"2025-06-05T06:24:24.169Z","dependency_job_id":"e1f5319f-9502-49d4-8624-12461a719095","html_url":"https://github.com/richstokes/InfiniChat","commit_stats":null,"previous_names":["richstokes/infinichat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/richstokes/InfiniChat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FInfiniChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FInfiniChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FInfiniChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FInfiniChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richstokes","download_url":"https://codeload.github.com/richstokes/InfiniChat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FInfiniChat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263445767,"owners_count":23467609,"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":["ai","ai-conversation","ai-demo","ai-simulation","chatbot","chatgpt","llm","ollama","python","python-llm"],"created_at":"2025-06-08T15:00:45.811Z","updated_at":"2025-09-23T20:28:48.634Z","avatar_url":"https://github.com/richstokes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InfiniChat\nInfiniChat is a command-line application that simulates conversations between two LLMs running locally using Ollama. Just for fun really - I find it interesting to watch the chats! You can have them flesh out ideas, debate things, argue, or just give vague prompts and see what topics they spiral in to. \n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/richstokes/InfiniChat/blob/main/screenshot.png?raw=true\" width=\"95%\" alt=\"InfiniChat Screenshot\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Full Conversation History**: Models maintain a record of the entire conversation, enabling more coherent interactions\n- **Streaming Responses**: Real-time streaming of model outputs with live display\n- **Attractive Terminal UI**: Rich text formatting with color-coded speakers and panels\n- **Debate Mode**: Set a specific topic for the models to debate, with one arguing \"for\" and the other \"against\"\n- **Conversation Saving**: Automatically saves transcripts of conversations\n\n## Requirements\n\n- Python 3.+\n- [Ollama](https://ollama.com/download) installed and running\n- Required models (`llama3:latest` and `gemma3:12b` by default) pulled in Ollama\n- A \"non-trivial\" amount of RAM. This uses 30GB+ on my Macbook.\n\n## Installation\n\n```bash\n# Install dependencies\npipenv install\n```\n\n## Usage\n\nBasic usage:\n```bash\npipenv run python app.py\n```\n\nEdit the prompts in `prompts.py` to your liking.  \n\n\n### Command-line Arguments\n\nInfiniChat supports the following command-line arguments:\n\n| Argument | Description | Default |\n|----------|-------------|---------|\n| `--max_turns` | Maximum number of conversation turns between the two AI models | 9000 |\n| `--max_tokens` | Maximum number of tokens per response from each AI model (just leave it at default unless you know you need to change it) | 1000 |\n| `--debug` | Enable debug mode for additional output | False |\n| `--show_json` | Show RAW JSON from chat api | False | \n| `--stats` | Show message history statistics in panel titles | False |\n| `--history_limit` | Number of messages to keep in conversation history for each model before summarizing and trimming. Turn this down if messages gradually start to take longer to generate | 100 |\n| `--delay` | Delay in seconds between streaming chunks (for slower, more readable streaming) | 0.0 |\n| `--model_a` | Name of the first AI model to use | llama3:latest |\n| `--model_b` | Name of the second AI model to use | gemma3:12b |\n| `--debate_topic \"Pizza is a vegetable\"` | Topic to debate, model A will be \"for\" the topic, model B will be \"against\" | None |\n| `--model_a_prompt \"Your custom prompt\"` | Custom system prompt for model A (overrides default from `prompts.py`) | None |\n| `--model_b_prompt \"Your custom prompt\"` | Custom system prompt for model B (overrides default from `prompts.py`) | None |\n\n### Examples\n\nRun with custom settings:\n```bash\n# Run with 2000 conversation turns!\npipenv run python app.py --max_turns 2000\n\n# Run in debug mode\npipenv run python app.py --debug\n\n# Show message history statistics in panel titles\npipenv run python app.py --stats\n\n# Add a delay for slower, more readable streaming\npipenv run python app.py --delay 0.1\n\n# Use different models\npipenv run python app.py --model_a qwen:latest --model_b deepseek-r1:latest\n\n# Start a debate\npipenv run python app.py --debate_topic \"Coffee is better than tea\"\n\n# Use custom prompts for both models\npipenv run python app.py --model_a_prompt \"You are a cheerful assistant who loves to help people\" --model_b_prompt \"You are a serious academic who prefers formal language\"\n\n# Override just one model's prompt\npipenv run python app.py --model_a_prompt \"You are a pirate who speaks in nautical terms\"\n```\n\nAfter running, a conversation transcript will be saved to `conversation_history.txt`. This will be overwritten each run, so copy it somewhere if you wish to keep it. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichstokes%2Finfinichat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichstokes%2Finfinichat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichstokes%2Finfinichat/lists"}