hermes - 💡(How to fix) Fix hindsight embedded daemon profile mismatch causes false 'not available' status

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

Option C: Setup wizard should warn about profile mismatch

Root Cause

When hindsight is configured in local_embedded mode, it creates profile-specific daemon instances under ~/.hindsight/profiles/. The profile name is derived from the bank_id config field (default: "hermes"), which is independent of the Hermes profile name.

This creates a mismatch:

  • Hermes profile: default
  • Hindsight profile (from bank_id: "hermes"): hermes
  • Hindsight daemon runs on port 9177 for hermes profile
  • hermes memory status checks default profile (port 8984), which is not running

Code Example

{
    "mode": "local_embedded",
    "bank_id": "hermes",
    ...
  }

---

# Hindsight profiles directory
ls ~/.hindsight/profiles/
# default/    <- empty, daemon not running
# hermes/     <- has data, daemon running on port 9177

# Hermes checks default profile
hermes memory status
# Status: not available   (checks port 8984, default profile)

# But hermes profile daemon is healthy
curl -s http://127.0.0.1:9177/health
# {"status":"healthy","database":"connected"}
RAW_BUFFERClick to expand / collapse

Bug Summary

Hindsight embedded daemon uses a different profile name (hermes) than the Hermes profile (default), causing hermes memory status to check the wrong daemon instance. This is a configuration/setup issue that leads to false "not available" status even when the daemon is running.

Root Cause

When hindsight is configured in local_embedded mode, it creates profile-specific daemon instances under ~/.hindsight/profiles/. The profile name is derived from the bank_id config field (default: "hermes"), which is independent of the Hermes profile name.

This creates a mismatch:

  • Hermes profile: default
  • Hindsight profile (from bank_id: "hermes"): hermes
  • Hindsight daemon runs on port 9177 for hermes profile
  • hermes memory status checks default profile (port 8984), which is not running

Environment

  • Hermes Agent: 0.14.0
  • hindsight-embed: 0.6.1
  • OS: macOS 26.5
  • Hermes profile: default (only profile)
  • Hindsight config (~/.hermes/hindsight/config.json):
    {
      "mode": "local_embedded",
      "bank_id": "hermes",
      ...
    }

Current State

# Hindsight profiles directory
ls ~/.hindsight/profiles/
# default/    <- empty, daemon not running
# hermes/     <- has data, daemon running on port 9177

# Hermes checks default profile
hermes memory status
# Status: not available ✗  (checks port 8984, default profile)

# But hermes profile daemon is healthy
curl -s http://127.0.0.1:9177/health
# {"status":"healthy","database":"connected"}

Impact

  • hermes memory status shows incorrect status for single-profile users
  • The is_available() check in plugins/memory/hindsight/__init__.py uses _check_local_runtime() which doesn't verify the correct profile
  • Users with single/default Hermes profile get misleading diagnostics

Suggested Fix

Option A: Align bank_id with Hermes profile name

  • When local_embedded mode is configured via hermes setup, set bank_id to match the current Hermes profile name
  • Or document that bank_id should match Hermes profile for single-profile setups

Option B: Status check should use configured bank_id

  • hermes memory status should read bank_id from hindsight config and check that specific profile's daemon
  • Currently it appears to check default profile unconditionally

Option C: Setup wizard should warn about profile mismatch

  • During hermes setup memory, if user has only default profile, suggest setting bank_id: "default"

Related

  • Issue #27386: hindsight memory status falsely reports 'not available' in local_embedded mode
  • hermes_cli/memory_setup.py:394-437 (status display logic)
  • plugins/memory/hindsight/__init__.py:595-612 (is_available() logic)
  • ~/.hindsight/profiles/ (hindsight profile directory)

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 embedded daemon profile mismatch causes false 'not available' status