Skip to content

feat: supermemory-local provider (self-hosted supermemory-server)#20

Merged
groksrc merged 1 commit into
mainfrom
feat/supermemory-provider
Jun 12, 2026
Merged

feat: supermemory-local provider (self-hosted supermemory-server)#20
groksrc merged 1 commit into
mainfrom
feat/supermemory-provider

Conversation

@groksrc

@groksrc groksrc commented Jun 12, 2026

Copy link
Copy Markdown
Member

Summary

Adds supermemory-local as a competitor provider, targeting the self-hosted supermemory-server binary (Memory API on localhost:6767, pinned v0.0.2).

Design

  • Operator-managed server: provider connects via SUPERMEMORY_BASE_URL + SUPERMEMORY_API_KEY; skips cleanly (recorded reason) when unconfigured or unreachable.
  • Async ingestion handled correctly: the server pipeline is queued → extracting → chunking → embedding → done|failed. The provider polls every document to a terminal state before returning — searching earlier silently misses content. Poll 404s = failure (server reaps failed docs after ~2 min). Any failed document fails the run loudly instead of silently scoring partial ingestion.
  • Run-scoped container tags (bm-bench-<run_id>) — grouped (LongMemEval) runs get per-group isolation for free; cleanup bulk-deletes the container.
  • Injectable httpx transport — tests run against a full fake v3 server (add/poll/search/bulk-delete) via MockTransport.
  • README documents the fairness-relevant server-side setup: fresh SUPERMEMORY_DATA_DIR per run (upstream #1103: upgraded stores return empty searches) and LLM via OPENAI_BASE_URL.

Status

API contract follows the official self-hosting docs + release assets. Empirical validation against the real binary is pending — installing third-party binaries needs operator authorization (install one-liner already provided in-session). Known upstream risk for our Ollama config: issue #1096 (their extraction pipeline speaks the Responses API, which Ollama rejects); if confirmed locally, the documented shim-proxy workaround is the next change.

Verification

  • 9 tests: poll-to-done, run scoping, failed-doc + 404 handling, ingest timeout, cleanup, both skip paths, factory registration.
  • Full suite green (83 passed), lint clean.

🤖 Generated with Claude Code

Targets the supermemory-server local binary (Memory API on
localhost:6767, pin v0.0.2) as a head-to-head competitor provider.

- Auth via SUPERMEMORY_API_KEY (printed on server first boot); skipped
  cleanly when the key is missing or the server is unreachable.
- Ingestion is async server-side (queued -> extracting -> chunking ->
  embedding -> done|failed): the provider polls every document to a
  terminal state before returning, treats poll 404s as failures (the
  server reaps failed docs after ~2 min), and raises on any failed
  document — partial ingestion must fail the run loudly, not silently
  skew retrieval metrics.
- Run-scoped container tags (bm-bench-<run_id>) isolate groups in
  grouped mode for free; cleanup bulk-deletes the container.
- Search via POST /v3/search; hits normalized from documentId/chunks/
  metadata with our source_doc_id round-tripped through document
  metadata.
- Provider takes an injectable httpx transport: the test suite runs a
  full fake v3 server (add/poll/search/bulk-delete) via MockTransport.

9 tests cover poll-to-done, run scoping, failed-doc and 404 handling,
timeout, cleanup, skip paths, and factory registration. Empirical
validation against the real binary is pending operator authorization to
install it; the API contract follows the official self-hosting docs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Drew Cain <groksrc@gmail.com>
@groksrc groksrc merged commit b2c8547 into main Jun 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant