ai-sdk-llama-cpp weekly downloads statistics
A minimal llama.cpp provider for the Vercel AI SDK implementing LanguageModelV3 and EmbeddingModelV3
ai-sdk-llama-cpp has 143 recorded weekly downloads on npm, a decrease of 85.9% over the past 30 days, ranking #1701 of 2,322 tracked listings.
About ai-sdk-llama-cpp
ai-sdk-llama-cpp
Alpha Software - This package is in early development. The API may change between versions without notice.
macOS Only - This package currently only supports macOS with Apple Silicon or Intel processors.
A minimal llama.cpp provider for the Vercel AI SDK, implementing the LanguageModelV3 interface.
This package loads llama.cpp directly into Node.js memory via native C++ bindings, enabling local LLM inference without requiring an external server.
Features
- Native Performance: Direct C++ bindings using node-addon-api (N-API)
- GPU Acceleration: Automatic Metal support on macOS
- Streaming & Non-streaming: Full support for both
generateTextandstreamText - Structured Output: Generate JSON objects with schema validation using
generateObject - Tool/Function Calling: Support for AI SDK tools with automatic tool call detection
- Chat Templates: Automatic or configurable chat template formatting (llama3, chatml, gemma, etc.)
- ESM Only: Modern ECMAScript modules, no CommonJS
- GGUF Support: Load any GGUF-format model
Prerequisites
Before installing, ensure you have the following:
- macOS (Apple Silicon or Intel)
- Node.js >= 18.0.0
- CMake >= 3.15
- Xcode Command Line Tools
# Install Xcode Command Line Tools (includes Clang)
xcode-select --install
# Install CMake via Homebrew
brew install cmake
Installation
npm install ai-sdk-llama-cpp
The installation will automatically:
- Detect macOS and verify platform compatibility
- Compile llama.cpp as a static library with Metal support
- Build the native Node.js addon
Note: Installation on Windows or Linux will fail with an error. Only macOS is supported.
Usage
Basic Example
import { generateText } from "ai";
import { llamaCpp } from "ai-sdk-llama-cpp";
const model = llamaCpp({
modelPath: "./models/llama-3.2-1b-instruct.Q4_K_M.gguf",
});
try {
const { text } = await generateText({
model,
prompt: "Explain quantum computing in simple terms.",
});
console.log(text);
} finally {
await model.dispose();
}
Streaming Example
import { streamText } from "ai";
import { llamaCpp } from "ai-sdk-llama-cpp";
const model = llamaCpp({
modelPath: "./models/llama-3.2-1b-instruct.Q4_K_M.gguf",
});
try {
const result = streamText({
model,
prompt: "Write a haiku about programming.",
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
} finally {
await model.dispose();
}
Structured Output
Generate type-safe JSON objects that conform to a schema using generateObject:
import { generateObject } from "ai";
import { z } from "zod";
import { llamaCpp } from "ai-sdk-llama-cpp";
const model = llamaCpp({
modelPath: "./models/your-model.gguf",
});
try {
const { object: recipe } = await generateObject({
model,
schema: z.object({
name: z.string(),
ingredients: z.array(
z.object({
name: z.string(),
amount: z.string(),
})
),
steps: z.array(z.string()),
}),
prompt: "Generate a recipe for chocolate chip cookies.",
});
// recipe is fully typed as { name: string, ingredients: {...}[], steps: string[] }
console.log(recipe.name);
console.log(recipe.ingredients);
console.log(recipe.steps);
} finally {
await model.dispose();
}
The structured output feature uses GBNF grammar constraints to ensure the model generates valid JSON that conforms to your schema. This works with:
- Primitive types:
string,number,integer,boolean,null - Objects: With
properties,required, andadditionalProperties - Arrays: With
items,minItems,maxItems - Enums and constants:
enum,const - Composition:
oneOf,anyOf,allOf - String constraints:
minLength,maxLength,pattern - Number constraints:
minimum,maximum(for integers) - String formats:
date,time,date-time,uuid - References: Local
$refto$defs/definitions
Tool Calling Example
Use AI SDK tools with local models. The model decides when to call tools based on the conversation context:
import { generateText, stepCountIs, tool } from "ai";
import { z } from "zod";
import { llamaCpp } from "ai-sdk-llama-cpp";
const model = llamaCpp({
modelPath: "./models/your-model.gguf",
});
try {
const result = await generateText({
model,
prompt: "What's the weather in Tokyo?",
tools: {
weather: tool({
description: "Get the current weather for a location",
parameters: z.object({
location: z.string().describe("The location to get weather for"),
}),
execute: async ({ location }) => ({
location,
temperature: 72,
}),
}),
},
stopWhen: stepCountIs(3), // Limit steps to prevent infinite loops
});
console.log(result.text);
} finally {
await model.dispose();
}
Tool calling also works with streamText. When tools are provided, the provider automatically detects tool call JSON output and emits proper tool-call events instead of streaming raw JSON as text.
Note: Tool calling quality depends heavily on the model. Models fine-tuned for function calling (e.g., Llama 3.1+, Hermes 2/3, Functionary, Qwen 2.5) work best. Generic models may produce inconsistent results.
Embedding Example
import { embed, embedMany } from "ai";
import { llamaCpp } from "ai-sdk-llama-cpp";
const model = llamaCpp.embedding({
modelPath: "./models/nomic-embed-text-v1.5.Q4_K_M.gguf",
});
try {
const { embedding } = await embed({
model,
value: "Hello, world!",
});…
Description from the npm listing.
- ai
- llama
- llama.cpp
- vercel
- ai-sdk
- language-model
- gguf
README badge
Show your rank in a README or on your website. The badge updates automatically.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Ranking history
Listing placement
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (122)Similar npm AI SDKs plugins
All 20 ai-sdk-llama-cpp alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/ai-sdk-llama-cpp. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.