WOLBΛRG

Limitations

Honest boundaries of Wolbarg 0.6 — peers, PDF quality, SQLite, Postgres SSL/pool, fail-closed hybrid/rerank, and removed graph memory.

Maturity

Core remember / recall (semantic + hybrid + metadata filters) on SQLite and PostgreSQL is the most battle-tested path. Document ingest, OCR/vision, and LLM compression are supported but depend on optional packages and external services where noted.

Experimental (may change before 1.0): rememberFromMessages() (especially mode: "extract") and subscribe(). Pin your wolbarg version if you depend on these shapes. Extract-mode quality is owned by your LLM.

For Vercel AI apps, prefer the stable middleware path in @wolbarg/vercel-ai (AI SDK v7+) rather than hand-rolling recall/remember around generateText. Mid-stream cancel before the model finish event does not remember incomplete turns.

Ingest dependencies

npm install pdf-parse@1.1.4   # PDF
npm install mammoth           # DOCX
npm install tesseract.js      # OCR
npm install pg                # PostgreSQL storage
  • .txt / .md / .csv / .json — built-in
  • .pdfpdf-parse required; text-layer only unless OCR/vision on images
  • .docxmammoth required
  • images — configure ocr and/or vision

See Installation.

PDF extraction

  • Scan / camera PDFs with no text layer yield empty extract
  • Prefer simple text PDFs or pin pdf-parse@1.1.4

SQLite

  • Uses Node node:sqlite — Node 22.5+
  • Hybrid BM25 uses FTS5 when available
  • subscribe() on SQLite is in-process only (same Node process)
  • Export / checkpoint / import / rollback are whole-file and refuse multi-org files — prefer one file per organization
  • Under extreme lock contention, callers must handle StorageLockedError — see Concurrency

PostgreSQL

  • Requires pg
  • pgvector optional; otherwise BYTEA + in-process cosine
  • Remote hosts default to sslmode=require when unset; loopback is unchanged
  • Default pool maxPoolSize is 20
  • Optional schema namespacing for tables, indexes, and NOTIFY channels
  • Checkpoint / export / import require file-backed SQLite, not Postgres

See Production.

Hybrid search and rerank (fail-closed)

Since 0.6.0, there is no silent degradation:

FlagMissing providerProvider failure
hybrid: trueValidationErrorthrows (no semantic-only fallback)
rerank: trueValidationErrorRerankError from built-in adapters

Configure keywordSearch: bm25() (or a custom provider) before enabling hybrid. Catch RerankError explicitly — there is no identity-order fallback.

Graph memory

Removed in 0.6.0. sqliteGraph, neo4jGraph, linkMemories, getRelated, and includeGraph are gone from core. There is no neo4j-driver peer. Model relationships with metadata filters or an external store. See Graph memory (removed) and Migration.

Telemetry

  • Telemetry database is SQLite only today (Postgres is typed but not implemented)
  • captureQueries defaults to false (privacy)

See Observability.

Embedding cache

  • On Postgres, durable cache defaults off (L1-only) unless configured otherwise — Embedding cache

Optional providers

  • compress() needs llm — otherwise ProviderNotConfiguredError
  • hybrid: true / rerank: true require their providers — see fail-closed table above

Out of scope

  • No hosted cloud control plane
  • No built-in agent framework / chat UI
  • No application authentication / authorization (organization is a namespace, not IAM)
  • No graph memory APIs (removed in 0.6.0)
  • No multi-process SQLite subscribe()
  • No Postgres telemetry store
  • No general memory TTL or cost-accounting APIs yet