Skip to content

fix(memory): resolve the custom embedding endpoint in the memory host - #6985

Closed
bodharma wants to merge 1 commit into
tinyhumansai:mainfrom
bodharma:fix/memory-host-custom-embedding-endpoint
Closed

bodharma wants to merge 1 commit into
tinyhumansai:mainfrom
bodharma:fix/memory-host-custom-embedding-endpoint

Conversation

@bodharma

@bodharma bodharma commented Oct 3, 2026 •

Copy link
Copy Markdown

Summary

  • The memory host now finds the endpoint for the module's "custom" embedding provider in memory.embedding_provider (custom:<url>), the same place embedding_host::rpc::embed already reads it from.
  • Before this, a custom OpenAI-compatible endpoint saved through Settings > Embeddings produced zero embeddings in module mode. Every seal and reembed_backfill failed with "custom embedding provider endpoint must not be empty".

Problem

  • EmbeddingCallbacks::embed in modules/memory_host.rs looked the endpoint up only in config.cloud_providers by slug. The module calls it with provider = "custom", and no cloud provider is ever named custom, so the endpoint was None and tinyinference's validate_custom_endpoint refused the call.
  • The error only lands in mem_tree_jobs.last_error, so the memory tree silently ends up with no vectors and semantic recall doesn't work. Details and repro in Memory host ignores the custom embedding endpoint, so nothing gets embedded #6984.

Solution

  • Added a small custom_embedding_endpoint helper. When the provider is "custom" and no cloud provider matches, it returns the URL after the custom: prefix in memory.embedding_provider.
  • Cloud provider lookup still wins when a matching slug exists, and every other provider behaves exactly as before.
  • A blank custom: still resolves to no endpoint, so the existing validation error is kept for a misconfigured profile instead of guessing.
  • I left out a fallback to [custom_embeddings] on purpose. The RPC embed path doesn't use it either, and keeping both paths identical seemed safer. Happy to add it if you want it.

Submission Checklist

  • Tests added or updated (happy path + at least one failure / edge case): embed_resolves_a_custom_endpoint_from_the_memory_embedding_provider (wiremock OpenAI-compatible server, asserts the returned vector) and embed_with_a_blank_custom_endpoint_still_fails_in_the_host.
  • Diff coverage ≥ 80%: 11 of 11 instrumented changed lines in memory_host.rs are covered (100%), measured locally with cargo llvm-cov -p openhuman --lib -- modules::memory_host. The CI rust-cov lane did not get as far as the diff-cover step on this run because two unrelated suites fail on main (tokenjuice::repl_module_tests::a_large_result_becomes_a_handle_the_repl_tools_can_query and agent_prompt_comprehension_e2e::summarizer_advertises_no_tools), see test: fix lib tests failing on main #6982.
  • Coverage matrix updated: N/A, behaviour-only bug fix with no feature rows added or renamed.
  • All affected feature IDs listed under ## Related: N/A, no matrix rows affected.
  • No new external network dependencies introduced: the test uses a local wiremock server (already a dev-dependency).
  • Manual smoke checklist updated: N/A, no release-cut surface changed.
  • Linked issue closed via Closes #NNN in the ## Related section.

Impact

  • Desktop/CLI core only. Users with a custom embedding endpoint start getting embeddings for memory tree chunks and summaries. Nothing changes for cloud provider slugs, Ollama, or managed embeddings.
  • No migration, no new dependencies, no security change (the endpoint still goes through validate_custom_endpoint).

Related


AI Authored PR Metadata (required for Codex/Linear PRs)

Keep this section for AI-authored PRs. For human-only PRs, mark each field N/A.

Linear Issue

Commit & Branch

  • Branch: bodharma:fix/memory-host-custom-embedding-endpoint
  • Commit SHA: b1cfbeef13b16fee8f06eb2e9b146a579d3a2605

Validation Run

  • N/A: pnpm --filter openhuman-app format:check, no frontend files changed. The Rust part ran as cargo fmt --all -- --check, clean.
  • N/A: pnpm typecheck, no TypeScript changed.
  • Focused tests: cargo test -p openhuman --lib modules::memory_host (17 passed, including the two new ones). The new happy-path test failed on main with the exact error from Memory host ignores the custom embedding endpoint, so nothing gets embedded #6984 before the fix.
  • Rust fmt/check (if changed): cargo fmt --all -- --check and cargo clippy -p openhuman -- -D warnings, both clean. The pre-push hook passed too.
  • N/A: Tauri fmt/check, the Tauri shell is not changed.
  • Full Rust suite: pnpm test:rust (scripts/test-rust-with-mock.sh) gave 9158 passed, 5 failed. None of the failures touch the memory host, see below.

