LearnNewsExamplesServices
Frontmatter
id10150
titleMailbox: optional Chroma semantic layer for "find related messages"
stateOpen
labels
enhancementaiarchitecture
assignees[]
createdAtApr 21, 2026, 11:30 AM
updatedAt3:22 PM
githubUrlhttps://github.com/neomjs/neo/issues/10150
authortobiu
commentsCount1
parentIssue10139
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

Mailbox: optional Chroma semantic layer for "find related messages"

Open Backlog/active-chunk-1 enhancementaiarchitecture
tobiu
tobiu commented on Apr 21, 2026, 11:30 AM

Mailbox: optional Chroma semantic layer for "find related messages"

Context

Parent #10139 phase 4 (optional). SQLite FTS5 + concept edges cover ~90% of mailbox search. This ticket adds a Chroma neo-mailbox collection for semantic body search as specialized query layer. Phase-gated: ship after phases 1-3 deliver value, only if friction surfaces.

The Problem

Some use cases benefit from semantic retrieval over messages: "find prior handoffs where I discussed mailbox design" without exact keywords, or "find replies to messages similar in intent to X." Graph concept edges cover part, FTS5 another part, but semantic-over-body fills the remaining gap.

The Architectural Reality

  • Chroma already runs for Memory Core. Adding a neo-mailbox collection is infrastructure-zero.
  • Messages are lower cardinality than memories (10s-100s/month vs thousands) — embedding cost bounded.
  • Primary lookup stays graph-primary; Chroma is sidecar for semantic-over-body.

The Fix

  • New Chroma collection neo-mailbox; embedding pipeline identical to existing memory pipeline
  • Tool findRelatedMessages({query, limit, filters}) — top-k with tenant scope at result-filter layer
  • Sync: messages embed on addMessage; retractions clear embedding
  • NOT a primary lookup path

Acceptance Criteria

  • Chroma neo-mailbox collection provisioned
  • Embedding hook in addMessage
  • findRelatedMessages tool; tenant-scoped results
  • Tool description differentiates: "semantic similarity" vs listMessages "filter + sort"
  • Retraction clears embedding

Out of Scope

  • Replacing graph-primary access paths with Chroma (category separation must hold)
  • Cross-tenant semantic search (tenant-scoped, same as memories)

Avoided Traps

  • Chroma as primary lookup. Rejected. Relationships dominate mailbox access; semantic is auxiliary. Chroma-primary would tank hot paths.

Related

  • Parent: #10139
  • Depends on: Message schema sub; phases 1-3 should ship first to observe if friction is real
  • Files: ai/mcp/server/memory-core/ semantic handler (new), Chroma schema migration

Origin Session ID: 71dc3cd8-d39d-48e1-ac62-e240ca67d1a5

tobiu added the enhancement label on Apr 21, 2026, 11:30 AM
tobiu added the ai label on Apr 21, 2026, 11:30 AM
tobiu added the architecture label on Apr 21, 2026, 11:30 AM
tobiu added parent issue #10139 on Apr 21, 2026, 11:32 AM
tobiu marked this issue as being blocked by #10147 on Apr 21, 2026, 11:33 AM
tobiu cross-referenced by #9999 on Apr 21, 2026, 7:03 PM
tobiu cross-referenced by #10139 on Apr 21, 2026, 10:27 PM
tobiu cross-referenced by #10147 on Apr 21, 2026, 10:30 PM
tobiu cross-referenced by PR #10167 on Apr 21, 2026, 11:06 PM