{"repo":"NousResearch/hermes-agent","public_id":"6865","display_label":"Playwright dependency install fix for non-apt systems","summary":"A bug was identified where Playwright's automatic dependency installation fails on non-apt-based systems. Related pull requests address this and salvage broader Docker/install infrastructure changes.","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":7407,"merged_at":"2026-04-10T22:42:30+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"stale","last_verified_at":"2026-04-10T22:42:30+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":6865,"pr_number":7407,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-04-10T22:42:30+00:00"},{"issue_number":6908,"pr_number":7407,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-04-10T22:42:30+00:00"}],"members":[{"kind":"issue","number":6865,"title":"[Bug]: playwright auto dependency installation breaks on non apt-based systems","url":null,"state":"closed"},{"kind":"pr","number":6934,"title":"fix(install): handle Playwright deps correctly on non-apt systems","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#7407","number":7407}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":7407,"title":"fix(infra): salvage Docker/install PRs #6934 #6910 #6904 + entrypoint dirs from #6936","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["docker/entrypoint.sh","pyproject.toml","scripts/install.sh","tools/environments/docker.py"],"fix_hunks":[{"file":"docker/entrypoint.sh","hunks":["@@ -12,7 +12,7 @@ INSTALL_DIR=\"/opt/hermes\"\n # The \"home/\" subdirectory is a per-profile HOME for subprocesses (git,\n # ssh, gh, npm …).  Without it those tools write to /root which is\n # ephemeral and shared across profiles.  See issue #4426.\n-mkdir -p \"$HERMES_HOME\"/{cron,sessions,logs,hooks,memories,skills,home}\n+mkdir -p \"$HERMES_HOME\"/{cron,sessions,logs,hooks,memories,skills,skins,plans,workspace,home}\n \n # .env\n if [ ! -f \"$HERMES_HOME/.env\" ]; then"]},{"file":"pyproject.toml","hunks":["@@ -16,7 +16,7 @@ dependencies = [\n   \"anthropic>=0.39.0,<1\",\n   \"python-dotenv>=1.2.1,<2\",\n   \"fire>=0.7.1,<1\",\n-  \"httpx>=0.28.1,<1\",\n+  \"httpx[socks]>=0.28.1,<1\",\n   \"rich>=14.3.3,<15\",\n   \"tenacity>=9.1.4,<10\",\n   \"pyyaml>=6.0.2,<7\","]},{"file":"scripts/install.sh","hunks":["@@ -1082,10 +1082,19 @@ install_node_deps() {\n         log_success \"Node.js dependencies installed\"\n \n         # Install Playwright browser + system dependencies.\n-        # Playwright's install-deps only supports apt/dnf/zypper natively.\n+        # Playwright's --with-deps only supports apt-based systems natively.\n         # For Arch/Manjaro we install the system libs via pacman first.\n+        # Other systems must install Chromium dependencies manually.\n         log_info \"Installing browser engine (Playwright Chromium)...\"\n         case \"$DISTRO\" in\n+            ubuntu|debian|raspbian|pop|linuxmint|elementary|zorin|kali|parrot)\n+                log_info \"Playwright may request sudo to install browser system dependencies (shared libraries).\"\n+                log_info \"This is standard Playwright setup — Hermes itself does not require root access.\"\n+                cd \"$INSTALL_DIR\" && npx playwright install --with-deps chromium 2>/dev/null || {\n+                    log_warn \"Playwright browser installation failed — browser tools will not work.\"\n+                    log_warn \"Try running manually: cd $INSTALL_DIR && npx playwright install --with-deps chromium\"\n+                }\n+                ;;\n             arch|manjaro)\n                 if command -v pacman &> /dev/null; then\n                     log_info \"Arch/Manjaro detected — installing Chromium system dependencies via pacman...\"","@@ -1100,15 +1109,35 @@ install_node_deps() {\n                         log_warn \"  sudo pacman -S nss atk at-spi2-core cups libdrm libxkbcommon mesa pango cairo alsa-lib\"\n                     fi\n                 fi\n-                cd \"$INSTALL_DIR\" && npx playwright install chromium 2>/dev/null || true\n+                cd \"$INSTALL_DIR\" && npx playwright install chromium 2>/dev/null || {\n+                    log_warn \"Playwright browser installation failed — browser tools will not work.\"\n+                }\n+                ;;\n+            fedora|rhel|centos|rocky|alma)\n+                log_warn \"Playwright does not support automatic dependency installation on RPM-based systems.\"\n+                log_info \"Install Chromium system dependencies manually before using browser tools:\"\n+                log_info \"  sudo dnf install nss atk at-spi2-core cups-libs libdrm libxkbcommon mesa-libgbm pango cairo alsa-lib\"\n+                cd \"$INSTALL_DIR\" && npx playwright install chromium 2>/dev/null || {\n+                    log_warn \"Playwright browser installation failed — install dependencies above and retry.\"\n+                }\n+                ;;\n+            opensuse*|sles)\n+                log_warn \"Playwright does not support automatic dependency installation on zypper-based systems.\"\n+                log_info \"Install Chromium system dependencies manually before using browser tools:\"\n+                log_info \"  sudo zypper install mozilla-nss libatk-1_0-0 at-spi2-core cups-libs libdrm2 libxkbcommon0 Mesa-libgbm1 pango cairo libasound2\"\n+                cd \"$INSTALL_DIR\" && npx playwright install chromium 2>/dev/null || {\n+                    log_warn \"Playwright browser installation failed — install dependencies above and retry.\"\n+                }\n                 ;;\n             *)\n-                log_info \"Playwright may request sudo to install browser system dependencies (shared libraries).\"\n-                log_info \"This is standard Playwright setup — Hermes itself does not require root access.\"\n-                cd \"$INSTALL_DIR\" && npx playwright install --with-deps chromium 2>/dev/null || true\n+                log_warn \"Playwright does not support automatic dependency installation on $DISTRO.\"\n+                log_info \"Install Chromium/browser system dependencies for your distribution, then run:\"\n+                log_info \"  cd $INSTALL_DIR && npx playwright install chromium\"\n+                log_info \"Browser tools will not work until dependencies are installed.\"\n+                cd \"$INSTALL_DIR\" && npx playwright install chromium 2>/dev/null || true\n                 ;;\n         esac\n-        log_success \"Browser engine installed\"\n+        log_success \"Browser engine setup complete\"\n     fi\n \n     # Install WhatsApp bridge dependencies"]},{"file":"tools/environments/docker.py","hunks":["@@ -409,11 +409,12 @@ def __init__(\n         container_name = f\"hermes-{uuid.uuid4().hex[:8]}\"\n         run_cmd = [\n             self._docker_exe, \"run\", \"-d\",\n+            \"--init\",           # tini/catatonit as PID 1 — reaps zombie children\n             \"--name\", container_name,\n             \"-w\", cwd,\n             *all_run_args,\n             image,\n-            \"sleep\", \"2h\",\n+            \"sleep\", \"infinity\",  # no fixed lifetime — idle reaper handles cleanup\n         ]\n         logger.debug(f\"Starting container: {' '.join(run_cmd)}\")\n         result = subprocess.run(\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}