EEMS memory_store fails on junkpile — fastembed not compiled #12

Open
opened 2026-06-12 10:11:36 +00:00 by madcat · 1 comment
Owner

Calling memory_store on junkpile returns:

embedding: fastembed feature not compiled — enable 'fastembed' or switch to ollama/openai provider

The EEMS MCP server on junkpile was built without the fastembed feature flag, so semantic embeddings can't be generated and no memories can be stored. memory_recall is also likely broken.

Fix: rebuild madcat-memory on junkpile with the fastembed feature enabled, or configure it to use ollama/openai as the embedding provider.

Calling memory_store on junkpile returns: ``` embedding: fastembed feature not compiled — enable 'fastembed' or switch to ollama/openai provider ``` The EEMS MCP server on junkpile was built without the fastembed feature flag, so semantic embeddings can't be generated and no memories can be stored. memory_recall is also likely broken. Fix: rebuild madcat-memory on junkpile with the fastembed feature enabled, or configure it to use ollama/openai as the embedding provider.
Author
Owner

Investigation: fastembed feature not compiled on junkpile

Root Cause

The [embedding] section in ~/.config/madcat/config.toml on junkpile is missing the provider key:

[embedding]
url = "http://sin:8003"
model = "bge-m3"

Without provider = "...", EmbeddingConfig::load() (in crates/madcat-memory/src/config.rs:223-228) falls through to EmbedProviderKind::default()Fastembed.

However, the NAPI binding (bindings/napi/Cargo.toml:11) is built with:

madcat-memory = { workspace = true, default-features = false, features = ["ollama", "postgres"] }

fastembed is intentionally excluded from the NAPI build (it pulls in ONNX runtime / ~200MB). The binary does have ollama and postgres compiled in. So when create_provider() tries to instantiate FastEmbed, it hits the #[cfg(not(feature = "fastembed"))] branch and returns the error.

Current State

Component Status
NAPI binary madcat-memory.linux-x64-gnu.node — built with features ollama, postgres (no fastembed)
Config provider Missing — defaults to fastembed → error
Ollama on junkpile Running, has bge-m3:567m (1024d embedding model) — confirmed working
Ollama on junkpile Also has nomic-embed-text (768d)
vLLM on sin:8003 Not reachable (the config points here but the service is down)
Postgres EEMS Running on localhost:5432, database eems, two active connections
Plugin version Installed: 0.7.1, registry: 0.7.2

Fix Options

Option A — Config fix (recommended, zero-code):
Add provider = "ollama" to ~/.config/madcat/config.toml on junkpile and point to local Ollama:

[embedding]
provider = "ollama"
url = "http://localhost:11434"
model = "bge-m3:567m"
# dimensions = 1024  # default

This uses junkpile's own Ollama with the already-pulled bge-m3:567m model. No code changes, no rebuild needed.

Option B — Config fix pointing to sin (if vLLM comes back):

[embedding]
provider = "openai"
url = "http://sin:8003"
model = "bge-m3"

Uses OpenAI-compat endpoint (vLLM). Requires sin's vLLM service to be running. Currently down.

Option C — Code change (defense-in-depth):
In EmbeddingConfig::load(), if provider is not set but url is present, auto-select ollama or openai instead of defaulting to fastembed. This would prevent this class of misconfiguration.

## Investigation: `fastembed feature not compiled` on junkpile ### Root Cause The `[embedding]` section in `~/.config/madcat/config.toml` on junkpile is **missing the `provider` key**: ```toml [embedding] url = "http://sin:8003" model = "bge-m3" ``` Without `provider = "..."`, `EmbeddingConfig::load()` (in `crates/madcat-memory/src/config.rs:223-228`) falls through to `EmbedProviderKind::default()` → **Fastembed**. However, the NAPI binding (`bindings/napi/Cargo.toml:11`) is built with: ```toml madcat-memory = { workspace = true, default-features = false, features = ["ollama", "postgres"] } ``` **`fastembed` is intentionally excluded** from the NAPI build (it pulls in ONNX runtime / ~200MB). The binary **does** have `ollama` and `postgres` compiled in. So when `create_provider()` tries to instantiate FastEmbed, it hits the `#[cfg(not(feature = "fastembed"))]` branch and returns the error. ### Current State | Component | Status | |---|---| | **NAPI binary** | `madcat-memory.linux-x64-gnu.node` — built with features `ollama`, `postgres` (no `fastembed`) | | **Config provider** | Missing — defaults to `fastembed` → error | | **Ollama on junkpile** | Running, has `bge-m3:567m` (1024d embedding model) — **confirmed working** | | **Ollama on junkpile** | Also has `nomic-embed-text` (768d) | | **vLLM on sin:8003** | **Not reachable** (the config points here but the service is down) | | **Postgres EEMS** | Running on localhost:5432, database `eems`, two active connections | | **Plugin version** | Installed: 0.7.1, registry: 0.7.2 | ### Fix Options **Option A — Config fix (recommended, zero-code):** Add `provider = "ollama"` to `~/.config/madcat/config.toml` on junkpile and point to local Ollama: ```toml [embedding] provider = "ollama" url = "http://localhost:11434" model = "bge-m3:567m" # dimensions = 1024 # default ``` This uses junkpile's own Ollama with the already-pulled `bge-m3:567m` model. No code changes, no rebuild needed. **Option B — Config fix pointing to sin (if vLLM comes back):** ```toml [embedding] provider = "openai" url = "http://sin:8003" model = "bge-m3" ``` Uses OpenAI-compat endpoint (vLLM). Requires sin's vLLM service to be running. Currently down. **Option C — Code change (defense-in-depth):** In `EmbeddingConfig::load()`, if `provider` is not set but `url` is present, auto-select `ollama` or `openai` instead of defaulting to `fastembed`. This would prevent this class of misconfiguration.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: infra/issues#12