title: Support FTS-only memory indexing (skip embedding provider)
labels: enhancement
Problem
Currently, memory indexing requires an embedding provider to be configured. If the embedding provider is unavailable or not configured, the entire memory indexing pipeline fails with:
"error": "memory embeddings query timed out after 300s"
This means users who don't want to use semantic search (or don't have access to an embedding API) cannot use the memory system at all.
Current Behavior
The memory database already has FTS5 tables (chunks_fts) for full-text search, but they remain empty because the indexing pipeline requires embeddings before storing chunks:
chunks: 0 rows
chunks_fts: 0 rows
files: 0 rows
Proposed Solution
Add a configuration option to skip embedding generation and use FTS-only indexing:
memory:
skipEmbedding: true
When enabled:
- Still chunk and index files into SQLite
- Skip embedding generation entirely
- Use SQLite FTS5 for text search instead of vector similarity
memory_search would fallback to FTS when no embeddings exist
Benefits
- Works without external API dependencies
- Faster indexing (no network calls)
- Lower cost (no embedding API usage)
- Still useful for keyword/concept search in memory files
Alternative
Allow memory_search to gracefully fall back to FTS when:
disabled: true (embedding provider not configured)
- Query times out
This would make the system more resilient and usable in more scenarios.
Related code paths:
memory_search tool
- Memory indexing in Gateway
- SQLite schema at
~/.openclaw/memory/main.sqlite
title: Support FTS-only memory indexing (skip embedding provider)
labels: enhancement
Problem
Currently, memory indexing requires an embedding provider to be configured. If the embedding provider is unavailable or not configured, the entire memory indexing pipeline fails with:
This means users who don't want to use semantic search (or don't have access to an embedding API) cannot use the memory system at all.
Current Behavior
The memory database already has FTS5 tables (
chunks_fts) for full-text search, but they remain empty because the indexing pipeline requires embeddings before storing chunks:Proposed Solution
Add a configuration option to skip embedding generation and use FTS-only indexing:
When enabled:
memory_searchwould fallback to FTS when no embeddings existBenefits
Alternative
Allow
memory_searchto gracefully fall back to FTS when:disabled: true(embedding provider not configured)This would make the system more resilient and usable in more scenarios.
Related code paths:
memory_searchtool~/.openclaw/memory/main.sqlite