Validation Blocked

  • command: pnpm test:rust on macOS 26.6 arm64
  • error: 5 failures unrelated to this change:
    • inference::ops::tests::inference_get_client_config_returns_safe_snapshot, tools::implementations::system::shell::tests::runtime_and_sandbox_tests::shell_sandboxed_mode_routes_through_sandbox_backend and shell_uses_cached_python_path_in_native_mode fail the same way on a clean checkout of main (d0d1e51ea) on this machine.
    • inference::tokenjuice::repl_module_tests::a_large_result_becomes_a_handle_the_repl_tools_can_query and sandbox::docker::exec_tests::timeout_reports_timed_out_result failed only inside the full run. Each passes when run on its own with this branch (twice each).
  • impact: none on this PR as far as I can tell. They look environment-specific (local sandbox / python / docker setup) or flaky under full-suite load.
  • CI note: Lanes (checks) fails on static:module-pins (vendor/tinybox is at v0.1.14-5-ge7a04c8a while registry.rs pins 0.1.14) and static:linux-tls-policy (crates/openhuman-app/Cargo.lock needs an update under --locked). This PR touches neither, and Fix composer routing for selected and persisted models #6978 fails the same lane.

Behavior Changes

  • Intended behavior change: module-mode embeddings work with a custom OpenAI-compatible endpoint saved as memory.embedding_provider = "custom:<url>".
  • User-visible effect: memory tree chunks and summaries get vectors, and Memory health stops showing chunks waiting for vectors forever.

Parity Contract

  • Legacy behavior preserved: cloud provider slug lookup is unchanged and still takes precedence. Non-custom providers are untouched.
  • Guard/fallback/dispatch parity checks: endpoint resolution now matches embedding_host::rpc::embed (strip custom: from memory.embedding_provider).

Duplicate / Superseded PR Handling

  • Duplicate PR(s): none found
  • Canonical PR: this one
  • Resolution (closed/superseded/updated): N/A

The module asks the host to embed with provider "custom", but
EmbeddingCallbacks::embed only looked the endpoint up in
config.cloud_providers, where nothing is ever named "custom". The
endpoint came back empty, so every seal and reembed_backfill failed with
"custom embedding provider endpoint must not be empty" and the memory
tree never got a vector.

Read the endpoint from memory.embedding_provider ("custom:<url>") when no
cloud provider matches, the same way embedding_host::rpc::embed does.
Cloud provider lookup still wins, and a blank "custom:" keeps failing in
the endpoint validation.

Closes tinyhumansai#6984
Copilot AI balanced review requested due to automatic review settings October 3, 2026 23:28
@tinysweeper

tinysweeper Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Tiny Sweeper reviewed this change across 6 lane(s) and found 1 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below.

State: Incomplete
Priority: medium
Reviewed head: b1cfbeef13b1
Updated: 1791075149 (Unix time)

Review snapshot

Change surface Files Review signal Count
Production 1 Active findings 2
Tests 1 Noted findings 0
Documentation 0 Resolved findings 0
Configuration 0 Pending checks/questions 8

Completeness: Incomplete
Test assessment: No supported feature-to-test mapping was available; this does not mean tests are absent or passed.

What changed

The review could not produce a supported behavioral summary; inspect the cited changed surface and lane details below.

Features

None identified with supported citations.

Tests

No supported feature-to-test mapping was produced. Test execution is not inferred.

Findings

Previously reported and still active

  • Cover the custom embedding endpoint fallback with an end-to-end test
  • Cover the custom embedding endpoint fallback with an end-to-end test

Pending checks: Rust E2E (mock backend), Build Playwright E2E Artifact, E2E (Playwright / web lane), Desktop E2E (full suite, 3 OS)

Could not review: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs

Before merge

  • Address carried finding Cover the custom embedding endpoint fallback with an end-to-end test.
  • Address carried finding Cover the custom embedding endpoint fallback with an end-to-end test.
  • Complete the critique review for crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs.
  • Complete the security review for crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs.
  • Wait for Rust E2E (mock backend), Build Playwright E2E Artifact, E2E (Playwright / web lane), Desktop E2E (full suite, 3 OS).

