{"repo":"NousResearch/hermes-agent","public_id":"19127","display_label":"Add hermes gateway list command for profiles","summary":"These members concern adding a new `hermes gateway list` command that displays gateway status across all profiles. The work includes a feature request and at least two implementation attempts.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":21225,"merged_at":"2026-05-07T12:35:04+00:00"},"resolution":{"state":"resolved","by":"pr-21225"},"freshness":{"state":"verified","last_verified_at":"2026-05-07T12:35:04+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":19127,"pr_number":21225,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-05-07T12:35:04+00:00"}],"members":[{"kind":"issue","number":19127,"title":"[Feature]: `hermes gateway list` — show all profiles and their gateway status","url":null,"state":"closed"},{"kind":"pr","number":19129,"title":"feat(gateway): add `hermes gateway list` to show all profiles' gateway status","url":null,"state":"closed","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":21225,"title":"feat(gateway): add hermes gateway list to show all profiles' status (salvage #19129)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/gateway.py","hermes_cli/main.py"],"fix_hunks":[{"file":"hermes_cli/gateway.py","hunks":["@@ -830,6 +830,46 @@ def _print_other_profiles_gateway_status() -> None:\n         pass\n \n \n+def _gateway_list() -> None:\n+    \"\"\"List all profiles and their gateway running status.\n+\n+    Provides a single-command overview of every known profile and whether\n+    its gateway is currently running, so multi-profile users don't have to\n+    check each profile individually.\n+    \"\"\"\n+    try:\n+        from hermes_cli.profiles import list_profiles, get_active_profile_name\n+    except Exception:\n+        print(\"Unable to list profiles.\")\n+        return\n+\n+    profiles = list_profiles()\n+    if not profiles:\n+        print(\"No profiles found.\")\n+        return\n+\n+    current = get_active_profile_name()\n+\n+    print(\"Gateways:\")\n+    for prof in profiles:\n+        marker = \"✓\" if prof.gateway_running else \"✗\"\n+        label = prof.name\n+        if prof.name == current:\n+            label += \" (current)\"\n+        parts = [f\"  {marker} {label:<24s}\"]\n+        if prof.gateway_running:\n+            try:\n+                from gateway.status import get_running_pid\n+                pid = get_running_pid(prof.path / \"gateway.pid\", cleanup_stale=False)\n+                if pid:\n+                    parts.append(f\"PID {pid}\")\n+            except Exception:\n+                pass\n+        else:\n+            parts.append(\"not running\")\n+        print(\" — \".join(parts))\n+\n+\n def kill_gateway_processes(force: bool = False, exclude_pids: set | None = None,\n                            all_profiles: bool = False) -> int:\n     \"\"\"Kill any running gateway processes. Returns count killed.","@@ -4798,6 +4838,9 @@ def _gateway_command_inner(args):\n         # Show other profiles' gateway status for multi-profile awareness\n         _print_other_profiles_gateway_status()\n \n+    elif subcmd == \"list\":\n+        _gateway_list()\n+\n     elif subcmd == \"migrate-legacy\":\n         # Stop, disable, and remove legacy Hermes gateway unit files from\n         # pre-rename installs (e.g. hermes.service). Profile units and"]},{"file":"hermes_cli/main.py","hunks":["@@ -8690,6 +8690,9 @@ def main():\n         help=\"Target the Linux system-level gateway service\",\n     )\n \n+    # gateway list\n+    gateway_subparsers.add_parser(\"list\", help=\"List all profiles and their gateway status\")\n+\n     # gateway setup\n     gateway_subparsers.add_parser(\"setup\", help=\"Configure messaging platforms\")\n \n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}