Context
During the 2026-06-25 Agent OS stability repair, LM Studio emitted repeated embedding warnings while the Memory Core repair-defrag dry run was re-embedding through the local OpenAI-compatible embedding lane:
[WARNING] At least one last token in strings embedded is not SEP. 'tokenizer.ggml.add_eos_token' should be set to 'true' in the GGUF header
The operator called this out as noisy enough to warrant a cleanup ticket. The current repair lane is #13999; this ticket captures the narrower request-shape/model-header warning so it does not disappear inside the backup-repair incident.
Release classification: boardless operational hardening; not proven release-blocking unless investigation shows vectors are malformed or truncated.
Live latest-open sweep: checked latest 20 open issues at 2026-06-25T14:31:08Z; no equivalent SEP/EOS/LM Studio embedding warning ticket found.
A2A in-flight sweep: checked latest 30 all-status messages at 2026-06-25T14:31:08Z; no competing [lane-claim] or [lane-intent] for this warning cleanup found.
Semantic/exact sweep: ask_knowledge_base found no existing ticket/discussion specifically about this warning; rg -i "add_eos_token|last token|not SEP|SEP token|tokenizer.ggml|eos_token" resources/content/issues resources/content/discussions ai test learn .agents found no equivalent ticket or code path.
The Problem
The warning is generated by the local embedding provider while Neo sends embedding strings through the OpenAI-compatible /v1/embeddings path. It may be harmless GGUF metadata noise, or it may indicate Neo is sending embedding inputs without the provider's expected terminal token. Either way, repeated warnings during bulk repair/sync make the Agent OS stability lane harder to inspect and can hide more serious provider failures.
The ticket should not assume that appending a separator is automatically correct. The implementation must first determine whether the root cause is:
- Neo request-shape behavior for
input strings.
- LM Studio/GGUF model metadata (
tokenizer.ggml.add_eos_token).
- A provider-specific warning that should be documented or readiness-checked rather than transformed away.
The Architectural Reality
The shared deployment docs state that the OpenAI-compatible embedding path is currently implemented in ai/services/memory-core/TextEmbeddingService.mjs#embedText[s], posting {model, input} to ${host}/v1/embeddings rather than routing through the chat OpenAiCompatible provider class (learn/agentos/SharedDeployment.md, embedding-provider section).
Current code confirms that TextEmbeddingService writes the request body directly as JSON.stringify({ model: embeddingModel, input: inputData }) in #postOpenAiCompatible (ai/services/memory-core/TextEmbeddingService.mjs). That makes this ticket a provider-boundary cleanup, not a Memory Core storage or Chroma defrag task.
The Fix
Investigate and harden the OpenAI-compatible embedding request boundary so LM Studio does not spam SEP-token warnings during Memory Core / Knowledge Base bulk embedding work.
Candidate outcomes, in priority order:
- If Neo is omitting a required request-level/input-level terminal marker, normalize embedding input at the provider request boundary without mutating stored documents or Memory Core records.
- If LM Studio exposes a request option or model-load flag that controls EOS/SEP behavior, document and/or readiness-check the supported setting.
- If the warning is purely a GGUF artifact outside Neo's control, add a focused operator-facing note so future repair runs distinguish it from vector corruption or context truncation.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
TextEmbeddingService OpenAI-compatible embedding request body |
ai/services/memory-core/TextEmbeddingService.mjs |
Embedding inputs sent to LM Studio should not trigger repeated missing-SEP warnings when the configured provider/model can be made compliant by Neo request shaping. |
If the provider/model owns the warning, emit/document an actionable readiness hint instead of altering input text. |
Update learn/agentos/SharedDeployment.md or the nearest local-provider deployment doc if operator action is required. |
Focused unit coverage for request shaping or readiness warning; manual LM Studio smoke evidence when practical. |
Decision Record impact
None for filing. If implementation introduces or mutates aiConfig leaves, ADR-0019 must be activated before code changes and the PR must cite the AiConfig Provider SSOT boundary.
Acceptance Criteria
Out of Scope
- Running or promoting Memory Core defrag/backup repair; that remains under #13999.
- Reopening #14003 or #14008.
- Swapping the team's embedding model without operator approval.
- Changing vector dimensions or Chroma collection schemas.
Avoided Traps
- Do not blindly append printable text to documents before embedding; that would change the semantic input and could perturb vectors.
- Do not bury the fix in ad-hoc environment defaults that bypass the AiConfig Provider SSOT.
- Do not treat provider warning cleanup as proof that backup exportability is repaired.
Related
- #13999
- #14008
- Runtime observation: LM Studio warning at 2026-06-25 16:23:33 local time during Memory Core repair-defrag dry run.
Handoff Retrieval Hints: query_raw_memories("LM Studio SEP token add_eos_token embedding warnings TextEmbeddingService"); query_raw_memories("Memory Core repair defrag LM Studio embedding warning"); exact search add_eos_token|not SEP|tokenizer.ggml.
Context
During the 2026-06-25 Agent OS stability repair, LM Studio emitted repeated embedding warnings while the Memory Core repair-defrag dry run was re-embedding through the local OpenAI-compatible embedding lane:
The operator called this out as noisy enough to warrant a cleanup ticket. The current repair lane is #13999; this ticket captures the narrower request-shape/model-header warning so it does not disappear inside the backup-repair incident.
Release classification: boardless operational hardening; not proven release-blocking unless investigation shows vectors are malformed or truncated.
Live latest-open sweep: checked latest 20 open issues at 2026-06-25T14:31:08Z; no equivalent SEP/EOS/LM Studio embedding warning ticket found. A2A in-flight sweep: checked latest 30 all-status messages at 2026-06-25T14:31:08Z; no competing
[lane-claim]or[lane-intent]for this warning cleanup found. Semantic/exact sweep:ask_knowledge_basefound no existing ticket/discussion specifically about this warning;rg -i "add_eos_token|last token|not SEP|SEP token|tokenizer.ggml|eos_token" resources/content/issues resources/content/discussions ai test learn .agentsfound no equivalent ticket or code path.The Problem
The warning is generated by the local embedding provider while Neo sends embedding strings through the OpenAI-compatible
/v1/embeddingspath. It may be harmless GGUF metadata noise, or it may indicate Neo is sending embedding inputs without the provider's expected terminal token. Either way, repeated warnings during bulk repair/sync make the Agent OS stability lane harder to inspect and can hide more serious provider failures.The ticket should not assume that appending a separator is automatically correct. The implementation must first determine whether the root cause is:
inputstrings.tokenizer.ggml.add_eos_token).The Architectural Reality
The shared deployment docs state that the OpenAI-compatible embedding path is currently implemented in
ai/services/memory-core/TextEmbeddingService.mjs#embedText[s], posting{model, input}to${host}/v1/embeddingsrather than routing through the chatOpenAiCompatibleprovider class (learn/agentos/SharedDeployment.md, embedding-provider section).Current code confirms that
TextEmbeddingServicewrites the request body directly asJSON.stringify({ model: embeddingModel, input: inputData })in#postOpenAiCompatible(ai/services/memory-core/TextEmbeddingService.mjs). That makes this ticket a provider-boundary cleanup, not a Memory Core storage or Chroma defrag task.The Fix
Investigate and harden the OpenAI-compatible embedding request boundary so LM Studio does not spam SEP-token warnings during Memory Core / Knowledge Base bulk embedding work.
Candidate outcomes, in priority order:
Contract Ledger Matrix
TextEmbeddingServiceOpenAI-compatible embedding request bodyai/services/memory-core/TextEmbeddingService.mjslearn/agentos/SharedDeployment.mdor the nearest local-provider deployment doc if operator action is required.Decision Record impact
None for filing. If implementation introduces or mutates
aiConfigleaves, ADR-0019 must be activated before code changes and the PR must cite the AiConfig Provider SSOT boundary.Acceptance Criteria
build-allor generic Playwright invocation.Out of Scope
Avoided Traps
Related
Handoff Retrieval Hints:
query_raw_memories("LM Studio SEP token add_eos_token embedding warnings TextEmbeddingService");query_raw_memories("Memory Core repair defrag LM Studio embedding warning"); exact searchadd_eos_token|not SEP|tokenizer.ggml.