How this fits together

flowchart LR
  n0["...uments_in_the_order_the_module_sends_them<br/>changed"]:::changed
  n1["scoped_config"]:::impacted
  n2["call"]:::impacted
  n3["expect"]:::impacted
  n4["api_key_is_the_hosts_own_credential_store"]:::impacted
  n5["...config_key_when_credential_store_is_empty"]:::impacted
  n0 -->|calls| n1
  n0 -->|tests| n1
  n0 -->|calls| n2
  n0 -->|tests| n2
  n0 -->|calls| n3
  n2 -->|calls| n3
  n4 -->|calls| n1
  n4 -->|tests| n1
  n4 -->|calls| n2
  n4 -->|tests| n2
  n4 -->|calls| n3
  n5 -->|calls| n2
  n5 -->|tests| n2
  n5 -->|calls| n3
  classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
  classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
  classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
  classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Loading
Agent review details

critique

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs
  • Lane summary: Reviewed 0 files; 0 findings. 2 files could not be reviewed: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs.

security

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs
  • Lane summary: Reviewed 0 files; 0 findings. 2 files could not be reviewed: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs.

tests

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The diff adds a `custom_embedding_endpoint` fallback in the memory host's `embed` method so that a provider slug of `"custom"` resolves to the endpoint saved in `memory.embedding_provider` (Settings > Embeddings). The new function is covered by two focused tests that exercise the success path and the blank-endpoint failure path. The change is sound and the tests cover the relevant branches; no new defects are introduced. (2 earlier finding(s) still open) _Code retrieval was unavailable (model: ladder embeddings returned 502 Bad Gateway: {"error":{"message":"no rung of ladder vectors could serve the request","skipped":[{"model":"text-embedding-bge-m3","provider":"venice","reason":"rate limited, retry in 4s","rung":0}],"type":"ladder_router_error"}}), so this review saw the diff alone._ _3 memory call(s) failed (model: cortex: v1/answer: timed out after 20s), so this review saw part of what the engine holds._

commits

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: Nothing sensitive found in what this pull request commits.

description

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Lane summary: The change resolves a bug where custom embedding endpoints saved via Settings > Embeddings were not resolved in module mode, causing zero embeddings. The fix correctly looks up the endpoint from `memory.embedding_provider` when the provider is `'custom'`, matching how `embedding_host::rpc::embed` already resolves it. The added tests cover the happy path and the blank-endpoint error case. The diff is focused, well-tested, and follows repository conventions. (2 earlier finding(s) still open) _Code retrieval was unavailable (model: ladder embeddings returned 502 Bad Gateway: {"error":{"message":"no rung of ladder vectors could serve the request","skipped":[{"model":"text-embedding-bge-m3","provider":"venice","reason":"rate limited, retry in 4s","rung":0}],"type":"ladder_router_error"}}), so this review saw the diff alone._ _3 memory call(s) failed (model: cortex: v1/answer: timed out after 20s), so this review saw part of what the engine holds._

e2e

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: This pull request adds fallback resolution of a custom embedding endpoint from the memory config section, fixing a bug where Settings > Embeddings saved endpoint URLs were ignored. The change is covered by two new unit tests that exercise the custom endpoint path and the blank-endpoint error case. No end-to-end test was changed or added, but the fix is a targeted internal refactor with unit-tested behaviour; no new external surface is introduced, and the existing e2e suite covering embeddings roundtrips and provider configuration already exercises the broader flow. The earlier findings about e2e coverage for custom embedding endpoints remain unfixed and are re-raised. Waiting on end-to-end jobs: `Rust E2E (mock backend)`, `Build Playwright E2E Artifact`, `E2E (Playwright / web lane)`, `Desktop E2E (full suite, 3 OS)`. (1 already reported on an earlier push)
  • Unresolved questions/checks: Rust E2E (mock backend), Build Playwright E2E Artifact, E2E (Playwright / web lane), Desktop E2E (full suite, 3 OS)
Evidence and run details
  • Models: deepseek/deepseek-v4-flash
  • Spend: $0.001055
  • Tokens: 34355 input · 1657 output · 0 cached · 0 embedding
Head State Pass summary
b1cfbeef13b1 incomplete 1 active finding(s), 0 resolved finding(s) (at 1791070185)
b1cfbeef13b1 incomplete 1 active finding(s), 8 resolved finding(s) (at 1791071010)
b1cfbeef13b1 incomplete 0 active finding(s), 0 resolved finding(s) (at 1791075149)

