mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-03 09:33:10 -07:00
update readme, deps and instructions
This commit is contained in:
parent
f568194ba7
commit
0929e30f82
4 changed files with 63 additions and 37 deletions
28
.github/copilot-instructions.md
vendored
28
.github/copilot-instructions.md
vendored
|
|
@ -5,3 +5,31 @@
|
|||
- Never add explicit return types to functions - rely on TypeScript inference
|
||||
- Never create tests, docs, or GitHub workflows
|
||||
- Move helper functions out of component files into separate utility files
|
||||
|
||||
## What Gerbil Is
|
||||
|
||||
Gerbil is an Electron desktop app that acts as a launcher and GUI for [KoboldCpp](https://github.com/LostRuins/koboldcpp). It is **not** a new LLM backend — it wraps KoboldCpp and makes it usable without touching the terminal.
|
||||
|
||||
**The problem it solves**: KoboldCpp is an excellent all-in-one local LLM backend (text gen, image gen, multimodal, agents) but its own launcher UI is bad. Gerbil replaces and significantly improves that launcher.
|
||||
|
||||
**Gerbil vs Ollama**: Ollama is simpler but far more limited. Gerbil targets users who want KoboldCpp's power (image gen, 80+ config options, SillyTavern/OpenWebUI integration) without fighting a bad UI or memorizing CLI flags.
|
||||
|
||||
**Gerbil vs KoboldCpp's launcher**: Gerbil adds auto binary download, GPU auto-detection (CUDA/ROCm/Vulkan/Metal), image gen presets (FLUX, Chroma, Z-Image, Qwen), HuggingFace model search/download, SillyTavern and OpenWebUI auto-launch, config save/load, real-time system monitoring, Cloudflare tunnel support, and a proper desktop experience.
|
||||
|
||||
## User Base
|
||||
|
||||
- People who want to run LLMs locally with real control over the backend
|
||||
- SillyTavern users (roleplay/character AI) — Gerbil auto-launches ST alongside KoboldCpp
|
||||
- Image generation users — Gerbil has first-class image gen with 4 presets
|
||||
- Power users who want GPU acceleration configured correctly without guesswork
|
||||
|
||||
## Key Technical Facts
|
||||
|
||||
- Stack: Electron 41, React 19, Zustand 5, Mantine 9, pnpm, TypeScript, oxlint
|
||||
- Screens flow: Welcome → Download → Launch (tabs: General/Performance/Advanced/Image Gen/Network/Config) → Interface (tabs: Terminal/Chat-Text/Chat-Image)
|
||||
- Supported GPUs: CUDA, ROCm (via YellowRoseCx fork), Vulkan, Metal (macOS), CPU fallback
|
||||
- Frontends: KoboldAI Lite, llama.cpp (embedded in KoboldCpp), SillyTavern (localhost:3000, needs Node.js), OpenWebUI (localhost:8080, needs uv)
|
||||
- Image gen presets: FLUX.1-dev, Chroma-unlocked, Z-Image-Turbo, Qwen2.5-VL-7B (image edit)
|
||||
- Default model: gemma-3-4b-it Q8_0 from HuggingFace
|
||||
- CLI mode: headless binary execution — requires prior GUI setup to configure binary path
|
||||
- No telemetry, fully local after initial binary download
|
||||
|
|
|
|||
|
|
@ -4,21 +4,19 @@
|
|||
|
||||
# Gerbil
|
||||
|
||||
**The simplest way to run Large Language Models on your own hardware**
|
||||
**Local text and image generation, on your own hardware**
|
||||
|
||||
[](https://www.gnu.org/licenses/agpl-3.0)
|
||||
[](https://github.com/lone-cloud/gerbil/releases)
|
||||
[](https://github.com/lone-cloud/gerbil/stargazers)
|
||||
[](https://aur.archlinux.org/packages/gerbil)
|
||||
|
||||
[Download](https://github.com/lone-cloud/gerbil/releases/latest) • [Features](#features) • [Screenshots](#demo--screenshots) • [Installation](#installation)
|
||||
[Download](https://github.com/lone-cloud/gerbil/releases/latest) • [Screenshots](#demo--screenshots) • [Installation](#installation)
|
||||
|
||||
</div>
|
||||
|
||||
<!-- markdownlint-enable MD033 -->
|
||||
|
||||
Gerbil is a GUI for running Large Language Models locally.
|
||||
|
||||
## Features
|
||||
|
||||
- **Run LLMs locally** - Powered by [KoboldCpp](https://github.com/LostRuins/koboldcpp), a fork of [llama.cpp](https://github.com/ggml-org/llama.cpp)
|
||||
|
|
@ -132,7 +130,7 @@ https://github.com/user-attachments/assets/9e7ecfb3-3576-443c-8cef-a14e06ab5b60
|
|||
|
||||
## Advanced Configuration
|
||||
|
||||
The Launch screen's Advanced tab exposes 80+ KoboldCpp arguments with descriptions, defaults, and examples — for when you need more than the GUI covers.
|
||||
The Launch screen's Advanced tab exposes 80+ KoboldCpp arguments with descriptions, defaults, and examples, for when you need more than the GUI covers.
|
||||
|
||||
<div align="center">
|
||||
<img src="assets/screenshot-cli-args.webp" alt="Command Line Arguments Modal" width="800">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "gerbil",
|
||||
"version": "1.23.0",
|
||||
"version": "1.23.1",
|
||||
"description": "Run Large Language Models locally",
|
||||
"keywords": [
|
||||
"ai",
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
"@codemirror/commands": "^6.10.3",
|
||||
"@codemirror/search": "^6.6.0",
|
||||
"@codemirror/theme-one-dark": "^6.1.3",
|
||||
"@codemirror/view": "^6.41.0",
|
||||
"@codemirror/view": "^6.41.1",
|
||||
"@fontsource/geist": "^5.2.8",
|
||||
"@huggingface/gguf": "^0.4.2",
|
||||
"@mantine/core": "^9.0.2",
|
||||
|
|
|
|||
60
pnpm-lock.yaml
generated
60
pnpm-lock.yaml
generated
|
|
@ -40,8 +40,8 @@ importers:
|
|||
specifier: ^6.1.3
|
||||
version: 6.1.3
|
||||
'@codemirror/view':
|
||||
specifier: ^6.41.0
|
||||
version: 6.41.0
|
||||
specifier: ^6.41.1
|
||||
version: 6.41.1
|
||||
'@fontsource/geist':
|
||||
specifier: ^5.2.8
|
||||
version: 5.2.8
|
||||
|
|
@ -71,7 +71,7 @@ importers:
|
|||
version: 2.10.3
|
||||
'@uiw/react-codemirror':
|
||||
specifier: ^4.25.9
|
||||
version: 4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.1)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.41.0)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||
version: 4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.1)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.41.1)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||
'@vitejs/plugin-react':
|
||||
specifier: ^6.0.1
|
||||
version: 6.0.1(vite@8.0.8(@types/node@25.6.0)(jiti@2.6.1))
|
||||
|
|
@ -246,8 +246,8 @@ packages:
|
|||
'@codemirror/theme-one-dark@6.1.3':
|
||||
resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==}
|
||||
|
||||
'@codemirror/view@6.41.0':
|
||||
resolution: {integrity: sha512-6H/qadXsVuDY219Yljhohglve8xf4B8xJkVOEWfA5uiYKiTFppjqsvsfR5iPA0RbvRBoOyTZpbLIxe9+0UR8xA==}
|
||||
'@codemirror/view@6.41.1':
|
||||
resolution: {integrity: sha512-ToDnWKbBnke+ZLrP6vgTTDScGi5H37YYuZGniQaBzxMVdtCxMrslsmtnOvbPZk4RX9bvkQqnWR/WS/35tJA0qg==}
|
||||
|
||||
'@colors/colors@1.6.0':
|
||||
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
|
||||
|
|
@ -530,8 +530,8 @@ packages:
|
|||
'@lezer/highlight@1.2.3':
|
||||
resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==}
|
||||
|
||||
'@lezer/lr@1.4.9':
|
||||
resolution: {integrity: sha512-mF6irshW4nRJEhdR0HOAxxTDGss+rQFqA0nLRlZsPh14q+DB9Fqp0YbOvyRSOeKPLfUL/w5wPQAcETvkQ1VApg==}
|
||||
'@lezer/lr@1.4.10':
|
||||
resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==}
|
||||
|
||||
'@malept/cross-spawn-promise@2.0.0':
|
||||
resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==}
|
||||
|
|
@ -1079,8 +1079,8 @@ packages:
|
|||
babel-plugin-react-compiler:
|
||||
optional: true
|
||||
|
||||
'@xmldom/xmldom@0.8.12':
|
||||
resolution: {integrity: sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==}
|
||||
'@xmldom/xmldom@0.8.13':
|
||||
resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
|
||||
abbrev@3.0.1:
|
||||
|
|
@ -1163,8 +1163,8 @@ packages:
|
|||
base64-js@1.5.1:
|
||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||
|
||||
baseline-browser-mapping@2.10.19:
|
||||
resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==}
|
||||
baseline-browser-mapping@2.10.20:
|
||||
resolution: {integrity: sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
|
||||
|
|
@ -3247,35 +3247,35 @@ snapshots:
|
|||
dependencies:
|
||||
'@codemirror/language': 6.12.3
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
'@lezer/common': 1.5.2
|
||||
|
||||
'@codemirror/commands@6.10.3':
|
||||
dependencies:
|
||||
'@codemirror/language': 6.12.3
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
'@lezer/common': 1.5.2
|
||||
|
||||
'@codemirror/language@6.12.3':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
'@lezer/common': 1.5.2
|
||||
'@lezer/highlight': 1.2.3
|
||||
'@lezer/lr': 1.4.9
|
||||
'@lezer/lr': 1.4.10
|
||||
style-mod: 4.1.3
|
||||
|
||||
'@codemirror/lint@6.9.5':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
crelt: 1.0.6
|
||||
|
||||
'@codemirror/search@6.6.0':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
crelt: 1.0.6
|
||||
|
||||
'@codemirror/state@6.6.0':
|
||||
|
|
@ -3286,10 +3286,10 @@ snapshots:
|
|||
dependencies:
|
||||
'@codemirror/language': 6.12.3
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
'@lezer/highlight': 1.2.3
|
||||
|
||||
'@codemirror/view@6.41.0':
|
||||
'@codemirror/view@6.41.1':
|
||||
dependencies:
|
||||
'@codemirror/state': 6.6.0
|
||||
crelt: 1.0.6
|
||||
|
|
@ -3576,7 +3576,7 @@ snapshots:
|
|||
dependencies:
|
||||
'@lezer/common': 1.5.2
|
||||
|
||||
'@lezer/lr@1.4.9':
|
||||
'@lezer/lr@1.4.10':
|
||||
dependencies:
|
||||
'@lezer/common': 1.5.2
|
||||
|
||||
|
|
@ -3921,7 +3921,7 @@ snapshots:
|
|||
dependencies:
|
||||
'@types/node': 25.6.0
|
||||
|
||||
'@uiw/codemirror-extensions-basic-setup@4.25.9(@codemirror/autocomplete@6.20.1)(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)':
|
||||
'@uiw/codemirror-extensions-basic-setup@4.25.9(@codemirror/autocomplete@6.20.1)(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/view@6.41.1)':
|
||||
dependencies:
|
||||
'@codemirror/autocomplete': 6.20.1
|
||||
'@codemirror/commands': 6.10.3
|
||||
|
|
@ -3929,16 +3929,16 @@ snapshots:
|
|||
'@codemirror/lint': 6.9.5
|
||||
'@codemirror/search': 6.6.0
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
|
||||
'@uiw/react-codemirror@4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.1)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.41.0)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
|
||||
'@uiw/react-codemirror@4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.1)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.41.1)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.29.2
|
||||
'@codemirror/commands': 6.10.3
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/theme-one-dark': 6.1.3
|
||||
'@codemirror/view': 6.41.0
|
||||
'@uiw/codemirror-extensions-basic-setup': 4.25.9(@codemirror/autocomplete@6.20.1)(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)
|
||||
'@codemirror/view': 6.41.1
|
||||
'@uiw/codemirror-extensions-basic-setup': 4.25.9(@codemirror/autocomplete@6.20.1)(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.5)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/view@6.41.1)
|
||||
codemirror: 6.0.2
|
||||
react: 19.2.5
|
||||
react-dom: 19.2.5(react@19.2.5)
|
||||
|
|
@ -3955,7 +3955,7 @@ snapshots:
|
|||
'@rolldown/pluginutils': 1.0.0-rc.7
|
||||
vite: 8.0.8(@types/node@25.6.0)(jiti@2.6.1)
|
||||
|
||||
'@xmldom/xmldom@0.8.12': {}
|
||||
'@xmldom/xmldom@0.8.13': {}
|
||||
|
||||
abbrev@3.0.1: {}
|
||||
|
||||
|
|
@ -4051,7 +4051,7 @@ snapshots:
|
|||
|
||||
base64-js@1.5.1: {}
|
||||
|
||||
baseline-browser-mapping@2.10.19: {}
|
||||
baseline-browser-mapping@2.10.20: {}
|
||||
|
||||
bl@4.1.0:
|
||||
dependencies:
|
||||
|
|
@ -4077,7 +4077,7 @@ snapshots:
|
|||
|
||||
browserslist@4.28.2:
|
||||
dependencies:
|
||||
baseline-browser-mapping: 2.10.19
|
||||
baseline-browser-mapping: 2.10.20
|
||||
caniuse-lite: 1.0.30001788
|
||||
electron-to-chromium: 1.5.340
|
||||
node-releases: 2.0.37
|
||||
|
|
@ -4223,7 +4223,7 @@ snapshots:
|
|||
'@codemirror/lint': 6.9.5
|
||||
'@codemirror/search': 6.6.0
|
||||
'@codemirror/state': 6.6.0
|
||||
'@codemirror/view': 6.41.0
|
||||
'@codemirror/view': 6.41.1
|
||||
|
||||
color-convert@2.0.1:
|
||||
dependencies:
|
||||
|
|
@ -5729,7 +5729,7 @@ snapshots:
|
|||
|
||||
plist@3.1.0:
|
||||
dependencies:
|
||||
'@xmldom/xmldom': 0.8.12
|
||||
'@xmldom/xmldom': 0.8.13
|
||||
base64-js: 1.5.1
|
||||
xmlbuilder: 15.1.1
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue