{"id":16272336,"url":"https://github.com/tib0/local-llama","last_synced_at":"2025-08-03T02:31:03.200Z","repository":{"id":247802896,"uuid":"815226420","full_name":"tib0/local-llama","owner":"tib0","description":"Local Llama project, L³ is an electron app that runs llama 3 models locally","archived":false,"fork":false,"pushed_at":"2024-10-28T10:13:38.000Z","size":7751,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-02T08:55:16.437Z","etag":null,"topics":["chat","chatbot","electron","gguf","llama3","llm","local","node-llama-cpp","privacy"],"latest_commit_sha":null,"homepage":"https://folio.tib0.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tib0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-06-14T16:19:10.000Z","updated_at":"2024-11-12T15:07:59.000Z","dependencies_parsed_at":"2024-07-27T19:17:31.633Z","dependency_job_id":"03180f48-cbdb-4a83-9dc9-fecbe49ea580","html_url":"https://github.com/tib0/local-llama","commit_stats":{"total_commits":187,"total_committers":1,"mean_commits":187.0,"dds":0.0,"last_synced_commit":"0be697264fb8105eb9806aabf0331cd183daf006"},"previous_names":["tib0/local-llama"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tib0%2Flocal-llama","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tib0%2Flocal-llama/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tib0%2Flocal-llama/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tib0%2Flocal-llama/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tib0","download_url":"https://codeload.github.com/tib0/local-llama/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228517143,"owners_count":17932435,"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":["chat","chatbot","electron","gguf","llama3","llm","local","node-llama-cpp","privacy"],"created_at":"2024-10-10T18:17:20.508Z","updated_at":"2025-08-03T02:31:03.148Z","avatar_url":"https://github.com/tib0.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# L³, Local Llama\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./.github/logo_25.webp\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\" style=\"font-size:18px; font-weight:800; margin: 5px;\"\u003e\n  v1.0.3\n\u003c/p\u003e\n\u003cp align=\"center\" style=\"font-size:18px; font-weight:600; margin-bottom: 10px;\"\u003e\n  Local Llama also known as L³ is designed to be easy to use, with a user-friendly interface and advanced settings.\n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"margin: 5px;\"\u003e\n  L³ enables you to choose various gguf models and execute them locally without depending on external servers or APIs.\n\u003c/p\u003e\n\u003cp align=\"center\" style=\"margin: 5px;\"\u003e\n  You can save conversation history and retrieve it later.\n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"margin: 5px;\"\u003e\n  With L³, you have complete control over the models used and their configuration, making it an ideal solution for anyone who wants to chat with LLM models offline.\n\u003c/p\u003e\n\n### Features\n\n\u003cul style=\"font-weight: 600;\"\u003e\n  \u003cli\u003e🔧 Customizable model settings\u003c/li\u003e\n  \u003cli\u003e🖥️ Windows, Linux \u0026 Mac supported\u003c/li\u003e\n  \u003cli\u003e📞 Save conversation history\u003c/li\u003e\n  \u003cli\u003e✈️ Offline\u003c/li\u003e\n  \u003cli\u003e💸 Free\u003c/li\u003e\n\u003c/ul\u003e\n\n## Summary\n\n- [💻 Install](#install)\n- [📸 Screenshots](#screenshots)\n- [🔧 Settings](#settings)\n- [❔️ How it Works](#how-it-works)\n- [⬇️ Use from source](#use-from-source)\n- [👨‍💼 Dependencies](#dependencies)\n- [📜 License](#license)\n\n## Install\n\n### Find a gguf model\n\nYou can download a model from [Hugginface](https://huggingface.co/models?search=gguf). Any gguf\nmodel will be compatible with Local Llama.\n\n### Mac OS\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    M1, M2, M3 processors..\n  \u003c/summary\u003e\n\n1. Download the latest MacOS.arm.local-llama.zip file from\n   [here](https://github.com/tib0/local-llama/releases/latest).\n2. Uncompress the zip\n3. Run the file `Local Llama.app`.\n\u003c/details\u003e\n\n\u003c/br\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Intel processors... \n  \u003c/summary\u003e\n\n1. Download the latest MacOS.x64.local-llama.zip file from\n   [here](https://github.com/tib0/local-llama/releases/latest).\n2. Uncompress the zip\n3. Run the file `Local Llama.app`.\n\u003c/details\u003e\n\n\u003c/br\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Dmg\n  \u003c/summary\u003e\n\n1. Install appdmg module `npm i -D appdmg`\n2. Navigate to the file `forge.config.mjs:45` and uncomment the dmg maker.\n3. Build and make the app from sources by looking at [Use from source](#use-from-source)\n   section.\n4. Navigate to the `out` folder within your project's root directory, where you will find the\ngenerated file.\n\u003c/details\u003e\n\n### Windows\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Exe installer \n  \u003c/summary\u003e\n\n1. Download the latest Windows.local-llama.exe file from  \n   [here](https://github.com/tib0/local-llama/releases/latest).\n2. Run the file `Local Llama.exe`. It will start an installer wich copy mandatory files to the\n   right place (`%USERPROFILE%\\appData\\Roaming\\\"Local Llama\"` and\n   `%USERPROFILE%\\appData\\Local\\local-llama`).\n3. Launch the app `Local Llama`.\n\u003c/details\u003e\n\n\u003c/br\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Msi installer \n  \u003c/summary\u003e\n\n1. Build and make the app from sources by looking at [Use from source](#use-from-source)\n   section.\n2. Navigate to the `out` folder within your project's root directory, where you will find the\ngenerated file.\n\u003c/details\u003e\n\n### Linux\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Deb and rpm\n  \u003c/summary\u003e\n\n1. Build and make the app from sources by looking at [Use from source](#use-from-source)\n   section.\n2. Navigate to the `out` folder within your project's root directory, where you will find the\ngenerated file.\n\u003c/details\u003e\n\n## Screenshots\n\n### Light and dark theme\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"455px\" style=\"padding:10px;\" src=\"./.github/l-h-chat_55.webp\" /\u003e\n  \u003cimg width=\"455px\" style=\"padding:10px;\" src=\"./.github/d-h-chat_55.webp\" /\u003e\n\u003c/p\u003e\n\n### Settings panel\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"455px\" style=\"padding:10px;\" src=\"./.github/l-h-settings_55.webp\" /\u003e\n\u003c/p\u003e\n\n### Responsive window\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"285px\" style=\"padding:10px;\" src=\"./.github/d-h-chat_55.webp\" /\u003e\n  \u003cimg height=\"285px\" style=\"padding:10px;\" src=\"./.github/d-v-chat_55.webp\" /\u003e\n\u003c/p\u003e\n\n## Settings\n\n### Details\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"200px\" style=\"padding:10px;\" src=\"./.github/zoom-button_55.webp\" /\u003e\n\u003c/p\u003e\n\n- **Model...**: This button is used to load a new model into the application. It open up a\n  browse window. The model can be any `.gguf` llama model. If you want you can find models at\n  [Hugginface](https://huggingface.co/models?search=gguf).\n  \u003e ##\n  \u003e\n  \u003e ### GGUF\n  \u003e\n  \u003e The GGUF (Generative GPT Unified Format) is a file format used to store the outputs of\n  \u003e LLMs. It's a compressed binary format that allows for efficient storage and loading of\n  \u003e generated text.\n  \u003e\n  \u003e #\n- **Auto**: This dropdown is used to select where computations are performed. On Macos, in\n  newer M type processor you can only select `auto` or `metal` option. On Windows, you can\n  choose `auto`, `none` or `vulkan` option.\n- **History...**: This button will open a file browser window, allowing you to choose the\n  history file to load. History files are JSON representations of your conversations.\n- **Clear**: This button clear the history and reset the current session.\n- **Stop**: This button will abort the current prompt operation.\n- **Save**: This button is used to save the current session into a file. The file is a JSON\n  representation of the conversation. File extension is `.lllh`\n- **Slider**: This slider is used to control the temperature of the next user prompt.\n\n  \u003e #\n  \u003e\n  \u003e ### Temperature\n  \u003e\n  \u003e The temperature parameter in Large Language Models (LLMs) is used to control the\n  \u003e \"temperature\" or randomness of the generated text, which affects the model's fluency and\n  \u003e creativity. Higher temperatures lead to more diverse and creative outputs, while lower\n  \u003e temperatures result in more coherent but less novel text. Think of it like a thermostat for\n  \u003e your AI's writing style!\n  \u003e\n  \u003e - **Low Temperature (.01 - .7)** – Setting the temperature to a value of less than .7 makes\n  \u003e   the model’s output more deterministic and repetitive.\n  \u003e - **Mid Temperature (.7 - 1.3)** – Promotes creative and diverse text generation, but may\n  \u003e   result in less coherent or grammatically correct output.\n  \u003e - **High Temperature (\u003e1.3)** – Very creatives text generation, it can result in incoherent\n  \u003e   answer, or repetitive loops inside generated text.\n  \u003e - **Default Temperature (0)** – Extremly determinitic, no fantasy. The model generates text\n  \u003e   that is the most predictable, based on the probability distribution learned during its\n  \u003e   training.\n  \u003e\n  \u003e ##\n\n- **Model name**: This toggle button is used to display extended informations about the model.\n- **Document...**: This button allows you to select a document and insert its content into the\n  system prompt. Keeps only the first 16K characters found inside the document.\n\n### Extended informations\n\nBy clicking on the \"Model name\" toggle, you can view detailed information about the currently\nselected model.\n\n\u003cp align=\"left\"\u003e\n  \u003cimg height=\"350px\" style=\"padding:10px;\" src=\"./.github/l-v-settings_55.webp\" /\u003e\n\u003c/p\u003e\n\nYou can update the system prompt in here:\n\n\u003cp align=\"left\"\u003e\n  \u003cimg height=\"280px\" style=\"padding:10px;\" src=\"./.github/zoom-sprompt_55.webp\" /\u003e\n\u003c/p\u003e\n\n\u003e ##\n\u003e\n\u003e ### System prompt\n\u003e\n\u003e A system prompt in Large Language Models (LLMs) is a specific instruction or question that\n\u003e helps the model understand the context and goals of the task it's being asked to perform.\n\u003e\n\u003e ##\n\n## How it works\n\nLocal Llama integrates Electron and llama-node-cpp to enable running Llama 3 models locally on\nyour machine.\n\nThe app interacts with the llama-node-cpp library, which encapsulates the Llama 3 model within\na node.js module, ensuring smooth compatibility with both Electron and native code.\n\n### File stored locally\n\nUpon launching the application, a folder structure is created to store history, models, and\nlogs. This folder is located under your current user folder, which is represented by\n`%USERPROFILE%` in Windows and `~` in MacOS/Linux. When you utilize a document to generate a\nprompt, the document parser employs `.cache` folder to create temporary files.\n\nThe folder structure is organized as follows:\n\n    .\n    ├── ...\n    ├── .cache\n    │   ├── ...\n    │   ├── local-llama\n    │   │   ├── logs\n    │   │   │   └── Local-Llama.log\n    │   │   ├── history\n    │   │   │   └── 2024-02-31T19-42-42.042Z.lllh\n    │   │   ├── models\n    │   │   │   └── llama.gguf\n    │   │   └── ...\n    │   └── ...\n    └── ...\n\n### Uninstall\n\nFind below the steps to unistall Local Llama from your computer.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Mac OS\n  \u003c/summary\u003e\n\n1. Delete `Local Llama.app`\n2. Remove the folder located here `~/.cache/local-llama`, it contains log, history and model\nfolder.\n\u003c/details\u003e\n\n\u003c/br\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    Windows\n  \u003c/summary\u003e\n\n1. Go to Settings \u003e Applications \u003e Uninstall, click on uninstall on \"Local Llama\".\n2. Remove the folder located here `%USERPROFILE%\\appData\\Roaming\\\"Local Llama\"`\n3. Remove the folder located here `%USERPROFILE%\\appData\\Local\\local-llama`\n4. Remove the folder located here `%USERPROFILE%\\.cache\\local-llama`.\n\u003c/details\u003e\n\n## Use from source\n\n### Copy\n\nClone this git repository.\n\n```bash\n$ git clone https://github.com/tib0/Local-Llama\n```\n\n### Install\n\n```bash\n$ npm i\n```\n\n### Development\n\n```bash\n$ npm run start\n```\n\n### Build\n\n```bash\n$ npm run build\n```\n\n### Package\n\n```bash\n$ npm run package\n```\n\n### Make\n\n```bash\n$ npm run make\n```\n\nFor Windows users, creating an MSI installer requires having the Wix Tools installed on your\nlocal machine. For more information and guidance sees\n[here](https://learn.microsoft.com/en-us/microsoft-edge/webview2/samples/wv2deploymentwixcustomactionsample#step-3---install-wix-toolset-build-tools).\n\n### Requirements\n\n**Node.js (22.x or higher)** - Local Llama requires a compatible version of Node.js to run.\n\n**Npm (10.x or higher)** - Local Llama requires a compatible version of npm to run.\n\n**Python (3)** - Python 3 is used during node-llama-cpp build.\n\n**GGUF Model** - Local Llama uses the llama-cpp as its core AI engine. It can use any gguf\nmodels. If you want, you can find model at\n[Hugginface](https://huggingface.co/models?search=gguf)\n\n**4GB RAM** - While it depends on the model size, it is recommended to have at least 4GB of\nfree RAM to run this app.\n\n## Dependencies\n\n- **electron-forge-plugin-vite-esm** by _fozziethebeat_: Fix the issue with esm interop embeded\n  in electron app [here](https://github.com/fozziethebeat/electron-forge-plugin-vite-esm).\n\n- **node-llama-cpp v3.0.0-beta** by _withcatai_: Awsome node wrapper for llama\n  [here](https://github.com/withcatai/node-llama-cpp).\n\n- **Typescript v5.x**\n\n- **React and React dom v18.x**\n\n- **Electron v31.x**\n\n- **Electron Store v8.x**\n\n- **Forge v7.x**\n\n- **Tailwind CSS v3.x**\n\n- **DaisyUI v4.x**\n\n- **Prettier v3.x**\n\n- **React Markdown v9.x**\n\n- **React Syntac Higlighter v15.x**\n\n- **Rehype v15.x**\n\n- **Remix v15.x**\n\n- **uuid v10.x**\n\n- **officeparser v4.x**\n\n## License\n\nCC-BY-NC-ND :\n\n\u003e ##\n\u003e\n\u003e #### You are free to:\n\u003e\n\u003e - **Share** — copy and redistribute the material in any medium or format. The licensor cannot\n\u003e   revoke these freedoms as long as you follow the license terms.\n\u003e\n\u003e #### Under the following terms:\n\u003e\n\u003e - **Attribution** — You must give appropriate credit, provide a link to the license, and\n\u003e   indicate if changes were made . You may do so in any reasonable manner, but not in any way\n\u003e   that suggests the licensor endorses you or your use.\n\u003e - **Non Commercial** — You may not use the material for commercial purposes .\n\u003e - **No Derivatives** — If you remix, transform, or build upon the material, you may not\n\u003e   distribute the modified material.\n\u003e - **No additional restrictions** — You may not apply legal terms or technological measures\n\u003e   that legally restrict others from doing anything the license permits.\n\u003e\n\u003e #### Notices:\n\u003e\n\u003e You do not have to comply with the license for elements of the material in the public domain\n\u003e or where your use is permitted by an applicable exception or limitation.\n\u003e\n\u003e #### No warranties are given:\n\u003e\n\u003e The license may not give you all of the permissions necessary for your intended use. For\n\u003e example, other rights such as publicity, privacy, or moral rights may limit how you use the\n\u003e material.\n\u003e\n\u003e ##\n\u003e\n\u003e _Find out more [here](./LICENSE.md)_\n\n# Have fun exploring Local Llama!\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./.github/logo_50.webp\" /\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftib0%2Flocal-llama","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftib0%2Flocal-llama","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftib0%2Flocal-llama/lists"}