tinysweeper 0.1.0

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: dd9cf0fd-28b1-4241-87ff-c74dede58667
📥 Commits

Reviewing files that changed from the base of the PR and between d0d1e51 and b1cfbee.

📒 Files selected for processing (2)
  • crates/openhuman-core/src/modules/memory_host.rs
  • crates/openhuman-core/src/modules/memory_host_tests.rs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The memory host now falls back to the configured custom embedding endpoint when cloud-provider lookup finds no endpoint. Tests cover successful embedding and rejection of a whitespace-only endpoint.

Changes

Custom embedding resolution

Layer / File(s) Summary
Resolve and validate custom endpoints
crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs
The embed callback extracts and trims the endpoint from memory.embedding_provider for the custom provider. Tests check a successful embedding response and the error for a blank endpoint.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: senamakel

Merge Risk: ⚪ Minimal · up to b1cfb

The configured custom endpoint reaches the memory host, while blank endpoints remain rejected. No concrete merge-blocking risk is established.

Security Architecture Review

Security architecture risk: 🟡 Moderate · up to b1cfb

Changing a custom embedding profile without restarting may leave requests using the previous address. Because credentials are looked up separately, memory text—and potentially a replacement API key—could continue going to the previous provider.

Retained concerns

  • Medium · security · inferred: The newly enabled custom-provider path reads its destination from permanently captured configuration but resolves credentials per request. If a custom profile changes without restarting, calls can continue sending supplied memory text to the former endpoint and may pair that endpoint with a replacement embeddings:custom credential. Immediate credential visibility and whether settings changes force a restart remain unresolved.
Security review details

Security Blast Radius

  • inferred — The identified exposure is bounded to texts supplied to this host's custom embedding calls and the credential resolved from its configured credential context. Broader tenant, service, or environment compromise is not established. In the stale-profile scenario, the recipient would be the formerly configured endpoint rather than an arbitrary address chosen through the callback arguments.

Security Findings and Attack Paths

  • inferred — A conditional disclosure path exists if the host starts with endpoint A, the custom profile changes to B without restarting, and the module continues calling provider "custom": the callback still selects A. If the separately resolved credential has been replaced for B, A may receive that credential as well as supplied texts. This is an inferred lifecycle risk, not a verified disclosure; forced-restart behavior and credential-update visibility remain unresolved.

Trust Boundaries and Controls

  • observed — The callback derives its endpoint and credential from host configuration rather than separate caller arguments, and production registration uses a private in-process connection. These controls counter an unauthenticated public-network or arbitrary-destination interpretation of the routing signal.
  • observed — Existing validation tests specify rejection of blank, malformed, FTP, and credentialed remote-HTTP endpoints while permitting credentialed localhost HTTP. The new host test specifies rejection of a blank custom value. These are source-level test assertions; tests were not executed and the downstream validator implementation was not inspected.

Resilience and Maintainability Implications

  • observed — The callback returns provider-construction and embedding failures as host errors and contains no retry or persistent-state mutation. Its blank-endpoint handling avoids silently substituting another destination.

Hardening Proposals

  • proposed — Resolve endpoint and credential from one versioned custom-profile snapshot, or enforce restart before a changed profile becomes usable. Verify the transition from endpoint A to B, including concurrent requests and failed saves, so replacement credentials and post-change texts cannot reach A unintentionally.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning For #6984, memory_host.rs now resolves custom:<url> for provider custom, and the added tests cover a returned vector and a blank endpoint failure. The change addresses endpoint resolution. The i… For #6984, add app-log or Memory-health reporting for host embed errors, with a regression test. Provide the CI or cargo-llvm-cov result that confirms ≥80% diff coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Out of Scope Changes check ✅ Passed The reported changes are limited to custom endpoint resolution in the memory host and regression tests for that behavior. Both support #6984. No unrelated changes are identified.
Docstring Coverage ✅ Passed Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 2 files.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: resolving a custom embedding endpoint in the memory host.
Full details: Linked Issues check

Explanation

For #6984, memory_host.rs now resolves custom:&lt;url&gt; for provider custom, and the added tests cover a returned vector and a blank endpoint failure. The change addresses endpoint resolution. The issue also requires embed failures to appear in the app log or Memory health. This PR leaves that work for a follow-up, and the callback still does not report the embed error; its debug message records only ok=false. The reported test runs do not establish the required ≥80% diff coverage because no coverage result is available.

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit checked the custom route,
Then watched an embedding vector sprout.
A blank endpoint got turned away,
The tests confirmed the path today.
The rabbit thumped and hopped about.

