{"id":13408121,"url":"https://github.com/darrenburns/elia","last_synced_at":"2025-05-14T14:07:52.497Z","repository":{"id":161782662,"uuid":"636427933","full_name":"darrenburns/elia","owner":"darrenburns","description":"A snappy, keyboard-centric terminal user interface for interacting with large language models. Chat with ChatGPT, Claude, Llama 3, Phi 3, Mistral, Gemma and more.","archived":false,"fork":false,"pushed_at":"2024-10-10T19:12:52.000Z","size":581,"stargazers_count":2145,"open_issues_count":17,"forks_count":131,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-05-11T02:01:43.840Z","etag":null,"topics":["ai","chatgpt","claude","gemma","gpt","large-language-models","llama","llama3","llm","mistral","mistral-ai","mixtral","ollama","ollama-client","ollama-interface","phi-3","python","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darrenburns.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":"2023-05-04T20:34:55.000Z","updated_at":"2025-05-10T18:22:33.000Z","dependencies_parsed_at":"2023-11-14T21:28:21.001Z","dependency_job_id":"77c4a2d1-b9e4-49a1-a929-d55c1d5fd17b","html_url":"https://github.com/darrenburns/elia","commit_stats":{"total_commits":269,"total_committers":7,"mean_commits":38.42857142857143,"dds":"0.16356877323420072","last_synced_commit":"3236532d20370317819d7023b832e9064c0e6eb0"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darrenburns%2Felia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darrenburns%2Felia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darrenburns%2Felia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darrenburns%2Felia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darrenburns","download_url":"https://codeload.github.com/darrenburns/elia/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253678865,"owners_count":21946315,"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","chatgpt","claude","gemma","gpt","large-language-models","llama","llama3","llm","mistral","mistral-ai","mixtral","ollama","ollama-client","ollama-interface","phi-3","python","terminal","tui"],"created_at":"2024-07-30T20:00:50.899Z","updated_at":"2025-05-14T14:07:52.477Z","avatar_url":"https://github.com/darrenburns.png","language":"Python","funding_links":[],"categories":["\u003ca name=\"ai\"\u003e\u003c/a\u003eAI / ChatGPT","Python","🚀 AI Tools for Vim, Neovim, and Terminal","UIs","CLIs","Learning","A01_文本生成_文本对话","chatgpt","Repos","📊 The List","Community","Personal Assistants \u0026 Conversational Agents","Table of Contents","LLM Tools"],"sub_categories":["Command-line(shell) interface","Repositories","大语言对话模型及数据","Third Party Applications","Chatbots"],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/darrenburns/elia/assets/5740731/4037b91a-1ad8-4d5b-884d-b3f1b495acf4\" width=\"126px\"\u003e\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ci align=\"center\"\u003eA snappy, keyboard-centric terminal user interface for interacting with large language models.\u003c/i\u003e\u003cbr\u003e\n  \u003ci align=\"center\"\u003eChat with Claude 3, ChatGPT, and local models like Llama 3, Phi 3, Mistral and Gemma.\u003c/i\u003e\n\u003c/p\u003e\n\n![elia-screenshot-collage](https://github.com/darrenburns/elia/assets/5740731/75f8563f-ce1a-4c9c-98c0-1bd1f7010814)\n\n## Introduction\n\n`elia` is an application for interacting with LLMs which runs entirely in your terminal, and is designed to be keyboard-focused, efficient, and fun to use!\nIt stores your conversations in a local SQLite database, and allows you to interact with a variety of models.\nSpeak with proprietary models such as ChatGPT and Claude, or with local models running through `ollama` or LocalAI.\n\n## Installation\n\nInstall Elia with [pipx](https://github.com/pypa/pipx):\n\n```bash\npipx install --python 3.11 elia-chat\n```\n\nDepending on the model you wish to use, you may need to set one or more environment variables (e.g. `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY` etc).\n\n## Quickstart\n\nLaunch Elia from the command line:\n\n```bash\nelia\n```\n\nLaunch a new chat inline (under your prompt) with `-i`/`--inline`:\n\n```bash\nelia -i \"What is the Zen of Python?\"\n```\n\nLaunch a new chat in full-screen mode:\n\n```bash\nelia \"Tell me a cool fact about lizards!\"\n```\n\nSpecify a model via the command line using `-m`/`--model`:\n\n```bash\nelia -m gpt-4o\n```\n\nOptions can be combined - here's how you launch a chat with Gemini 1.5 Flash in inline mode (requires `GEMINI_API_KEY` environment variable).\n\n```bash\nelia -i -m gemini/gemini-1.5-flash-latest \"How do I call Rust code from Python?\"\n```\n\n## Running local models\n\n1. Install [`ollama`](https://github.com/ollama/ollama).\n2. Pull the model you require, e.g. `ollama pull llama3`.\n3. Run the local ollama server: `ollama serve`.\n4. Add the model to the config file (see below).\n\n## Configuration\n\nThe location of the configuration file is noted at the bottom of\nthe options window (`ctrl+o`).\n\nThe example file below shows the available options, as well as examples of how to add new models.\n\n```toml\n# the ID or name of the model that is selected by default on launch\ndefault_model = \"gpt-4o\"\n# the system prompt on launch\nsystem_prompt = \"You are a helpful assistant who talks like a pirate.\"\n\n# choose from \"nebula\", \"cobalt\", \"twilight\", \"hacker\", \"alpine\", \"galaxy\", \"nautilus\", \"monokai\", \"textual\"\ntheme = \"galaxy\"\n\n# change the syntax highlighting theme of code in messages\n# choose from https://pygments.org/styles/\n# defaults to \"monokai\"\nmessage_code_theme = \"dracula\"\n\n# example of adding local llama3 support\n# only the `name` field is required here.\n[[models]]\nname = \"ollama/llama3\"\n\n# example of a model running on a local server, e.g. LocalAI\n[[models]]\nname = \"openai/some-model\"\napi_base = \"http://localhost:8080/v1\"\napi_key = \"api-key-if-required\"\n\n# example of add a groq model, showing some other fields\n[[models]]\nname = \"groq/llama2-70b-4096\"\ndisplay_name = \"Llama 2 70B\"  # appears in UI\nprovider = \"Groq\"  # appears in UI\ntemperature = 1.0  # high temp = high variation in output\nmax_retries = 0  # number of retries on failed request\n\n# example of multiple instances of one model, e.g. you might\n# have a 'work' OpenAI org and a 'personal' org.\n[[models]]\nid = \"work-gpt-3.5-turbo\"\nname = \"gpt-3.5-turbo\"\ndisplay_name = \"GPT 3.5 Turbo (Work)\"\n\n[[models]]\nid = \"personal-gpt-3.5-turbo\"\nname = \"gpt-3.5-turbo\"\ndisplay_name = \"GPT 3.5 Turbo (Personal)\"\n```\n\n## Custom themes\n\nAdd a custom theme YAML file to the themes directory.\nYou can find the themes directory location by pressing `ctrl+o` on the home screen and looking for the `Themes directory` line.\n\nHere's an example of a theme YAML file:\n\n```yaml\nname: example  # use this name in your config file\nprimary: '#4e78c4'\nsecondary: '#f39c12'\naccent: '#e74c3c'\nbackground: '#0e1726'\nsurface: '#17202a'\nerror: '#e74c3c'  # error messages\nsuccess: '#2ecc71'  # success messages\nwarning: '#f1c40f'  # warning messages\n```\n\n## Changing keybindings\n\nRight now, keybinds cannot be changed. Terminals are also rather limited in what keybinds they support.\nFor example, pressing \u003ckbd\u003eCmd\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e to send a message is not possible (although we may support a protocol to allow this in some terminals in the future).\n\nFor now, I recommend you map whatever key combo you want at the terminal emulator level to send `\\n`.\nHere's an example using iTerm:\n\n\u003cimg width=\"848\" alt=\"image\" src=\"https://github.com/darrenburns/elia/assets/5740731/94b6e50c-429a-4d17-99c2-affaa828f35b\"\u003e\n\nWith this mapping in place, pressing \u003ckbd\u003eCmd\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e will send a message to the LLM, and pressing \u003ckbd\u003eEnter\u003c/kbd\u003e alone will create a new line.\n\n## Import from ChatGPT\n\nExport your conversations to a JSON file using the ChatGPT UI, then import them using the `import` command.\n\n```bash\nelia import 'path/to/conversations.json'\n```\n\n## Wiping the database\n\n```bash\nelia reset\n```\n\n## Uninstalling\n\n```bash\npipx uninstall elia-chat\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarrenburns%2Felia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarrenburns%2Felia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarrenburns%2Felia/lists"}