turbollm 1.8.0 → 1.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -9
- package/dist/cli.js +10142 -8853
- package/dist/webdist/assets/{AgentEditPage-D88hpQjX.js → AgentEditPage-DrcwQcJE.js} +1 -1
- package/dist/webdist/assets/{ChatScreen-DuFszp3m.js → ChatScreen-BkpwUk-O.js} +15 -15
- package/dist/webdist/assets/CodeComposer-DG4lgSoA.js +1 -0
- package/dist/webdist/assets/CodeHomeScreen-Cqv5c0nM.js +1 -0
- package/dist/webdist/assets/CodeSessionScreen-aQesvCPO.js +4 -0
- package/dist/webdist/assets/{CustomizeScreen-CLgcLY96.js → CustomizeScreen-DRrw2hs7.js} +3 -3
- package/dist/webdist/assets/{DeveloperScreen-CDRUPDNH.js → DeveloperScreen-pTaZZ6r5.js} +1 -1
- package/dist/webdist/assets/EnginesScreen-BvZtUKd0.js +7 -0
- package/dist/webdist/assets/{FsBrowser-jN8FOadG.js → FsBrowser-D0rDep29.js} +1 -1
- package/dist/webdist/assets/ModelLoadMenu-K1Qolm9B.js +2 -0
- package/dist/webdist/assets/{ModelsScreen-C6F8L2lP.js → ModelsScreen-HfLjpGmf.js} +2 -2
- package/dist/webdist/assets/SettingsScreen-z-UuH8MI.js +1 -0
- package/dist/webdist/assets/{SkillEditPage-Dlwmzyj5.js → SkillEditPage-W3ofhEQn.js} +1 -1
- package/dist/webdist/assets/{TokensScreen-CBevGp-z.js → TokensScreen-dLb-UDmL.js} +1 -1
- package/dist/webdist/assets/{ToolApprovalBar-DnXllBoo.js → ToolApprovalBar-BGRW2hFN.js} +15 -15
- package/dist/webdist/assets/WorkspaceScreen-C5R7gzUi.js +1 -0
- package/dist/webdist/assets/{agent-api-O8wWVGcr.js → agent-api-C48x10WZ.js} +1 -1
- package/dist/webdist/assets/{arc-CQVQV0bp.js → arc-B6W63qO_.js} +1 -1
- package/dist/webdist/assets/{architectureDiagram-3BPJPVTR-H-Mb9chI.js → architectureDiagram-3BPJPVTR-BNxjHCm7.js} +1 -1
- package/dist/webdist/assets/{arrow-left-DueDI4Uy.js → arrow-left-DmGW0W4g.js} +1 -1
- package/dist/webdist/assets/{badge-9Ks3OTiY.js → badge-IsOHcYvf.js} +1 -1
- package/dist/webdist/assets/{blockDiagram-GPEHLZMM-BuB5_KcP.js → blockDiagram-GPEHLZMM-DrPlDIMe.js} +1 -1
- package/dist/webdist/assets/{bot-C1XfUPJ6.js → bot-DAa4xIIF.js} +1 -1
- package/dist/webdist/assets/{c4Diagram-AAUBKEIU-D6j10p1Y.js → c4Diagram-AAUBKEIU-BKtn6SbN.js} +1 -1
- package/dist/webdist/assets/channel-CDs60xNM.js +1 -0
- package/dist/webdist/assets/{chat-api-BUhr1L49.js → chat-api-CtbwBsSY.js} +1 -1
- package/dist/webdist/assets/chat-queries-BANbggZ1.js +1 -0
- package/dist/webdist/assets/check-DeJoIInG.js +1 -0
- package/dist/webdist/assets/{chevron-left-DCWiYX-E.js → chevron-left-DScqk7lr.js} +1 -1
- package/dist/webdist/assets/{chevron-right-pdRyf_Eq.js → chevron-right-DNc_yz-y.js} +1 -1
- package/dist/webdist/assets/{chunk-2J33WTMH-CWiMU4wH.js → chunk-2J33WTMH-B97vCEvd.js} +1 -1
- package/dist/webdist/assets/{chunk-4BX2VUAB-C-oMxSW6.js → chunk-4BX2VUAB-B5mAgaq1.js} +1 -1
- package/dist/webdist/assets/{chunk-55IACEB6-BCRoeq5k.js → chunk-55IACEB6-CCZRTh0d.js} +1 -1
- package/dist/webdist/assets/{chunk-727SXJPM-BbHqxFbG.js → chunk-727SXJPM-tZT9XNMs.js} +1 -1
- package/dist/webdist/assets/{chunk-AQP2D5EJ-ButGmr8P.js → chunk-AQP2D5EJ-CfIdLt8G.js} +1 -1
- package/dist/webdist/assets/{chunk-FMBD7UC4-DKI8m0TV.js → chunk-FMBD7UC4-BRdScA0W.js} +1 -1
- package/dist/webdist/assets/{chunk-ND2GUHAM-Bs3XC7R7.js → chunk-ND2GUHAM-BedHAIQl.js} +1 -1
- package/dist/webdist/assets/{chunk-QZHKN3VN-BNfpdzfY.js → chunk-QZHKN3VN-ByAw17Nt.js} +1 -1
- package/dist/webdist/assets/{circle-check-Bkj-plFS.js → circle-check-BNIKoJDg.js} +1 -1
- package/dist/webdist/assets/{circle-x-C8OFx7JZ.js → circle-x-DfIf4ChY.js} +1 -1
- package/dist/webdist/assets/classDiagram-4FO5ZUOK-BLIfDCvc.js +1 -0
- package/dist/webdist/assets/classDiagram-v2-Q7XG4LA2-BLIfDCvc.js +1 -0
- package/dist/webdist/assets/collapsible-CSr2FFbS.js +1 -0
- package/dist/webdist/assets/{common-BZRA66BA.js → common-BwXsHduN.js} +1 -1
- package/dist/webdist/assets/{copy-button-BveaGT4h.js → copy-button-BcFHHH9b.js} +1 -1
- package/dist/webdist/assets/{cose-bilkent-S5V4N54A-DhZrfcwd.js → cose-bilkent-S5V4N54A--x5WjVCv.js} +1 -1
- package/dist/webdist/assets/{dagre-BM42HDAG-w59rkdsA.js → dagre-BM42HDAG-DWQy_ulr.js} +1 -1
- package/dist/webdist/assets/{diagram-2AECGRRQ-BdTCCJ0W.js → diagram-2AECGRRQ-DQo4yJeJ.js} +1 -1
- package/dist/webdist/assets/{diagram-5GNKFQAL-ZZDkePvS.js → diagram-5GNKFQAL-DwbynoQ2.js} +1 -1
- package/dist/webdist/assets/{diagram-KO2AKTUF-CFG-oPSH.js → diagram-KO2AKTUF-CjKV0fFm.js} +1 -1
- package/dist/webdist/assets/{diagram-LMA3HP47-D1xIF2PG.js → diagram-LMA3HP47-CXfjg5Fe.js} +1 -1
- package/dist/webdist/assets/{diagram-OG6HWLK6-33OyN5UI.js → diagram-OG6HWLK6-CKEjI4NC.js} +1 -1
- package/dist/webdist/assets/{dialog-lSZ58YOX.js → dialog-uY3tk3E9.js} +1 -1
- package/dist/webdist/assets/{erDiagram-TEJ5UH35-CmVhoR3c.js → erDiagram-TEJ5UH35-D43kYg84.js} +1 -1
- package/dist/webdist/assets/{external-link-BMN-irzE.js → external-link-jnEQCJGd.js} +1 -1
- package/dist/webdist/assets/{flowDiagram-I6XJVG4X-WMlzGSnn.js → flowDiagram-I6XJVG4X-qGS0J-De.js} +1 -1
- package/dist/webdist/assets/{ganttDiagram-6RSMTGT7-BJLo3ueL.js → ganttDiagram-6RSMTGT7-3Ud_YPtk.js} +1 -1
- package/dist/webdist/assets/{git-branch-B4Zerf_C.js → git-branch-BZW2_OwW.js} +1 -1
- package/dist/webdist/assets/{gitGraphDiagram-PVQCEYII-BMDKDbc6.js → gitGraphDiagram-PVQCEYII-BhOiYdR2.js} +1 -1
- package/dist/webdist/assets/{index-18g2acqe.js → index-Cl9fRADn.js} +1 -1
- package/dist/webdist/assets/index-DffknE3S.css +1 -0
- package/dist/webdist/assets/{index-BT3X9hod.js → index-rezSzJo3.js} +4 -4
- package/dist/webdist/assets/{infoDiagram-5YYISTIA-DsBmPCqk.js → infoDiagram-5YYISTIA-D2Yo845I.js} +1 -1
- package/dist/webdist/assets/{ishikawaDiagram-YF4QCWOH-DIRruXw4.js → ishikawaDiagram-YF4QCWOH-BoTTMzTX.js} +1 -1
- package/dist/webdist/assets/{journeyDiagram-JHISSGLW-CbEMG5w1.js → journeyDiagram-JHISSGLW-B30FNQqG.js} +1 -1
- package/dist/webdist/assets/{kanban-definition-UN3LZRKU-BUQ978A5.js → kanban-definition-UN3LZRKU-DwuHMcyp.js} +1 -1
- package/dist/webdist/assets/{layers-DDa_JhQb.js → layers-BbMBWfEB.js} +1 -1
- package/dist/webdist/assets/{linear-C1OpvMyX.js → linear-BI-xSqy2.js} +1 -1
- package/dist/webdist/assets/{mermaid.core-C5mzu5db.js → mermaid.core-DjBtB3Ob.js} +4 -4
- package/dist/webdist/assets/{mindmap-definition-RKZ34NQL-C8VgTDps.js → mindmap-definition-RKZ34NQL-P0Blz3ba.js} +1 -1
- package/dist/webdist/assets/{pencil-DLZvuPKt.js → pencil-pd4qdmIY.js} +1 -1
- package/dist/webdist/assets/{personas-mlw8yQfu.js → personas-DGNsw4JH.js} +42 -20
- package/dist/webdist/assets/{pieDiagram-4H26LBE5-CtIMFL5O.js → pieDiagram-4H26LBE5-D_RWWNYB.js} +1 -1
- package/dist/webdist/assets/{plus-HphyEDmN.js → plus-Co-23h9C.js} +1 -1
- package/dist/webdist/assets/{quadrantDiagram-W4KKPZXB-DIqeifSf.js → quadrantDiagram-W4KKPZXB-0UW-qXoo.js} +1 -1
- package/dist/webdist/assets/{radix-B85O-RTd.js → radix-C-sz7VcM.js} +8 -8
- package/dist/webdist/assets/{refresh-cw-y2Z1FMEB.js → refresh-cw-DBHReAx0.js} +1 -1
- package/dist/webdist/assets/{requirementDiagram-4Y6WPE33-BPdTK6aB.js → requirementDiagram-4Y6WPE33-DQPViUOU.js} +1 -1
- package/dist/webdist/assets/{rotate-ccw-CwgndVE1.js → rotate-ccw-L6hm18l-.js} +1 -1
- package/dist/webdist/assets/{sankeyDiagram-5OEKKPKP-B1Gi97qT.js → sankeyDiagram-5OEKKPKP-CoFKXFxN.js} +1 -1
- package/dist/webdist/assets/{sequenceDiagram-3UESZ5HK-SYx7VZVE.js → sequenceDiagram-3UESZ5HK-CTKbZzaz.js} +1 -1
- package/dist/webdist/assets/skeleton-CTqhU4nE.js +1 -0
- package/dist/webdist/assets/{sliders-horizontal-5GgMjS2o.js → sliders-horizontal-CqA4xQwh.js} +1 -1
- package/dist/webdist/assets/{star-CS1ent0J.js → star-C4xvUEne.js} +1 -1
- package/dist/webdist/assets/{stateDiagram-AJRCARHV-B9cLtTOo.js → stateDiagram-AJRCARHV-Bbgyioxb.js} +1 -1
- package/dist/webdist/assets/stateDiagram-v2-BHNVJYJU-DBMc27o_.js +1 -0
- package/dist/webdist/assets/{switch-6Yli7CDA.js → switch-vVu6UIJB.js} +1 -1
- package/dist/webdist/assets/{terminal-ClfB9HZ7.js → terminal-BqY0B6tG.js} +1 -1
- package/dist/webdist/assets/{timeline-definition-PNZ67QCA-B1F891lb.js → timeline-definition-PNZ67QCA-CNuDMLf0.js} +1 -1
- package/dist/webdist/assets/{trash-2-BT9psXif.js → trash-2-CI-4vgjV.js} +1 -1
- package/dist/webdist/assets/useIsDesktop-B-UPxY57.js +1 -0
- package/dist/webdist/assets/{vennDiagram-CIIHVFJN-BDuJrthf.js → vennDiagram-CIIHVFJN-5KfL6f8c.js} +1 -1
- package/dist/webdist/assets/{wardley-L42UT6IY-CZKN4Z4o.js → wardley-L42UT6IY-KSQpq69w.js} +1 -1
- package/dist/webdist/assets/{wardleyDiagram-YWT4CUSO-DxNYqbgl.js → wardleyDiagram-YWT4CUSO-CRDC9-52.js} +1 -1
- package/dist/webdist/assets/{wrench-B3syOd6q.js → wrench-B6O2XFxJ.js} +1 -1
- package/dist/webdist/assets/{xychartDiagram-2RQKCTM6-D3MXmGWF.js → xychartDiagram-2RQKCTM6-CFJUnPty.js} +1 -1
- package/dist/webdist/index.html +3 -3
- package/package.json +1 -1
- package/dist/webdist/assets/CodeComposer-y9wKcBjz.js +0 -1
- package/dist/webdist/assets/CodeHomeScreen-CtAhXuz1.js +0 -1
- package/dist/webdist/assets/CodeSessionScreen-QWTJn0xc.js +0 -4
- package/dist/webdist/assets/EnginesScreen-Cgn0suwB.js +0 -7
- package/dist/webdist/assets/ModelLoadMenu-L976cVK2.js +0 -2
- package/dist/webdist/assets/SettingsScreen-Bbxo0o6Z.js +0 -1
- package/dist/webdist/assets/WorkspaceScreen-DW8fhHyQ.js +0 -1
- package/dist/webdist/assets/channel-DL1wlWc3.js +0 -1
- package/dist/webdist/assets/chat-queries-C3B2yhFj.js +0 -1
- package/dist/webdist/assets/check-DpwlZ09-.js +0 -1
- package/dist/webdist/assets/classDiagram-4FO5ZUOK-BqB0gU2U.js +0 -1
- package/dist/webdist/assets/classDiagram-v2-Q7XG4LA2-BqB0gU2U.js +0 -1
- package/dist/webdist/assets/collapsible-BP6hWVJl.js +0 -1
- package/dist/webdist/assets/index-DLgbKhrx.css +0 -1
- package/dist/webdist/assets/skeleton-BsVUTiYp.js +0 -1
- package/dist/webdist/assets/stateDiagram-v2-BHNVJYJU-B74HcsOd.js +0 -1
- package/dist/webdist/assets/useIsDesktop-Cfo6Oh8W.js +0 -1
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
+
<a href="https://turbollm.dev"><img src="https://img.shields.io/badge/turbollm.dev-docs%20·%20models%20·%20guides-e2552e" alt="turbollm.dev" /></a>
|
|
15
16
|
<a href="https://www.npmjs.com/package/turbollm"><img src="https://img.shields.io/npm/v/turbollm.svg?color=e2552e" alt="npm version" /></a>
|
|
16
17
|
<a href="https://www.npmjs.com/package/turbollm"><img src="https://img.shields.io/npm/dm/turbollm.svg?color=e2552e" alt="npm downloads" /></a>
|
|
17
18
|
<img src="https://img.shields.io/badge/node-%E2%89%A522-3c873a.svg" alt="node >= 22" />
|
|
@@ -22,6 +23,11 @@
|
|
|
22
23
|
<a href="https://discord.gg/v6kRbV7nC"><img src="https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white" alt="Discord" /></a>
|
|
23
24
|
</p>
|
|
24
25
|
|
|
26
|
+
<p align="center">
|
|
27
|
+
<sub><strong>Source-available</strong> under <a href="#license">FSL-1.1</a> — free for personal and
|
|
28
|
+
internal business use; every release converts to <strong>Apache-2.0</strong> two years after it ships.</sub>
|
|
29
|
+
</p>
|
|
30
|
+
|
|
25
31
|
<!-- Brand: shipped app icon web/public/brand/turbollm-icon-512.jpeg · high-res masters web/brand-assets/ (unshipped) · in-app mark web/src/components/Logo.tsx · favicon web/public/favicon.svg -->
|
|
26
32
|
|
|
27
33
|
```bash
|
|
@@ -31,6 +37,12 @@ npx turbollm
|
|
|
31
37
|
That one command starts a local daemon, opens a browser UI, and serves your models over an
|
|
32
38
|
API any tool can talk to. TurboLLM is the **performance & bleeding-edge layer for local
|
|
33
39
|
LLMs** — built for people who today hand-compile forks and hunt forums for the right flags.
|
|
40
|
+
The speed is measured, not promised: **74.7 vs 61 t/s on the *same* official llama.cpp as
|
|
41
|
+
LM Studio — and 2.2× on forks it can't load** ([the numbers](#speed-turbollm-vs-lm-studio)).
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<strong>📖 Full docs · what runs on your GPU · model picks → <a href="https://turbollm.dev">turbollm.dev</a></strong>
|
|
45
|
+
</p>
|
|
34
46
|
|
|
35
47
|
<p align="center">
|
|
36
48
|
<img src="https://raw.githubusercontent.com/mohitsoni48/TurboLLM/main/assets/how-it-works.svg?v=2" width="860" alt="How TurboLLM works: clients -> one lightweight daemon -> any engine on your GPU" />
|
|
@@ -41,6 +53,7 @@ LLMs** — built for people who today hand-compile forks and hunt forums for the
|
|
|
41
53
|
## Contents
|
|
42
54
|
|
|
43
55
|
- [Why TurboLLM](#why-turbollm)
|
|
56
|
+
- [Who this is for — and who it isn't](#who-this-is-for--and-who-it-isnt)
|
|
44
57
|
- [Speed: TurboLLM vs LM Studio](#speed-turbollm-vs-lm-studio)
|
|
45
58
|
- [Features](#features)
|
|
46
59
|
- [Quick start](#quick-start)
|
|
@@ -79,7 +92,7 @@ TurboLLM does the opposite:
|
|
|
79
92
|
a **VRAM-fit verdict before you load** — no more flag guessing.
|
|
80
93
|
- **📊 Real tokens/sec, never faked.** Speed in the model list is *measured on your machine*
|
|
81
94
|
from actual generation — live while you chat, and remembered per model.
|
|
82
|
-
- **🪶 Lightweight.** A ~
|
|
95
|
+
- **🪶 Lightweight.** A ~7 MB npm package on Node — **no Electron, no bundled Chromium, no
|
|
83
96
|
Python**. It downloads only the engine your GPU actually needs (Vulkan ≈ 38 MB).
|
|
84
97
|
- **🔌 Drop-in APIs.** OpenAI **and** Anthropic-compatible — so Claude Code and every existing
|
|
85
98
|
tool work unchanged.
|
|
@@ -90,6 +103,27 @@ TurboLLM does the opposite:
|
|
|
90
103
|
|
|
91
104
|
---
|
|
92
105
|
|
|
106
|
+
## Who this is for — and who it isn't
|
|
107
|
+
|
|
108
|
+
**It's for you if:**
|
|
109
|
+
|
|
110
|
+
- you're tired of hand-tuning `-ngl` / KV / offload flags for every model and never trusting
|
|
111
|
+
the speed number;
|
|
112
|
+
- you want community forks (low-bit KV cache, NextN speculative decoding, new quant formats)
|
|
113
|
+
on day 0 — without compiling anything;
|
|
114
|
+
- you're pointing agents or **Claude Code** at a local model and want that to be one command;
|
|
115
|
+
- you already have folders of GGUFs from LM Studio / Ollama and refuse to re-download them.
|
|
116
|
+
|
|
117
|
+
**It's probably not for you if:**
|
|
118
|
+
|
|
119
|
+
- you want a zero-terminal, one-click desktop installer — TurboLLM currently needs
|
|
120
|
+
[Node ≥22](#requirements) and one terminal command (a packaged installer is planned);
|
|
121
|
+
- you're happy with a single blessed runtime and stock settings — LM Studio and Ollama
|
|
122
|
+
already serve that well;
|
|
123
|
+
- you need training or fine-tuning — TurboLLM is inference only.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
93
127
|
## Speed: TurboLLM vs LM Studio
|
|
94
128
|
|
|
95
129
|
Same GPU (RTX 5070 Ti 16 GB), same model, same 200K context — measured generation speed.
|
|
@@ -134,8 +168,9 @@ the detail:
|
|
|
134
168
|
<br/>
|
|
135
169
|
|
|
136
170
|
- **Use the folders you already have.** Point TurboLLM at any directory of GGUFs — your
|
|
137
|
-
existing LM Studio
|
|
138
|
-
metadata (arch, params, quant, context, vision) for every file.
|
|
171
|
+
existing LM Studio folders or manual downloads — **no re-downloading.** It parses GGUF
|
|
172
|
+
metadata (arch, params, quant, context, vision) for every file. (Models pulled by
|
|
173
|
+
`ollama pull` live in Ollama's own blob store, which TurboLLM doesn't read.)
|
|
139
174
|
- **Browse & download from Hugging Face**, in-app: a live, sortable list (trending / downloads
|
|
140
175
|
/ likes / recently updated / newest) alongside a permanent detail pane — pick a quant, read
|
|
141
176
|
the **rendered model card**, and download with **resume + SHA-256 verification**. Each model
|
|
@@ -183,6 +218,9 @@ the detail:
|
|
|
183
218
|
overwrites another engine's tuning for the same model.
|
|
184
219
|
- **Configurable VRAM headroom** (Settings → Models & loading → Advanced, 300 MB–2 GB, default
|
|
185
220
|
1 GB) — tell auto-tune how much VRAM to keep free for other GPU workloads instead of a fixed margin.
|
|
221
|
+
Drag it to 0 to opt into an experimental **MoE "VRAM-spill" search** — auto-tune keeps pushing more
|
|
222
|
+
experts onto the GPU past the safe margin as long as both generation and prompt-processing speed
|
|
223
|
+
keep improving.
|
|
186
224
|
|
|
187
225
|
</details>
|
|
188
226
|
|
|
@@ -345,7 +383,7 @@ connected); **Remove** undoes it.
|
|
|
345
383
|
|
|
346
384
|
<br/>
|
|
347
385
|
|
|
348
|
-
- A **~
|
|
386
|
+
- A **~7 MB npm package** on Node — no Electron, no bundled Chromium, no Python.
|
|
349
387
|
- **Offline-first** — no account, no backend, no internet, no telemetry.
|
|
350
388
|
- **Windows · macOS · Linux**, with a CPU fallback when there's no GPU.
|
|
351
389
|
|
|
@@ -501,7 +539,22 @@ Use `--config <file>` to point at an alternate config (its directory becomes the
|
|
|
501
539
|
|
|
502
540
|
## Requirements
|
|
503
541
|
|
|
504
|
-
- **Node.js 22.13.0 or newer** — enforced at startup with a clear message.
|
|
542
|
+
- **Node.js 22.13.0 or newer** — enforced at startup with a clear message.
|
|
543
|
+
|
|
544
|
+
<details>
|
|
545
|
+
<summary><strong>Don't have Node?</strong> One command installs it.</summary>
|
|
546
|
+
|
|
547
|
+
<br/>
|
|
548
|
+
|
|
549
|
+
- **Windows:** `winget install OpenJS.NodeJS.LTS` (or download from <https://nodejs.org>)
|
|
550
|
+
- **macOS:** `brew install node` (or download from <https://nodejs.org>)
|
|
551
|
+
- **Linux:** use your distro's package manager or <https://nodejs.org> — make sure it's
|
|
552
|
+
v22+ (`node --version`)
|
|
553
|
+
|
|
554
|
+
Then open a **new terminal** (Windows needs one for `PATH` to refresh) and run `npx turbollm`.
|
|
555
|
+
|
|
556
|
+
</details>
|
|
557
|
+
|
|
505
558
|
- **Windows, macOS, or Linux.**
|
|
506
559
|
- A GPU is recommended but **not required** — a CPU build is provisioned as a fallback.
|
|
507
560
|
- On Windows, the first time the auto-downloaded `llama-server` runs, SmartScreen/Defender may
|
|
@@ -534,7 +587,7 @@ Marks reflect mid-2026; verify the moving rows against each tool's current docs.
|
|
|
534
587
|
| Speculative decoding (draft / MTP) | ✅ | ✅ | ◐ env flag | ❌ |
|
|
535
588
|
| Web UI from any LAN device | ✅ | ❌ | ❌ | ✅ |
|
|
536
589
|
| **Lightweight** (no Electron / no Python) | ✅ npm | ❌ Electron | ✅ Go | ❌ Python |
|
|
537
|
-
| Offline-first · **no telemetry** | ✅ | ◐
|
|
590
|
+
| Offline-first · **no telemetry** | ✅ verifiable (source-available) | ◐ closed app — not verifiable | ✅ | ✅ |
|
|
538
591
|
|
|
539
592
|
LM Studio and Ollama both added Anthropic `/v1/messages` endpoints in 2026, so the API rows are
|
|
540
593
|
now parity — Claude Code works against any of them. TurboLLM's durable edges are **any engine
|
|
@@ -582,14 +635,33 @@ shadcn/ui frontend. One TypeScript codebase, shipped as an npm package.
|
|
|
582
635
|
## Community
|
|
583
636
|
|
|
584
637
|
Questions, ideas, and show-and-tell — join the [Discord](https://discord.gg/v6kRbV7nC).
|
|
638
|
+
Want to contribute? See [CONTRIBUTING.md](https://github.com/mohitsoni48/TurboLLM/blob/main/CONTRIBUTING.md).
|
|
639
|
+
|
|
640
|
+
If TurboLLM saved you flag-hunting time, a ⭐ on the repo helps others find it.
|
|
585
641
|
|
|
586
642
|
---
|
|
587
643
|
|
|
588
644
|
## License
|
|
589
645
|
|
|
590
646
|
Source-available under the **Functional Source License 1.1 (Apache-2.0 future grant)** — SPDX
|
|
591
|
-
**`FSL-1.1-ALv2`**.
|
|
592
|
-
|
|
593
|
-
|
|
647
|
+
**`FSL-1.1-ALv2`**. Full text: [LICENSE.md](https://github.com/mohitsoni48/TurboLLM/blob/main/turbollm/LICENSE.md).
|
|
648
|
+
|
|
649
|
+
**License FAQ** (plain-language summary — the license text is what's binding):
|
|
650
|
+
|
|
651
|
+
- **Can I use it for free?** Yes. Personal use, internal business use, education, research,
|
|
652
|
+
and self-hosting — including commercially, inside your company — are all free. The license
|
|
653
|
+
permits *any* use except the one below.
|
|
654
|
+
- **What's the one restriction?** You can't take TurboLLM and ship it (or its functionality)
|
|
655
|
+
as a **competing commercial product or service**. That's the entire boundary.
|
|
656
|
+
- **Can I fork it or redistribute it?** Yes — modify, fork, and redistribute freely for any
|
|
657
|
+
permitted purpose; keep the license text and copyright notices with it.
|
|
658
|
+
- **When does it become fully open source?** The license includes an **irrevocable** grant:
|
|
659
|
+
each release converts to **Apache-2.0 exactly two years** after that release is published.
|
|
660
|
+
The first public release shipped June 2026, so it converts in June 2028 — and every release
|
|
661
|
+
after it follows on its own two-year clock.
|
|
662
|
+
- **Why not MIT/Apache from day one?** TurboLLM is built by a solo maintainer; FSL prevents a
|
|
663
|
+
large vendor from re-skinning it as their own product while it's young, and the future grant
|
|
664
|
+
guarantees the full open-source outcome anyway. (Sentry created the FSL; GitButler, PowerSync,
|
|
665
|
+
and Codecov ship under it too.)
|
|
594
666
|
|
|
595
667
|
<p align="center"><sub>Built for people who refuse to wait for the mainstream to bless the fast path. ⚡</sub></p>
|