@tryhamster/gerbil 1.0.0-rc.2 → 1.0.0-rc.21
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 +66 -6
- package/dist/browser/{index.d.mts → index.d.ts} +596 -5
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/{index.mjs → index.js} +1589 -298
- package/dist/browser/index.js.map +1 -0
- package/dist/{chrome-backend-Y9F7W5VQ.mjs → chrome-backend-CORwaIyC.mjs} +1 -1
- package/dist/{chrome-backend-Y9F7W5VQ.mjs.map → chrome-backend-CORwaIyC.mjs.map} +1 -1
- package/dist/{chrome-backend-JEPeM2YE.mjs → chrome-backend-DIKYoWj-.mjs} +1 -1
- package/dist/cli.mjs +16 -16
- package/dist/cli.mjs.map +1 -1
- package/dist/frameworks/express.d.mts +1 -1
- package/dist/frameworks/express.mjs +4 -4
- package/dist/frameworks/fastify.d.mts +1 -1
- package/dist/frameworks/fastify.mjs +3 -3
- package/dist/frameworks/hono.d.mts +1 -1
- package/dist/frameworks/hono.mjs +3 -3
- package/dist/frameworks/next.d.mts +2 -2
- package/dist/frameworks/next.mjs +3 -3
- package/dist/frameworks/react.d.mts +1 -1
- package/dist/frameworks/trpc.d.mts +1 -1
- package/dist/frameworks/trpc.mjs +3 -3
- package/dist/{gerbil-yoSpRHgv.mjs → gerbil-BZklpDhM.mjs} +475 -19
- package/dist/gerbil-BZklpDhM.mjs.map +1 -0
- package/dist/gerbil-CAMb_nrK.mjs +5 -0
- package/dist/{gerbil-POAz8peb.d.mts → gerbil-DJygY0sJ.d.mts} +120 -2
- package/dist/gerbil-DJygY0sJ.d.mts.map +1 -0
- package/dist/index.d.mts +20 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +6 -7
- package/dist/index.mjs.map +1 -1
- package/dist/integrations/ai-sdk.d.mts +72 -3
- package/dist/integrations/ai-sdk.d.mts.map +1 -1
- package/dist/integrations/ai-sdk.mjs +109 -7
- package/dist/integrations/ai-sdk.mjs.map +1 -1
- package/dist/integrations/langchain.d.mts +1 -1
- package/dist/integrations/langchain.mjs +3 -3
- package/dist/integrations/llamaindex.d.mts +1 -1
- package/dist/integrations/llamaindex.mjs +3 -3
- package/dist/integrations/mcp-client.mjs +2 -2
- package/dist/integrations/mcp.d.mts +2 -2
- package/dist/integrations/mcp.mjs +6 -6
- package/dist/kokoro-BNTb6egA.mjs +20210 -0
- package/dist/kokoro-BNTb6egA.mjs.map +1 -0
- package/dist/{mcp-Bitg4sjX.mjs → mcp-ZCC5OR7B.mjs} +3 -3
- package/dist/{mcp-Bitg4sjX.mjs.map → mcp-ZCC5OR7B.mjs.map} +1 -1
- package/dist/{one-liner-B1rmFto6.mjs → one-liner-mH5SKPvT.mjs} +2 -2
- package/dist/{one-liner-B1rmFto6.mjs.map → one-liner-mH5SKPvT.mjs.map} +1 -1
- package/dist/repl-CSM1IBP1.mjs +9 -0
- package/dist/skills/index.d.mts +2 -2
- package/dist/skills/index.mjs +5 -5
- package/dist/{skills-5DxAV-rn.mjs → skills-CPB_9YfF.mjs} +12 -12
- package/dist/skills-CPB_9YfF.mjs.map +1 -0
- package/dist/stt-1WIefHwc.mjs +3 -0
- package/dist/{stt-Bv_dum-R.mjs → stt-CG_7KB_0.mjs} +3 -2
- package/dist/stt-CG_7KB_0.mjs.map +1 -0
- package/dist/{tools-IYPrqoek.mjs → tools-Bi1P7Xoy.mjs} +2 -2
- package/dist/{tools-IYPrqoek.mjs.map → tools-Bi1P7Xoy.mjs.map} +1 -1
- package/dist/{tts-5yWeP_I0.mjs → tts-B1pZMlDv.mjs} +1 -1
- package/dist/{tts-DG6denWG.mjs → tts-CyHhcLtN.mjs} +6 -4
- package/dist/tts-CyHhcLtN.mjs.map +1 -0
- package/dist/{types-s6Py2_DL.d.mts → types-evP8RShr.d.mts} +26 -2
- package/dist/types-evP8RShr.d.mts.map +1 -0
- package/dist/{utils-CkB4Roi6.mjs → utils-CZBZ8dgR.mjs} +1 -1
- package/dist/{utils-CkB4Roi6.mjs.map → utils-CZBZ8dgR.mjs.map} +1 -1
- package/docs/ai-sdk.md +56 -1
- package/docs/architecture/overview.md +15 -7
- package/docs/browser.md +103 -0
- package/docs/embeddings.md +311 -0
- package/docs/tts.md +11 -8
- package/package.json +6 -6
- package/dist/browser/index.d.mts.map +0 -1
- package/dist/browser/index.mjs.map +0 -1
- package/dist/gerbil-DeQlX_Mt.mjs +0 -5
- package/dist/gerbil-POAz8peb.d.mts.map +0 -1
- package/dist/gerbil-yoSpRHgv.mjs.map +0 -1
- package/dist/models-BAtL8qsA.mjs +0 -171
- package/dist/models-BAtL8qsA.mjs.map +0 -1
- package/dist/models-CE0fBq0U.d.mts +0 -22
- package/dist/models-CE0fBq0U.d.mts.map +0 -1
- package/dist/repl-D20JO260.mjs +0 -10
- package/dist/skills-5DxAV-rn.mjs.map +0 -1
- package/dist/stt-Bv_dum-R.mjs.map +0 -1
- package/dist/stt-KzSoNvwI.mjs +0 -3
- package/dist/tts-DG6denWG.mjs.map +0 -1
- package/dist/types-s6Py2_DL.d.mts.map +0 -1
- /package/dist/{auto-update-DsWBBnEk.mjs → auto-update-S9s5-g0C.mjs} +0 -0
- /package/dist/{chunk-Ct1HF2bE.mjs → chunk-CkXuGtQK.mjs} +0 -0
- /package/dist/{microphone-D-6y9aiE.mjs → microphone-DaMZFRuR.mjs} +0 -0
package/README.md
CHANGED
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<a href="#install">Install</a> •
|
|
13
13
|
<a href="#quick-start">Quick Start</a> •
|
|
14
|
+
<a href="#embeddings">Embeddings</a> •
|
|
14
15
|
<a href="#text-to-speech">TTS</a> •
|
|
15
16
|
<a href="#speech-to-text">STT</a> •
|
|
17
|
+
<a href="./docs/vision.md">Vision</a> •
|
|
16
18
|
<a href="./docs/ai-sdk.md">AI SDK</a> •
|
|
17
19
|
<a href="./docs/cli.md">CLI</a>
|
|
18
20
|
</p>
|
|
@@ -45,7 +47,9 @@ const text = await gerbil("Explain recursion in one sentence");
|
|
|
45
47
|
- **Zero Config** — `npx @tryhamster/gerbil "your prompt"` just works
|
|
46
48
|
- **Local & Private** — No API keys, no data leaves your machine
|
|
47
49
|
- **GPU Accelerated** — WebGPU with CPU fallback
|
|
48
|
-
- **
|
|
50
|
+
- **Embeddings** — Semantic search, similarity, RAG
|
|
51
|
+
- **Vision** — Analyze images with Ministral 3B
|
|
52
|
+
- **Complete Audio** — Text-to-Speech (Kokoro/Supertonic) & Speech-to-Text (Whisper)
|
|
49
53
|
- **Framework Ready** — AI SDK v5, Next.js, Express, LangChain
|
|
50
54
|
- **Skills System** — Built-in + custom skills with Zod validation
|
|
51
55
|
- **Tool Calling** — Agentic capabilities with Qwen3 models
|
|
@@ -65,6 +69,30 @@ npm install @tryhamster/gerbil
|
|
|
65
69
|
|
|
66
70
|
After global install, use `gerbil` directly instead of `npx @tryhamster/gerbil`.
|
|
67
71
|
|
|
72
|
+
## Model Preloading
|
|
73
|
+
|
|
74
|
+
Download models ahead of time so users don't wait:
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { Gerbil } from "@tryhamster/gerbil";
|
|
78
|
+
|
|
79
|
+
const g = new Gerbil();
|
|
80
|
+
|
|
81
|
+
// Option 1: Preload for later (download only, free memory)
|
|
82
|
+
await g.preloadModel("qwen3-0.6b", {
|
|
83
|
+
onProgress: (p) => console.log(p.status, p.progress),
|
|
84
|
+
});
|
|
85
|
+
// Later: loads from disk cache (fast, no network)
|
|
86
|
+
await g.loadModel("qwen3-0.6b");
|
|
87
|
+
|
|
88
|
+
// Option 2: Preload and keep in memory (instant use)
|
|
89
|
+
await g.preloadModel("qwen3-0.6b", { keepLoaded: true });
|
|
90
|
+
// Instant - no loading needed
|
|
91
|
+
await g.generate("Hello");
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Works for all model types: `preloadTTS()`, `preloadSTT()`, `preloadEmbedding()`.
|
|
95
|
+
|
|
68
96
|
## Quick Start
|
|
69
97
|
|
|
70
98
|
```typescript
|
|
@@ -93,6 +121,30 @@ const data = await g.json("Extract: John, 32, NYC", {
|
|
|
93
121
|
});
|
|
94
122
|
```
|
|
95
123
|
|
|
124
|
+
## Embeddings
|
|
125
|
+
|
|
126
|
+
Generate semantic embeddings for search, similarity, and RAG:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// Compare two texts
|
|
130
|
+
const similarity = await g.similarity("Hello world", "Hi there");
|
|
131
|
+
console.log(similarity.score); // 0.85
|
|
132
|
+
|
|
133
|
+
// Semantic search
|
|
134
|
+
const results = await g.search("capital of France", [
|
|
135
|
+
"Paris is beautiful",
|
|
136
|
+
"London is in England",
|
|
137
|
+
"Dogs are pets"
|
|
138
|
+
]);
|
|
139
|
+
// [{ text: "Paris is beautiful", score: 0.89, index: 0 }, ...]
|
|
140
|
+
|
|
141
|
+
// Generate embedding vector
|
|
142
|
+
const { vector } = await g.embed("Hello world");
|
|
143
|
+
// number[384]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
📖 **[Full Embeddings Documentation →](./docs/embeddings.md)**
|
|
147
|
+
|
|
96
148
|
## Text-to-Speech
|
|
97
149
|
|
|
98
150
|
Generate natural speech locally using Kokoro TTS (28 voices):
|
|
@@ -272,8 +324,12 @@ function Chat() {
|
|
|
272
324
|
| Model | Size | Best For |
|
|
273
325
|
|-------|------|----------|
|
|
274
326
|
| `qwen3-0.6b` | ~400MB | General use, reasoning (thinking mode) |
|
|
327
|
+
| `qwen2.5-0.5b` | ~350MB | Fast and capable |
|
|
275
328
|
| `qwen2.5-coder-0.5b` | ~400MB | Code generation |
|
|
276
|
-
| `smollm2-
|
|
329
|
+
| `smollm2-360m` | ~250MB | Fast, simple tasks |
|
|
330
|
+
| `smollm2-135m` | ~100MB | Fastest, basic |
|
|
331
|
+
| `phi-3-mini` | ~2.1GB | High quality |
|
|
332
|
+
| `ministral-3b` | ~2.5GB | **Vision** + reasoning, 256k context |
|
|
277
333
|
|
|
278
334
|
Use any HuggingFace model: `npx @tryhamster/gerbil -m hf:org/model "prompt"`
|
|
279
335
|
|
|
@@ -281,22 +337,26 @@ Use any HuggingFace model: `npx @tryhamster/gerbil -m hf:org/model "prompt"`
|
|
|
281
337
|
|
|
282
338
|
| Model | Type | Size | Notes |
|
|
283
339
|
|-------|------|------|-------|
|
|
284
|
-
| `kokoro-82m` | TTS | ~330MB | 28 voices, English |
|
|
340
|
+
| `kokoro-82m` | TTS | ~330MB | 28 voices, English (default) |
|
|
341
|
+
| `supertonic-66m` | TTS | ~250MB | 4 voices, 44.1kHz, faster |
|
|
285
342
|
| `whisper-tiny.en` | STT | 39MB | English, fastest |
|
|
286
343
|
| `whisper-base.en` | STT | 74MB | English, balanced |
|
|
287
|
-
| `whisper-small` | STT | 244MB | 80+ languages |
|
|
344
|
+
| `whisper-small` | STT | 244MB | Multilingual, 80+ languages |
|
|
345
|
+
| `whisper-large-v3-turbo` | STT | 809MB | Best quality, 5.4x faster than v3 |
|
|
288
346
|
|
|
289
347
|
## Documentation
|
|
290
348
|
|
|
291
349
|
| Guide | Description |
|
|
292
350
|
|-------|-------------|
|
|
293
|
-
| [📖
|
|
351
|
+
| [📖 Embeddings](./docs/embeddings.md) | Semantic search, similarity, RAG |
|
|
352
|
+
| [📖 Vision](./docs/vision.md) | Image analysis with Ministral 3B |
|
|
353
|
+
| [📖 Text-to-Speech](./docs/tts.md) | Kokoro & Supertonic TTS, streaming audio |
|
|
294
354
|
| [📖 Speech-to-Text](./docs/stt.md) | Whisper STT, transcription, voice input |
|
|
295
355
|
| [📖 Browser](./docs/browser.md) | WebGPU inference, React hooks |
|
|
296
356
|
| [📖 Skills](./docs/skills.md) | Built-in skills, custom skill development |
|
|
297
357
|
| [📖 Tools](./docs/tools.md) | Tool calling, agentic workflows |
|
|
298
358
|
| [📖 REPL](./docs/repl.md) | Interactive terminal dashboard |
|
|
299
|
-
| [📖 AI SDK](./docs/ai-sdk.md) | Vercel AI SDK v5 (LLM, TTS, STT) |
|
|
359
|
+
| [📖 AI SDK](./docs/ai-sdk.md) | Vercel AI SDK v5 (LLM, TTS, STT, Embeddings) |
|
|
300
360
|
| [📖 Frameworks](./docs/frameworks.md) | Next.js, Express, React, LangChain |
|
|
301
361
|
| [📖 CLI](./docs/cli.md) | All CLI commands and options |
|
|
302
362
|
| [📖 MCP Server](./docs/mcp.md) | MCP server for Claude Desktop & Cursor |
|