Honcho API key requirement for local self-hosted instances
Cluster 3555 · agent. Data as of
Nothing open on GitHub. Fix merged in #3644 on 29 Mar 2026. Check it covers your case.
The short answer
- Known?
- Yes. 4 related items grouped here, 1 issue already closed.
- Fix event
- A fix was merged to main in PR #3644. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
unresolved. That is separate from the fix event. - Still open
- Nothing open on GitHub.
Members concern Honcho API key handling when connecting to local or self-hosted instances. Three titles propose changes (placeholder key, allowing no key, bypassing validation), and one bug report describes an invalid API key message from a local host.
Open issues0
Open PRs0
Fixes on record
-
#3644 fix(honcho): allow self-hosted local instances without API key
files:
cli.py,gateway/run.py,hermes_cli/doctor.py,honcho_integration/cli.py,honcho_integration/client.py,run_agent.pyShow the diff
-
cli.py@@ -6089,7 +6089,7 @@ def run(self): from honcho_integration.client import HonchoClientConfig from agent.display import honcho_session_line, write_tty hcfg = HonchoClientConfig.from_global_config() - if hcfg.enabled and hcfg.api_key and hcfg.explicitly_configured: + if hcfg.enabled and (hcfg.api_key or hcfg.base_url) and hcfg.explicitly_configured: sname = hcfg.resolve_session_name(session_id=self.session_id) if sname: write_tty(honcho_session_line(hcfg.workspace_id, sname) + "\n") -
gateway/run.py@@ -432,7 +432,7 @@ def _get_or_create_gateway_honcho(self, session_key: str): from honcho_integration.session import HonchoSessionManager hcfg = HonchoClientConfig.from_global_config() - if not hcfg.enabled or not hcfg.api_key: + if not hcfg.enabled or not (hcfg.api_key or hcfg.base_url): return None, hcfg client = get_honcho_client(hcfg) -
hermes_cli/doctor.py@@ -56,7 +56,7 @@ def _honcho_is_configured_for_doctor() -> bool: from honcho_integration.client import HonchoClientConfig cfg = HonchoClientConfig.from_global_config() - return bool(cfg.enabled and cfg.api_key) + return bool(cfg.enabled and (cfg.api_key or cfg.base_url)) except Exception: return False @@ -708,8 +708,8 @@ def run_doctor(args): check_warn("Honcho config not found", "run: hermes honcho setup") elif not hcfg.enabled: check_info(f"Honcho disabled (set enabled: true in {_honcho_cfg_path} to activate)") - elif not hcfg.api_key: - check_fail("Honcho API key not set", "run: hermes honcho setup") + elif not (hcfg.api_key or hcfg.base_url): + check_fail("Honcho API key or base URL not set", "run: hermes honcho setup") issues.append("No Honcho API key — run 'hermes honcho setup'") else: from honcho_integration.client import get_honcho_client, reset_honcho_client -
honcho_integration/cli.py@@ -270,7 +270,7 @@ def cmd_status(args) -> None: print(f" {peer}: {mode}") print(f" Write freq: {hcfg.write_frequency}") - if hcfg.enabled and hcfg.api_key: + if hcfg.enabled and (hcfg.api_key or hcfg.base_url): print("\n Connection... ", end="", flush=True) try: get_honcho_client(hcfg) @@ -278,7 +278,7 @@ def cmd_status(args) -> None: except Exception as e: print(f"FAILED ({e})\n") else: - reason = "disabled" if not hcfg.enabled else "no API key" + reason = "disabled" if not hcfg.enabled else "no API key or base URL" print(f"\n Not connected ({reason})\n") -
honcho_integration/client.py@@ -417,9 +417,18 @@ def get_honcho_client(config: HonchoClientConfig | None = None) -> Honcho: else: logger.info("Initializing Honcho client (host: %s, workspace: %s)", config.host, config.workspace_id) + # Local Honcho instances don't require an API key, but the SDK + # expects a non-empty string. Use a placeholder for local URLs. + _is_local = resolved_base_url and ( + "localhost" in resolved_base_url + or "127.0.0.1" in resolved_base_url + or "::1" in resolved_base_url + ) + effective_api_key = [redacted:secret-assignment] or ("local" if _is_local else None) + kwargs: dict = { "workspace_id": config.workspace_id, - "api_key": [redacted:secret-assignment] + "api_key": [redacted:secret-assignment] "environment": config.environment, } if resolved_base_url: -
run_agent.py@@ -1084,8 +1084,8 @@ def __init__( else: if not hcfg.enabled: logger.debug("Honcho disabled in global config") - elif not hcfg.api_key: - logger.debug("Honcho enabled but no API key configured") + elif not (hcfg.api_key or hcfg.base_url): + logger.debug("Honcho enabled but no API key or base URL configured") else: logger.debug("Honcho enabled but missing API key or disabled in config") except Exception as e: @@ -2292,8 +2292,14 @@ def is_interrupted(self) -> bool: # ── Honcho integration helpers ── def _honcho_should_activate(self, hcfg) -> bool: - """Return True when remote Honcho should be active.""" - if not hcfg or not hcfg.enabled or not hcfg.api_key: + """Return True when Honcho should be active. + + Self-hosted Honcho may be configured with a base_url and no API key, + so activation should accept either credential style. + """ + if not hcfg or not hcfg.enabled: + return False + if not (hcfg.api_key or hcfg.base_url): return False return True
-
2 PRs closed without merging
From the close comments: merged via another change 2
Closed issues · 1
- Closed#3555[Bug]: Invalid Honcho API key from local host???
How this cluster was grouped
-
Link evidence (
structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference. -
Pairwise link density
0.50: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Subsystem
- agent
- Merged PRs
- #3644
- Closed issues
- 1
- Attempts
- 2 PRs closed without merging
- Fix link checked
- 29 Mar 2026. This confirmation is old and may be out of date (a revert or reopen would not have invalidated it here); re-verify.