Comment @coderabbitai help to get the list of available commands.

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tinysweeper found nothing blocking, but could not review everything, so this is not an approval: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs, tinysweeper/description.

       $0.0006 · 17,390 in / 1,554 out · 0 cached (0%) · deepseek/deepseek-v4-flash
tests: $0.0001 · 5,115 in  / 81 out    · 0 cached (0%) · deepseek/deepseek-v4-flash
e2e:   $0.0003 · 9,025 in  / 514 out   · 0 cached (0%) · deepseek/deepseek-v4-flash

/// `memory.embedding_provider = "custom:<url>"`, never as a `cloud_providers`
/// entry, so the slug lookup in `embed` cannot find it (#6984). This reads it
/// the way `embedding_host::rpc::embed` already does.
fn custom_embedding_endpoint<'a>(config: &'a Config, provider: &str) -> Option<&'a str> {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

priority medium e2e confident

Cover the custom embedding endpoint fallback with an end-to-end test

The custom_embedding_endpoint function and its call site in embed are new behavioural code that resolves a user-configured custom embedding endpoint. No end-to-end test exercises this path: the only E2E candidate mentions (tests/agent_harness_e2e.rs and app/test/e2e/specs/memory-roundtrip.spec.ts) do not set up an EmbeddingCallbacks with memory.embedding_provider = "custom:<url>" or call embed through the module hosting path. Without an E2E test that configures a custom endpoint (e.g. via a mock server), this code could regress silently in the deployed app. A Playwright or Rust E2E test should spin up a mock embedding server, set the config key, and verify that a vector is produced.

[RULE] e2e-uncovered ·

@tinysweeper tinysweeper Bot added the priority: p2 Soon. Real but survivable — a rough edge, a gap, a thing that will bite later. label Oct 3, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tinysweeper found nothing blocking, but could not review everything, so this is not an approval: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs.

             $0.0010 · 34,130 in / 1,369 out · 0 cached (0%) · deepseek/deepseek-v4-flash
tests:       $0.0002 · 8,517 in  / 95 out    · 0 cached (0%) · deepseek/deepseek-v4-flash
description: $0.0003 · 9,528 in  / 98 out    · 0 cached (0%) · deepseek/deepseek-v4-flash
e2e:         $0.0004 · 12,427 in / 469 out   · 0 cached (0%) · deepseek/deepseek-v4-flash

.iter()
.find(|candidate| candidate.slug == provider)
.map(|candidate| candidate.endpoint.as_str())
.or_else(|| custom_embedding_endpoint(&self.0, &provider))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

priority medium e2e confident

Cover the custom embedding endpoint fallback with an end-to-end test

The change adds custom_embedding_endpoint as a fallback when a custom embedding provider is configured via memory.embedding_provider. This path has unit tests but no end-to-end test. An E2E test (e.g., in a Playwright spec or Rust integration test that drives the core via RPC) should configure a custom endpoint, embed a memory, and verify that vectors are produced. Without it, a future refactor could silently break the fallback and the CI suite would not catch it.

[RULE] e2e-uncovered ·

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tinysweeper found nothing blocking, but could not review everything, so this is not an approval: crates/openhuman-core/src/modules/memory_host.rs, crates/openhuman-core/src/modules/memory_host_tests.rs.

             $0.0011 · 34,355 in / 1,657 out · 0 cached (0%) · deepseek/deepseek-v4-flash
tests:       $0.0002 · 8,543 in  / 115 out   · 0 cached (0%) · deepseek/deepseek-v4-flash
description: $0.0003 · 9,627 in  / 111 out   · 0 cached (0%) · deepseek/deepseek-v4-flash
e2e:         $0.0004 · 12,453 in / 561 out   · 0 cached (0%) · deepseek/deepseek-v4-flash

@senamakel

Copy link
Copy Markdown
Member

hey bro. dropping this since we're now completly changing the memory engine to 3rd party implementations that have their own embeddign providers

@senamakel senamakel closed this Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p2 Soon. Real but survivable — a rough edge, a gap, a thing that will bite later.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Memory host ignores the custom embedding endpoint, so nothing gets embedded

3 participants