hermes - 💡(How to fix) Fix hindsight memory status falsely reports 'not available' in local_embedded mode [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

def _check_local_runtime() -> tuple[bool, str | None]: try: importlib.import_module("hindsight") # ❌ fails importlib.import_module("hindsight_embed.daemon_embed_manager") # ✅ succeeds return True, None except Exception as exc: return False, str(exc)

Root Cause

In plugins/memory/hindsight/__init__.py, _check_local_runtime() attempts to import a module named hindsight:

def _check_local_runtime() -> tuple[bool, str | None]:
    try:
        importlib.import_module("hindsight")                          # ❌ fails
        importlib.import_module("hindsight_embed.daemon_embed_manager") # ✅ succeeds
        return True, None
    except Exception as exc:
        return False, str(exc)

However, the installed hindsight packages are:

  • hindsight_embed
  • hindsight_client
  • hindsight ❌ (does not exist)

This causes is_available() to return False, which triggers cmd_status() in hermes_cli/memory_setup.py to display the misleading "not available" message and list missing env vars (including HINDSIGHT_API_KEY, which is not required for embedded mode).

Fix Action

Fixed

Code Example

def _check_local_runtime() -> tuple[bool, str | None]:
    try:
        importlib.import_module("hindsight")                          # ❌ fails
        importlib.import_module("hindsight_embed.daemon_embed_manager") # ✅ succeeds
        return True, None
    except Exception as exc:
        return False, str(exc)

---

# Daemon is healthy
curl -s http://127.0.0.1:9177/health
# {"status":"healthy","database":"connected"}

# But status says not available
hermes memory status
# Status:    not available ✗
# Missing:
#   ✗ HINDSIGHT_API_KEY  → https://ui.hindsight.vectorize.io
#   ✓ HINDSIGHT_LLM_API_KEY

# The import check that fails:
python -c "import importlib; importlib.import_module('hindsight')"
# ModuleNotFoundError: No module named 'hindsight'

# But the actual module works:
python -c "import importlib; importlib.import_module('hindsight_embed.daemon_embed_manager')"
# <module 'hindsight_embed.daemon_embed_manager' ...>
RAW_BUFFERClick to expand / collapse

Bug Summary

hermes memory status falsely reports hindsight as "not available" when configured in local_embedded mode, even though the embedded daemon is running and memory operations work correctly.

Root Cause

In plugins/memory/hindsight/__init__.py, _check_local_runtime() attempts to import a module named hindsight:

def _check_local_runtime() -> tuple[bool, str | None]:
    try:
        importlib.import_module("hindsight")                          # ❌ fails
        importlib.import_module("hindsight_embed.daemon_embed_manager") # ✅ succeeds
        return True, None
    except Exception as exc:
        return False, str(exc)

However, the installed hindsight packages are:

  • hindsight_embed
  • hindsight_client
  • hindsight ❌ (does not exist)

This causes is_available() to return False, which triggers cmd_status() in hermes_cli/memory_setup.py to display the misleading "not available" message and list missing env vars (including HINDSIGHT_API_KEY, which is not required for embedded mode).

Impact

  • User confusion: Status shows "not available" + missing HINDSIGHT_API_KEY, but memory is actually working
  • False negatives: The is_available() check is used for status display but not for actual initialization, so functionality is unaffected — it's purely a diagnostic bug

Environment

  • Hermes Agent: 0.14.0 (commit 3b3909690)
  • hindsight-embed: 0.6.1
  • hindsight-client: 0.6.1
  • OS: macOS 26.5
  • Config: memory.provider = hindsight, mode = local_embedded

Verification

# Daemon is healthy
curl -s http://127.0.0.1:9177/health
# {"status":"healthy","database":"connected"}

# But status says not available
hermes memory status
# Status:    not available ✗
# Missing:
#   ✗ HINDSIGHT_API_KEY  → https://ui.hindsight.vectorize.io
#   ✓ HINDSIGHT_LLM_API_KEY

# The import check that fails:
python -c "import importlib; importlib.import_module('hindsight')"
# ModuleNotFoundError: No module named 'hindsight'

# But the actual module works:
python -c "import importlib; importlib.import_module('hindsight_embed.daemon_embed_manager')"
# <module 'hindsight_embed.daemon_embed_manager' ...>

Suggested Fix

Option A: Remove the importlib.import_module("hindsight") line from _check_local_runtime()hindsight_embed.daemon_embed_manager is the only import needed to verify the embedded stack is functional.

Option B: Add a fallback: try hindsight first, then hindsight_embed if that fails.

Related

  • is_available() logic: plugins/memory/hindsight/__init__.py:595-612
  • Status display logic: hermes_cli/memory_setup.py:394-437
  • _check_local_runtime(): plugins/memory/hindsight/__init__.py:86-99

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix hindsight memory status falsely reports 'not available' in local_embedded mode [1 pull requests]