LocalMode
Core

Overview

Zero-dependency core package with all LocalMode functionality.

@localmode/core

The core package contains all functions, interfaces, types, and utilities for building local-first AI applications. It has zero external dependencies — everything is implemented using native browser APIs.

Zero Dependencies

@localmode/core has no dependencies in its package.json. All functionality uses native Web APIs: IndexedDB, Web Crypto, Web Workers, BroadcastChannel, and more.

Installation

bash pnpm install @localmode/core
bash npm install @localmode/core
bash yarn add @localmode/core

Quick Start

Install Dependencies

pnpm install @localmode/core @localmode/transformers

Create an Embedding Model

import { transformers } from '@localmode/transformers';

const model = transformers.embedding('Xenova/all-MiniLM-L6-v2');

Generate Embeddings

import { embed } from '@localmode/core';

const { embedding, usage } = await embed({
  model,
  value: 'Hello, world!',
});
import { createVectorDB } from '@localmode/core';

const db = await createVectorDB({ name: 'docs', dimensions: 384 });

await db.add({ id: 'doc-1', vector: embedding, metadata: { text: 'Hello' } });

const results = await db.search(queryVector, { k: 5 });

Features

✅ Production Ready

These features are stable and ready for production use:

FeatureDescription
Vector DatabaseHNSW index for fast approximate nearest neighbor search
Embeddingsembed(), embedMany(), semanticSearch() functions
Rerankingrerank() for improved RAG accuracy
RAG UtilitiesText chunking (recursive, markdown, code-aware)
Text GenerationstreamText() with async iteration
StorageIndexedDB persistence with memory fallback
CapabilitiesWebGPU, IndexedDB, Workers detection
SecurityEncryption, PII redaction
MiddlewareCaching, logging, retry, validation

🚧 Coming Soon

FeatureDescription
Classificationclassify(), classifyZeroShot()
NERextractEntities()
Audiotranscribe(), synthesizeSpeech()
VisionImage classification, captioning, segmentation
Translationtranslate()
Summarizationsummarize()
OCRextractText()
Document QAaskDocument(), askTable()

Architecture

LocalMode follows a function-first API design:

// ✅ Top-level functions (correct)
const { embedding } = await embed({ model, value: 'Hello' });

// ❌ Class methods (wrong)
const embedder = new Embedder(model);
await embedder.embed('Hello');

All functions accept a single options object and return structured results:

interface EmbedResult {
  embedding: Float32Array;
  usage: { tokens: number };
  response: { modelId: string; timestamp: Date };
}

Quick Reference

Core Exports

Embeddings

import {
  embed,
  embedMany,
  streamEmbedMany,
  semanticSearch,
  wrapEmbeddingModel,
} from '@localmode/core';

Vector Database

import {
  createVectorDB,
  createVectorDBWithWorker,
  HNSWIndex,
  cosineSimilarity,
  euclideanDistance,
  dotProduct,
} from '@localmode/core';

RAG Utilities

import {
  chunk,
  recursiveChunk,
  markdownChunk,
  codeChunk,
  ingest,
  createBM25,
  hybridFuse,
  reciprocalRankFusion,
} from '@localmode/core';

Text Generation

import { streamText, generateText } from '@localmode/core';

Classification

import {
  classify,
  classifyMany,
  classifyZeroShot,
  extractEntities,
  extractEntitiesMany,
  rerank,
} from '@localmode/core';

Storage

import {
  IndexedDBStorage,
  MemoryStorage,
  createStorage,
  getStorageQuota,
  requestPersistence,
  cleanup,
} from '@localmode/core';

Capabilities

import {
  detectCapabilities,
  isWebGPUSupported,
  isIndexedDBSupported,
  checkModelSupport,
  getRecommendedFallbacks,
} from '@localmode/core';

Middleware

import {
  wrapEmbeddingModel,
  wrapVectorDB,
  cachingMiddleware,
  loggingMiddleware,
  retryMiddleware,
  rateLimitMiddleware,
  validationMiddleware,
  piiRedactionMiddleware,
  encryptionMiddleware,
} from '@localmode/core';

Security

import { encrypt, decrypt, deriveKey, isCryptoSupported, redactPII } from '@localmode/core';

Cross-Tab Sync

import { createBroadcaster, createLockManager, isWebLocksSupported } from '@localmode/core';

Network

import {
  getNetworkStatus,
  onNetworkChange,
  isOnline,
  isOffline,
  waitForOnline,
} from '@localmode/core';

Events

import { createEventEmitter, globalEventBus } from '@localmode/core';

Errors

import {
  LocalModeError,
  EmbeddingError,
  ModelNotFoundError,
  StorageError,
  QuotaExceededError,
  ValidationError,
  formatErrorForUser,
} from '@localmode/core';

Testing Utilities

import {
  createMockEmbeddingModel,
  createMockStorage,
  createMockVectorDB,
  createTestVector,
  createSeededRandom,
} from '@localmode/core';

Type Definitions

All interfaces are exported for implementing custom providers:

import type {
  // Models
  EmbeddingModel,
  ClassificationModel,
  ZeroShotClassificationModel,
  NERModel,
  RerankerModel,
  LanguageModel,
  SpeechToTextModel,
  TextToSpeechModel,
  ImageClassificationModel,
  ImageCaptionModel,
  SegmentationModel,
  ObjectDetectionModel,
  TranslationModel,
  SummarizationModel,
  FillMaskModel,
  QuestionAnsweringModel,
  OCRModel,
  DocumentQAModel,

  // Storage
  Storage,
  StoredDocument,

  // Vector DB
  VectorDB,
  VectorDBConfig,
  SearchResult,

  // Middleware
  EmbeddingModelMiddleware,
  VectorDBMiddleware,
} from '@localmode/core';

Next Steps

On this page