Skip to main content

Documentation Index

Fetch the complete documentation index at: https://runcrate.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

The @runcrate/ai package is a Runcrate provider for the Vercel AI SDK. Use it to build AI-powered applications with generateText, streamText, generateImage, structured output, and tool calling — all backed by Runcrate’s 140+ open-source models.

Installation

npm install @runcrate/ai ai
Requires ai v6+ and Node.js 18+.

Quick Start

import { runcrate } from '@runcrate/ai';
import { generateText } from 'ai';

const { text } = await generateText({
  model: runcrate('deepseek-ai/DeepSeek-V3'),
  prompt: 'Explain quantum computing in simple terms.',
});

console.log(text);
Set the RUNCRATE_API_KEY environment variable, or pass apiKey directly when creating the provider.

Configuration

import { createRuncrate } from '@runcrate/ai';

const runcrate = createRuncrate({
  apiKey: 'rc_live_...',                       // or RUNCRATE_API_KEY env var
  baseURL: 'https://api.runcrate.ai/v1',      // default
  headers: { 'X-Custom-Header': 'value' },    // optional
});
A default instance is also exported for convenience:
import { runcrate } from '@runcrate/ai';
// Uses RUNCRATE_API_KEY env var automatically

Text Generation

Basic

import { runcrate } from '@runcrate/ai';
import { generateText } from 'ai';

const { text } = await generateText({
  model: runcrate('deepseek-ai/DeepSeek-V3'),
  prompt: 'What is the capital of France?',
});

Streaming

import { runcrate } from '@runcrate/ai';
import { streamText } from 'ai';

const result = streamText({
  model: runcrate('deepseek-ai/DeepSeek-V3'),
  prompt: 'Write a short story about a robot.',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

Chat Messages

const { text } = await generateText({
  model: runcrate('meta-llama/Llama-4-Scout'),
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'What is the capital of France?' },
  ],
});

Structured Output

import { runcrate } from '@runcrate/ai';
import { generateText, Output } from 'ai';
import { z } from 'zod';

const { output } = await generateText({
  model: runcrate('deepseek-ai/DeepSeek-V3'),
  output: Output.object({
    schema: z.object({
      name: z.string(),
      ingredients: z.array(z.string()),
      steps: z.array(z.string()),
    }),
  }),
  prompt: 'Generate a recipe for chocolate chip cookies.',
});

Image Generation

import { runcrate } from '@runcrate/ai';
import { generateImage } from 'ai';

const { image } = await generateImage({
  model: runcrate.imageModel('black-forest-labs/FLUX.1-schnell'),
  prompt: 'A futuristic cityscape at sunset',
  size: '1024x768',
});

console.log(image.base64);

Embeddings

import { runcrate } from '@runcrate/ai';
import { embed } from 'ai';

const { embedding } = await embed({
  model: runcrate.embeddingModel('BAAI/bge-large-en-v1.5'),
  value: 'The quick brown fox jumps over the lazy dog',
});

Model Methods

MethodReturnsDescription
runcrate(modelId)LanguageModelChat model (shorthand for chatModel)
runcrate.chatModel(modelId)LanguageModelChat model for generateText, streamText
runcrate.completionModel(modelId)LanguageModelCompletion model
runcrate.imageModel(modelId)ImageModelImage generation model for generateImage
runcrate.embeddingModel(modelId)EmbeddingModelEmbedding model for embed, embedMany

When to Use Which SDK

SDKBest For
@runcrate/aiNext.js/React apps using the Vercel AI SDK — useChat, streamText, generateImage
@runcrate/sdkFull platform access — instances, storage, billing, and inference in one client
OpenAI SDKDrop-in compatibility — just change the base URL