SillyTavern/SillyTavern · warning · Error

webllm-not-updated

webllm-not-updated

Error message

WebLLM is not updated

What it means

Thrown by #checkWebLlm when SillyTavern.llm exists but lacks a generateEmbedding function. WebLLM is present (older version) but predates the embedding API, so the embedding workflow cannot run even though text generation might work.

Source

Thrown at public/scripts/extensions/vectors/webllm.js:19

export class WebLlmVectorProvider {
    /** @type {object?} WebLLM engine */
    #engine = null;

    constructor() {
        this.#engine = null;
    }

    /**
     * Check if WebLLM is available and up-to-date
     * @throws {Error} If WebLLM is not available or not up-to-date
     */
    #checkWebLlm() {
        if (!Object.hasOwn(SillyTavern, 'llm')) {
            throw new Error('WebLLM is not available', { cause: 'webllm-not-available' });
        }

        if (typeof SillyTavern.llm.generateEmbedding !== 'function') {
            throw new Error('WebLLM is not updated', { cause: 'webllm-not-updated' });
        }
    }

    /**
     * Initialize the engine with a model.
     * @param {string} modelId Model ID to initialize the engine with
     * @returns {Promise<void>} Promise that resolves when the engine is initialized
     */
    #initEngine(modelId) {
        this.#checkWebLlm();
        if (!this.#engine) {
            this.#engine = SillyTavern.llm.getEngine();
        }

        return this.#engine.loadModel(modelId);
    }

    /**

View on GitHub (pinned to 8172dcd0ee)

Solutions

  1. Update both SillyTavern and its WebLLM integration to matching, current versions.
  2. Hard-reload (bypass cache) so a stale cached WebLLM script is replaced.
  3. Check the browser console for the loaded WebLLM version.
  4. Switch to a different vector source until the versions are aligned.

Example fix

null
Defensive patterns

Strategy: type-guard

Validate before calling

if (settings.source === 'webllm'
  && !(Object.hasOwn(SillyTavern, 'llm') && typeof SillyTavern.llm.generateEmbedding === 'function')) {
  // block: WebLLM present but too old for embeddings
}

Type guard

const webLlmEmbedsReady = () =>
  Object.hasOwn(SillyTavern, 'llm') && typeof SillyTavern.llm?.generateEmbedding === 'function';

Try / catch

null

Prevention

When it happens

Trigger: A partially-updated install: the WebLLM runtime registered SillyTavern.llm, but the version does not yet expose generateEmbedding.

Common situations: Updated the host but not the WebLLM extension, or vice versa; cached old WebLLM script served by the browser; mismatched extension/runtime versions.

Related errors


AI-assisted analysis of SillyTavern/SillyTavern@8172dcd0ee (2026-08-13). Data as JSON: /api/errors/c42c9b8f8fa603fd. Report an issue: GitHub.