Loading release run…
Loading release run…
Current status: Completed. No reviewer action is required right now.
| Artifact type | Est. generation cost (apportioned) | Views | Clicks | Conversions | Reported as of |
|---|---|---|---|---|---|
| changelog_entry | n/a | not yet reported | not yet reported | not yet reported | — |
| customer_email | n/a | not yet reported | not yet reported | not yet reported | — |
| linkedin_post | n/a | not yet reported | not yet reported | not yet reported | — |
| release_blog | n/a | not yet reported | not yet reported | not yet reported | — |
| Run total | $0.0000 | not yet reported | not yet reported | not yet reported | cost/click: n/a |
| Type | Count | Avg confidence |
|---|---|---|
| code_diff | 85 | — |
| pr_metadata | 50 | 100% |
| docs_delta | 46 | 52% |
| issue | 17 | 100% |
| test | 1 | 60% |
| ui_string_change | 1 | 80% |
| File | Redacted excerpt | Confidence | Line |
|---|---|---|---|
| .github/workflows/contributor-check.yml | @@ -1,12 +1,11 @@ name: Contributor Attribution Check on: - pull_request: - branches: [main] # No paths filter — the job must always run so the required check … | — | — |
| .github/workflows/deploy-site.yml | @@ -11,8 +11,20 @@ on: - 'optional-skills/**' - '.github/workflows/deploy-site.yml' workflow_dispatch: + inputs: + skills_index_run_id: + description: 'Optiona… | — | — |
| .github/workflows/docker-lint.yml | @@ -18,13 +18,12 @@ on: - docker/** - .hadolint.yaml - .github/workflows/docker-lint.yml + + # No paths filter — the job must always run so the required check … | — | — |
| .github/workflows/docs-site-checks.yml | @@ -1,10 +1,12 @@ name: Docs Site Checks on: + # No paths filter — the job must always run so the required check + # reports a status (path-gated workflows lea… | — | — |
| acp_adapter/provenance.py | @@ -0,0 +1,127 @@ +"""Derive ACP session-provenance metadata from the existing compression chain. + +This is an additive Hermes extension surfaced under ACP ``… | — | — |
| .github/workflows/lint.yml | @@ -15,12 +15,12 @@ on: - "**/*.md" - "docs/**" - "website/**" + + # No paths filter — the job must always run so the required check + # reports a status (path… | — | — |
| .github/workflows/nix-lockfile-fix.yml |
200 items
Showing 25 of 200 items (page 1 of 8)
| File | Type | Source | Redacted excerpt | Risk flags | Full excerpt |
|---|---|---|---|---|---|
| — | pr_metadata | pr_metadata | feat(cli): display custom profile alias names in profile list/show ## Summary `hermes profile list` and `hermes profile show` assumed a profile's wrapper scrip… | none | View full excerpt |
| .github/workflows/contributor-check.yml | code_diff | git_diff | @@ -1,12 +1,11 @@ name: Contributor Attribution Check on: - pull_request: - branches: [main] # No paths filter — the job must always run so the required check … | none | View full excerpt |
| .github/workflows/deploy-site.yml | code_diff | git_diff | @@ -11,8 +11,20 @@ on: - 'optional-skills/**' - '.github/workflows/deploy-site.yml' workflow_dispatch: + inputs: + skills_index_run_id: + description: 'Optiona… | none | View full excerpt |
| .github/workflows/docker-lint.yml | code_diff | git_diff | @@ -18,13 +18,12 @@ on: - docker/** - .hadolint.yaml - .github/workflows/docker-lint.yml + + # No paths filter — the job must always run so the required check … | none | View full excerpt |
| .github/workflows/docs-site-checks.yml | code_diff | git_diff | @@ -1,10 +1,12 @@ name: Docs Site Checks on: + # No paths filter — the job must always run so the required check + # reports a status (path-gated workflows lea… | none | View full excerpt |
| acp_adapter/provenance.py | code_diff | git_diff | @@ -0,0 +1,127 @@ +"""Derive ACP session-provenance metadata from the existing compression chain. + +This is an additive Hermes extension surfaced under ACP ``… | none | View full excerpt |
| — | pr_metadata | pr_metadata | fix(dashboard): tighten skill detail dialog spacing ## Summary Tightens the spacing and placement in the Skills hub browser's skill-detail dialog — a polish fo… | none | View full excerpt |
| — | pr_metadata | pr_metadata | fix(install): scope npm installs/audits to avoid pulling in apps/desktop (#38358) ## Summary `hermes update` / `hermes web` / `hermes tui` now scope their npm … | none | View full excerpt |
| .github/workflows/lint.yml | code_diff | git_diff | @@ -15,12 +15,12 @@ on: - "**/*.md" - "docs/**" - "website/**" + + # No paths filter — the job must always run so the required check + # reports a status (path… | none | View full excerpt |
| .github/workflows/nix-lockfile-fix.yml | code_diff | git_diff | @@ -1,254 +0,0 @@ -name: Nix Lockfile Fix - -on: - push: - branches: [main] - paths: - - 'package-lock.json' - - 'package.json' - - 'ui-tui/package.json' - - '… | none | View full excerpt |
| .github/workflows/nix.yml | code_diff | git_diff | @@ -1,105 +0,0 @@ -name: Nix - -on: - push: - branches: [main] - pull_request: - -permissions: - contents: read - pull-requests: write - -concurrency: - group:… | none | View full excerpt |
| .github/workflows/skills-index.yml | code_diff | git_diff | @@ -53,4 +53,4 @@ jobs: - name: Trigger Deploy Site workflow env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh workflow run deploy-site.yml --repo ${{ githu… | none | View full excerpt |
| .github/workflows/supply-chain-audit.yml | code_diff | git_diff | @@ -1,11 +1,11 @@ name: Supply Chain Audit on: - pull_request: - types: [opened, synchronize, reopened] # No paths filter — the jobs must always run so require… | none | View full excerpt |
| .github/workflows/tests.yml | code_diff | git_diff | @@ -4,13 +4,13 @@ on: push: branches: [main] paths-ignore: - - '**/*.md' - - 'docs/**' + - "**/*.md" + - "docs/**" + # No paths filter — the job must always ru… | none | View full excerpt |
| — | pr_metadata | pr_metadata | feat(desktop): run tool backend post-setup installs from the GUI ## Summary The Electron desktop app can now run a tool backend's one-time install hook directl… | none | View full excerpt |
| — | pr_metadata | pr_metadata | fix(skills): block path traversal via skill_view name argument ## Summary Blocks path traversal through the `skill_view` `name` argument. Closes #38643. `skill… | none | View full excerpt |
| AGENTS.md | code_diff | git_diff | @@ -4,6 +4,201 @@ Instructions for AI coding assistants and developers working on the hermes-agent **Never give up on the right solution.** +## What Hermes Is … | none | View full excerpt |
| CONTRIBUTING.md | code_diff | git_diff | @@ -78,7 +78,41 @@ This isn't a quality bar — it's a coupling-and-maintenance decision. Memory pr | **uv** | Fast Python package manager ([install](https://doc… | none | View full excerpt |
| Dockerfile | code_diff | git_diff | @@ -9,8 +9,11 @@ FROM ghcr.io/astral-sh/uv:0.11.6-python3.13-trixie@sha256:b3c543b6c4f23a5f2df228 FROM node:22-bookworm-slim@sha256:7af03b14a13c8cdd38e45058fd9… | none | View full excerpt |
| MANIFEST.in | code_diff | git_diff | @@ -1,5 +1,6 @@ graft skills graft optional-skills +graft optional-mcps graft locales # Bundled plugin manifests (plugin.yaml / plugin.yml). Without these the … | none | View full excerpt |
| README.md | code_diff | git_diff | @@ -3,13 +3,16 @@ </p> # Hermes Agent ☤ - +<p align="center"> + <a href="https://hermes-agent.nousresearch.com/">Hermes Agent</a> | <a href="https://hermes-age… | none | View full excerpt |
| README.ur-pk.md | code_diff | git_diff | @@ -0,0 +1,261 @@ +<div dir="rtl"> + +<p align="center"> + <img src="assets/banner.png" alt="Hermes Agent" width="100%"> +</p> + +# ہرمیس ایجنٹ ☤ (Hermes Agent… | none | View full excerpt |
| README.zh-CN.md | code_diff | git_diff | @@ -10,6 +10,7 @@ <a href="https://github.com/NousResearch/hermes-agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-t… | none | View full excerpt |
| SECURITY.md | code_diff | git_diff | @@ -121,10 +121,11 @@ outside the supported security posture. ### 2.3 Credential Scoping Hermes Agent filters the environment it passes to its lower-trust -in-… | none | View full excerpt |
| — | pr_metadata | pr_metadata | fix(osv_check): honor npx --package/-p install target when parsing package arg ## Summary Makes the OSV malware check inspect the package npx actually installs… | none | View full excerpt |
| @@ -1,254 +0,0 @@ -name: Nix Lockfile Fix - -on: - push: - branches: [main] - paths: - - 'package-lock.json' - - 'package.json' - - 'ui-tui/package.json' - - '… |
| — |
| — |
| .github/workflows/nix.yml | @@ -1,105 +0,0 @@ -name: Nix - -on: - push: - branches: [main] - pull_request: - -permissions: - contents: read - pull-requests: write - -concurrency: - group:… | — | — |
| .github/workflows/skills-index.yml | @@ -53,4 +53,4 @@ jobs: - name: Trigger Deploy Site workflow env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh workflow run deploy-site.yml --repo ${{ githu… | — | — |
| .github/workflows/supply-chain-audit.yml | @@ -1,11 +1,11 @@ name: Supply Chain Audit on: - pull_request: - types: [opened, synchronize, reopened] # No paths filter — the jobs must always run so require… | — | — |
| .github/workflows/tests.yml | @@ -4,13 +4,13 @@ on: push: branches: [main] paths-ignore: - - '**/*.md' - - 'docs/**' + - "**/*.md" + - "docs/**" + # No paths filter — the job must always ru… | — | — |
| AGENTS.md | @@ -4,6 +4,201 @@ Instructions for AI coding assistants and developers working on the hermes-agent **Never give up on the right solution.** +## What Hermes Is … | — | — |
| CONTRIBUTING.md | @@ -78,7 +78,41 @@ This isn't a quality bar — it's a coupling-and-maintenance decision. Memory pr | **uv** | Fast Python package manager ([install](https://doc… | — | — |
| Dockerfile | @@ -9,8 +9,11 @@ FROM ghcr.io/astral-sh/uv:0.11.6-python3.13-trixie@sha256:b3c543b6c4f23a5f2df228 FROM node:22-bookworm-slim@sha256:7af03b14a13c8cdd38e45058fd9… | — | — |
| MANIFEST.in | @@ -1,5 +1,6 @@ graft skills graft optional-skills +graft optional-mcps graft locales # Bundled plugin manifests (plugin.yaml / plugin.yml). Without these the … | — | — |
| README.md | @@ -3,13 +3,16 @@ </p> # Hermes Agent ☤ - +<p align="center"> + <a href="https://hermes-agent.nousresearch.com/">Hermes Agent</a> | <a href="https://hermes-age… | — | — |
| README.ur-pk.md | @@ -0,0 +1,261 @@ +<div dir="rtl"> + +<p align="center"> + <img src="assets/banner.png" alt="Hermes Agent" width="100%"> +</p> + +# ہرمیس ایجنٹ ☤ (Hermes Agent… | — | — |
| README.zh-CN.md | @@ -10,6 +10,7 @@ <a href="https://github.com/NousResearch/hermes-agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-t… | — | — |
| SECURITY.md | @@ -121,10 +121,11 @@ outside the supported security posture. ### 2.3 Credential Scoping Hermes Agent filters the environment it passes to its lower-trust -in-… | — | — |
| agent/auxiliary_client.py | @@ -102,7 +102,7 @@ def __repr__(self): from agent.credential_pool import load_pool from hermes_cli.config import get_hermes_home from hermes_constants import … | — | — |
| agent/coding_context.py | @@ -0,0 +1,738 @@ +"""Coding-context awareness — base Hermes, every interactive surface. + +When the user runs Hermes inside a code workspace (CLI, TUI, deskto… | — | — |
| agent/context_compressor.py | @@ -7,7 +7,7 @@ Improvements over v2: - Structured summary template with Resolved/Pending question tracking - Filter-safe summarizer preamble that treats prior… | — | — |
| agent/account_usage.py | @@ -1,15 +1,22 @@ from __future__ import annotations +import logging +import math from dataclasses import dataclass from datetime import datetime, timezone -fr… | — | — |
| agent/agent_init.py | @@ -27,7 +27,7 @@ import time import uuid from datetime import datetime -from typing import Any, Dict, List, Optional +from typing import Any, Callable, Dict, … | — | — |
| agent/agent_runtime_helpers.py | @@ -32,6 +32,7 @@ from typing import Any, Dict, List, Optional from hermes_cli.timeouts import get_provider_request_timeout +from agent.prompt_builder import f… | — | — |
| agent/anthropic_adapter.py | @@ -73,27 +73,59 @@ def _get_anthropic_sdk(): "minimal": "low", } -# Models that accept the "xhigh" output_config.effort level. Opus 4.7 added -# xhigh as a di… | — | — |
| agent/background_review.py | @@ -237,18 +237,25 @@ def summarize_background_review_actions( review_messages: List[Dict], prior_snapshot: List[Dict], + notification_mode: str = "on", ) -> L… | — | — |
| agent/bedrock_adapter.py | @@ -58,17 +58,34 @@ _bedrock_control_client_cache: Dict[str, Any] = {} +_MIN_BOTO3_VERSION = (1, 34, 59) + + def _require_boto3(): - """Import boto3, raising a… | — | — |
| agent/billing_view.py | @@ -0,0 +1,295 @@ +"""Surface-agnostic core for the Phase 2b terminal-billing screens. + +One fetch/parse per concern, consumed identically by the CLI handler … | — | — |
| agent/chat_completion_helpers.py | @@ -34,7 +34,7 @@ _repair_tool_call_arguments, ) from tools.terminal_tool import is_persistent_env -from utils import base_url_host_matches, base_url_hostname … | — | — |
| agent/codex_responses_adapter.py | @@ -127,14 +127,21 @@ def _chat_content_to_responses_parts(content: Any, *, role: str = "user") -> Lis return converted -def _summarize_user_message_for_log(co… | — | — |
| agent/codex_runtime.py | @@ -25,6 +25,154 @@ logger = logging.getLogger(__name__) +def _coerce_usage_int(value: Any) -> int: + if isinstance(value, bool): + return 0 + if isinstance(va… | — | — |
| apps/desktop/electron/dashboard-token.cjs | @@ -0,0 +1,99 @@ +/** + * Helpers for local dashboard session-token discovery. + * + * The desktop main process can pass HERMES_DASHBOARD_SESSION_TOKEN when it… | — | — |
| agent/conversation_loop.py | @@ -31,6 +31,8 @@ from agent.display import KawaiiSpinner from agent.error_classifier import FailoverReason, classify_api_error from agent.iteration_budget imp… | — | — |
| agent/credits_tracker.py | @@ -0,0 +1,794 @@ +"""Credits tracking for Nous inference API responses. + +Parses x-nous-credits-* (and optional x-nous-tool-pool-*) headers from +inference r… | — | — |
| agent/conversation_compression.py | @@ -40,6 +40,16 @@ logger = logging.getLogger(__name__) +# Stable marker the gateway matches on to re-tag the auto-compaction lifecycle +# status as ``kind="co… | — | — |
| agent/copilot_acp_client.py | @@ -70,16 +70,6 @@ def _resolve_args() -> list[str]: def _resolve_home_dir() -> str: """Return a stable HOME for child ACP processes.""" - - try: - from hermes… | — | — |
| agent/credential_pool.py | @@ -15,6 +15,7 @@ from hermes_constants import OPENROUTER_BASE_URL from hermes_cli.config import load_env +from agent.secret_scope import get_secret as _get_se… | — | — |
| agent/curator.py | @@ -25,14 +25,14 @@ import logging import os import re -import tempfile import threading from datetime import datetime, timedelta, timezone from pathlib import… | — | — |
| agent/curator_backup.py | @@ -46,7 +46,7 @@ import tarfile from datetime import datetime, timezone from pathlib import Path -from typing import Any, Dict, List, Optional, Tuple +from ty… | — | — |
| apps/desktop/electron/dashboard-token.test.cjs | @@ -0,0 +1,142 @@ +/** + * Tests for electron/dashboard-token.cjs. + * + * Run with: node --test electron/dashboard-token.test.cjs + * (Wired into npm test:des… | — | — |
| apps/desktop/electron/desktop-uninstall.cjs | @@ -0,0 +1,232 @@ +/** + * desktop-uninstall.cjs + * + * Pure, electron-free helpers for the desktop Chat GUI uninstaller. These map + * the three user-facing … | — | — |
| agent/error_classifier.py | @@ -549,14 +549,32 @@ def _result(reason: FailoverReason, **overrides) -> ClassifiedError: should_fallback=True, ) - # Anthropic thinking block signature inval… | — | — |
| agent/errors.py | @@ -0,0 +1,3 @@ +class SSLConfigurationError(Exception): + """Raised when SSL/TLS certificate bundle configuration fails.""" + pass | — | — |
| agent/gemini_native_adapter.py | @@ -41,6 +41,16 @@ GEMINI_DEFAULT_MAX_OUTPUT_TOKENS = 65535 +def bare_gemini_model_id(model: str) -> str: + """Strip Gemini's own provider prefix from an aggre… | — | — |
| agent/image_gen_provider.py | @@ -11,6 +11,18 @@ as ``kind: backend``) or ``~/.hermes/plugins/image_gen/<name>/`` (user, opt-in via ``plugins.enabled``). +Unified surface +--------------- +… | — | — |
| agent/insights.py | @@ -20,23 +20,17 @@ import time from collections import Counter, defaultdict from datetime import datetime -from typing import Any, Dict, List +from typing imp… | — | — |
| agent/memory_manager.py | @@ -28,13 +28,82 @@ import logging import re import inspect +import threading +from concurrent.futures import ThreadPoolExecutor from typing import Any, Dict, … | — | — |
| agent/model_metadata.py | @@ -5,6 +5,7 @@ """ import ipaddress +import json import logging import os import re @@ -16,7 +17,7 @@ import requests import yaml -from utils import base_url_… | — | — |
| agent/moonshot_schema.py | @@ -135,7 +135,14 @@ def _repair_schema(node: Any, is_schema: bool = True) -> Any: def _fill_missing_type(node: Dict[str, Any]) -> Dict[str, Any]: """Infer a r… | — | — |
| agent/onboarding.py | @@ -26,6 +26,7 @@ BUSY_INPUT_FLAG = "busy_input_prompt" TOOL_PROGRESS_FLAG = "tool_progress_prompt" OPENCLAW_RESIDUE_FLAG = "openclaw_residue_cleanup" +PROFILE… | — | — |
| agent/prompt_builder.py | @@ -8,6 +8,7 @@ import logging import os import threading +import contextvars from collections import OrderedDict from pathlib import Path @@ -304,6 +305,47 @@… | — | — |
| agent/redact.py | @@ -104,6 +104,7 @@ r"mem0_[A-Za-z0-9]{10,}", # Mem0 Platform API key r"brv_[A-Za-z0-9]{10,}", # ByteRover API key r"xai-[A-Za-z0-9]{30,}", # xAI (Grok) API ke… | — | — |
| agent/secret_scope.py | @@ -0,0 +1,205 @@ +"""Profile-scoped credential resolution for multi-profile gateway multiplexing. + +The multiplexing gateway serves many profiles from one pr… | — | — |
| apps/desktop/electron/desktop-uninstall.test.cjs | @@ -0,0 +1,246 @@ +/** + * Tests for electron/desktop-uninstall.cjs. + * + * Run with: node --test electron/desktop-uninstall.test.cjs + * (Wired into npm test… | — | — |
| agent/tool_executor.py | @@ -70,6 +70,7 @@ def _emit_terminal_post_tool_call( status: str | None = None, error_type: str | None = None, error_message: str | None = None, + middleware_t… | — | — |
| agent/skill_commands.py | @@ -26,6 +26,91 @@ _SKILL_INVALID_CHARS = re.compile(r"[^a-z0-9-]") _SKILL_MULTI_HYPHEN = re.compile(r"-{2,}") +# ---------------------------------------------… | — | — |
| agent/skill_preprocessing.py | @@ -74,6 +74,7 @@ def run_inline_shell(command: str, cwd: Path | None, timeout: int) -> str: text=True, timeout=max(1, int(timeout)), check=False, + stdin=subp… | — | — |
| agent/skill_utils.py | @@ -43,14 +43,20 @@ ) ) +# Supporting files live inside a skill package and are loaded explicitly via +# skill_view(skill, file_path=...). They are not standal… | — | — |
| agent/ssl_guard.py | @@ -0,0 +1,94 @@ +"""Preventive SSL CA certificate checks for Hermes Agent. + +This module catches broken CA bundle paths before OpenAI/httpx turns them into +… | — | — |
| agent/system_prompt.py | @@ -33,12 +33,15 @@ KANBAN_GUIDANCE, MEMORY_GUIDANCE, OPENAI_MODEL_EXECUTION_GUIDANCE, + PARALLEL_TOOL_CALL_GUIDANCE, PLATFORM_HINTS, SESSION_SEARCH_GUIDANCE, … | — | — |
| agent/transports/anthropic.py | @@ -84,39 +84,73 @@ def normalize_response(self, response: Any, **kwargs) -> NormalizedResponse: to OpenAI finish_reason, and collects reasoning_details in pro… | — | — |
| agent/transports/chat_completions.py | @@ -531,6 +531,7 @@ def _build_kwargs_from_profile(self, profile, model, sanitized, tools, params): supports_reasoning=params.get("supports_reasoning", False),… | — | — |
| agent/transports/codex.py | @@ -128,6 +128,65 @@ def build_kwargs( reasoning_effort = _effort_clamp.get(reasoning_effort, reasoning_effort) response_tools = _responses_tools(tools) + + # … | — | — |
| agent/transports/codex_app_server.py | @@ -378,6 +378,7 @@ def check_codex_binary( capture_output=True, text=True, timeout=10, + stdin=subprocess.DEVNULL, ) except FileNotFoundError: return False, ( | — | — |
| agent/transports/types.py | @@ -121,6 +121,18 @@ def reasoning_details(self): pd = self.provider_data or {} return pd.get("reasoning_details") + @property + def anthropic_content_blocks(s… | — | — |
| agent/turn_context.py | @@ -0,0 +1,408 @@ +"""Per-turn setup for ``run_conversation`` (the turn prologue). + +``run_conversation`` opened with ~470 lines of straight-line setup before… | — | — |
| agent/turn_finalizer.py | @@ -0,0 +1,428 @@ +"""Post-loop turn finalization for ``run_conversation``. + +Extracted from ``agent/conversation_loop.py`` as part of the god-file +decomposi… | — | — |
| agent/turn_retry_state.py | @@ -0,0 +1,68 @@ +"""Per-attempt recovery bookkeeping for the conversation turn loop. + +The inner retry loop in ``run_conversation`` (``while retry_count < +m… | — | — |
| apps/bootstrap-installer/package.json | @@ -11,11 +11,12 @@ "tauri": "tauri", "tauri:dev": "tauri dev", "tauri:build": "tauri build", - "tauri:build:debug": "tauri build --debug" + "tauri:build:debug… | — | — |
| apps/bootstrap-installer/src-tauri/src/powershell.rs | @@ -72,7 +72,7 @@ pub async fn run_script( let mut child: Child = cmd .spawn() - .with_context(|| format!("spawning {}", script_path.display()))?; + .with_cont… | — | — |
| apps/bootstrap-installer/src-tauri/src/update.rs | @@ -3,8 +3,9 @@ //! Driven when the installer is launched as `Hermes-Setup.exe --update` (see //! `AppMode` in lib.rs). The desktop app hands off to us — it ex… | — | — |
| apps/bootstrap-installer/tsconfig.json | @@ -1,8 +1,8 @@ { "compilerOptions": { - "target": "ES2022", + "target": "ES2023", "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"],… | — | — |
| apps/desktop/DESIGN.md | @@ -0,0 +1,167 @@ +# Desktop Design System + +Conventions for the Electron desktop app (`apps/desktop`). Read this before +adding a component, overlay, or styl… | — | — |
| apps/desktop/README.md | @@ -34,7 +34,7 @@ It builds and launches the GUI against your existing install — same config, ke ### Prebuilt installers -Prebuilt installers are built and dis… | — | — |
| apps/desktop/electron/connection-config.test.cjs | @@ -24,6 +24,7 @@ const { cookiesHaveLiveSession, normAuthMode, normalizeRemoteBaseUrl, + pathWithGlobalRemoteProfile, profileRemoteOverride, resolveAuthMode, … | — | — |
| apps/desktop/electron/backend-ready.cjs | @@ -0,0 +1,66 @@ +const _READY_RE = /^HERMES_DASHBOARD_READY port=(\d+)/m + +/** + * Watch a child process's stdout for the `HERMES_DASHBOARD_READY port=<N>` +… | — | — |
| apps/desktop/electron/bootstrap-runner.cjs | @@ -40,6 +40,15 @@ const path = require('node:path') const https = require('node:https') const { spawn } = require('node:child_process') +const IS_WINDOWS = pr… | — | — |
| apps/desktop/electron/bootstrap-runner.test.cjs | @@ -1,7 +1,21 @@ const assert = require('node:assert/strict') const test = require('node:test') +const fs = require('node:fs') +const os = require('node:os') +… | — | — |
| apps/desktop/electron/fs-read-dir.test.cjs | @@ -0,0 +1,364 @@ +'use strict' + +const assert = require('node:assert/strict') +const fs = require('node:fs') +const os = require('node:os') +const path = req… | — | — |
| apps/desktop/electron/git-root.cjs | @@ -0,0 +1,54 @@ +'use strict' + +const fs = require('node:fs') +const path = require('node:path') +const { resolveRequestedPathForIpc } = require('./hardening… | — | — |
| apps/desktop/electron/git-root.test.cjs | @@ -0,0 +1,40 @@ +'use strict' + +const assert = require('node:assert/strict') +const fs = require('node:fs') +const os = require('node:os') +const path = requ… | — | — |
| apps/desktop/electron/git-worktrees.cjs | @@ -0,0 +1,174 @@ +'use strict' + +// Resolve git-worktree relationships for a set of session cwds, reading git's +// on-disk metadata directly (no `git` spawn… | — | — |
| apps/desktop/electron/hardening.cjs | @@ -1,4 +1,5 @@ const fs = require('node:fs') +const os = require('node:os') const path = require('node:path') const { fileURLToPath } = require('node:url') @@… | — | — |
| apps/desktop/electron/hardening.test.cjs | @@ -8,11 +8,20 @@ const { pathToFileURL } = require('node:url') const { DEFAULT_FETCH_TIMEOUT_MS, encryptDesktopSecret, + resolveDirectoryForIpc, resolveReadab… | — | — |
| File | Redacted excerpt | Confidence | Line |
|---|---|---|---|
| — | feat(cli): display custom profile alias names in profile list/show ## Summary `hermes profile list` and `hermes profile show` assumed a profile's wrapper scrip… | 100% | — |
| — | fix(dashboard): tighten skill detail dialog spacing ## Summary Tightens the spacing and placement in the Skills hub browser's skill-detail dialog — a polish fo… | 100% | — |
| — | fix(install): scope npm installs/audits to avoid pulling in apps/desktop (#38358) ## Summary `hermes update` / `hermes web` / `hermes tui` now scope their npm … | 100% | — |
| — | feat(desktop): run tool backend post-setup installs from the GUI ## Summary The Electron desktop app can now run a tool backend's one-time install hook directl… | 100% | — |
| — | fix(skills): block path traversal via skill_view name argument ## Summary Blocks path traversal through the `skill_view` `name` argument. Closes #38643. `skill… | 100% | — |
| — | fix(osv_check): honor npx --package/-p install target when parsing package arg ## Summary Makes the OSV malware check inspect the package npx actually installs… | 100% | — |
| — | fix(bitwarden): prevent zip-slip path traversal when extracting bws binary ## Summary Prevents zip-slip when extracting the Bitwarden `bws` binary. `bitwarden.… | 100% | — |
| — | fix(tui): only patch liveSessionCount when it changes to stop idle re-render flicker ## Summary Stops idle TUI flicker by only patching `liveSessionCount` when… | 100% | — |
| — | fix(config): preserve custom-provider models maps and metadata through v11->v12 migration ## Summary Stops the v11→v12 config migration from silently dropping … | 100% | — |
| — | fix(gateway): tolerate Unicode in stderr log handlers on Windows (#40432) ## Summary Stops the gateway from crashing with `UnicodeEncodeError` on Windows legac… | 100% | — |
| — | fix: add timeouts to hang-prone subprocess calls (transcription, update worker) ## Summary Adds timeouts to subprocess calls that could otherwise hang indefini… | 100% | — |
| — | fix(compression): preserve -1 post-compression sentinel to stop re-fire (#36718) ## Summary Stops compression from re-firing immediately after a fresh compress… | 100% | — |
| — | fix: guard empty streams + parse OpenRouter output-cap errors ## Summary Two isolated reliability fixes carved out of #40405: 1. **Zero-chunk stream guard** (`… | 100% | — |
| — | fix(security): close shell-escape denylist bypass + fail-closed on missing approval module (#36846, #36847) ## Summary Closes two ways to bypass dangerous-comm… | 100% | — |
| — | fix(research): keep tool_call/tool_response pairs intact when compressing trajectories ## Summary Prevents the offline trajectory compressor from splitting a `… | 100% | — |
| — | refactor(gateway): migrate Home Assistant adapter to bundled plugin ## Summary Migrates the Home Assistant gateway adapter out of `gateway/platforms/homeassist… | 100% | — |
| — | chore(gateway): drop plugin-migrated platforms from /update allowlist ## Summary Drops `Platform.DISCORD` and `Platform.MATTERMOST` from the hardcoded `_UPDATE… | 100% | — |
| — | feat(middleware): add adaptive middleware to hermes-agent, consumed by NeMo-Relay ## What does this PR do? This PR adds the middleware half of the Hermes Agent… | 100% | — |
| — | test(kimi): align stale parity/profile tests with thinking-xor-effort contract ## Summary Main goes green again: two stale Kimi test files are realigned to the… | 100% | — |
| — | feat(credits): usage-aware credits — in-session notices, /usage view, dev readout ## What this adds Hermes now keeps an eye on your Nous credit balance while y… | 100% | — |
| — | Add desktop language switching for Japanese and Traditional Chinese <img width="1220" height="800" alt="image" src="https://github.com/user-attachments/assets/… | 100% | — |
| — | fix(desktop): show send button for committed IME text (Chinese/Japanese/Korean) Committed IME text (Chinese/Japanese/Korean) now makes the desktop send button … | 100% | — |
| — | docs(kanban): clarify orchestrator vs decomposer roles ## Summary Docs and dashboard now say what `kanban.orchestrator_profile` actually does: it owns the root… | 100% | — |
| — | fix(desktop): repair macOS updater helper ## What does this PR do? Repairs the staged macOS updater helper before Hermes Desktop hands off an in-app update to … | 100% | — |
| — | fix(desktop): reliable composer message queue ## What Make the desktop composer message queue actually reliable, and stop it from shoving the chat around. The … | 100% | — |
| — | fix(send-message): treat ntfy topic targets as explicit ## What does this PR do? Makes `send_message(target="ntfy:<topic>", ...)` route `<topic>` as an explici… | 100% | — |
| — | feat(desktop): arrow-key history + queue editing in composer ## What Adds arrow-key navigation to the composer — sent-message history recall **and** in-place e… | 100% | — |
| — | fix(secrets): fail early with clear error when bitwarden setup runs without TTY ## Summary Bitwarden `cmd_setup` now fails with a clear error in non-TTY mode i… | 100% | — |
| — | docs: align runtime footer field docs ## What does this PR do? Aligns the runtime footer docs and CLI tip with the current gateway footer implementation. The g… | 100% | — |
| — | feat(desktop): first-class cron jobs in the sidebar + dashboard scheduler ## Summary <img width="243" height="260" alt="Screenshot 2026-06-06 at 16 19 54" src=… | 100% | — |
| — | feat: usable mid-turn steer — desktop affordance + trusted injection Makes `/steer` (nudge the agent mid-turn without interrupting) actually usable: a first-cl… | 100% | — |
| — | feat(desktop): warn when main-model switch leaves auxiliary tasks pinned to another provider ## Summary Switching the main model in the desktop app now warns w… | 100% | — |
| — | fix(desktop): About panel shows live Hermes version, not stale package.json ## Summary The desktop "About Hermes" panel now shows the live Hermes version inste… | 100% | — |
| — | feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) ## Summary You can now uninstall the desktop Chat GUI without touching the Hermes ag… | 100% | — |
| — | feat(dashboard): rehaul Skills hub browser — connected hubs, featured, preview + security scan ## Summary The dashboard's **Browse hub** tab (Skills page) goes… | 100% | — |
| — | fix(cli): quarantine running hermes.exe during update dep-verification repair on Windows ## Problem On Windows, `hermes update` can leave the user with `hermes… | 100% | — |
| — | feat(dashboard): full tool backend configuration in the GUI ## Summary The dashboard can now fully configure every tool backend the way `hermes tools` does — p… | 100% | — |
| — | UI tweaks: conversation rhythm + flat tool list + smooth streaming (and earlier fixes) ## What A bundle of desktop chat UI fixes. The original three (shadows /… | 100% | — |
| — | fix(desktop): survive version skew + bound/reclaim desktop.log (supersedes #40674) Supersedes #40674 — keeps both of @TheGardenGallery's original commits verba… | 100% | — |
| — | feat(desktop): unified overlay design system, BrandMark & onboarding redesign ## Summary Started as "put every dialog/overlay button on the shared `Button`" an… | 100% | — |
| — | fix(langfuse): restore usage/cost when post_api_request sends a sanitized response ## What does this PR do? The bundled Langfuse plugin stopped recording token… | 100% | — |
| — | feat(desktop): surface every provider + models from `hermes model` in the GUI menus ## Summary Every provider + their models that the `hermes model` CLI expose… | 100% | — |
| — | fix(skill_manager): allow SKILL.md in _validate_file_path without weakening traversal guard ## Summary Lets `skill_manager` write/patch the canonical `SKILL.md… | 100% | — |
| — | fix(cua-driver): reconnect MCP stdio session once on ClosedResourceError after daemon restart ## Summary Reconnects the cua-driver MCP stdio session once after… | 100% | — |
| — | fix(qqbot): stop 100% CPU spin when WebSocket is closed but not None (#31193, #31771) ## Summary Fixes a 100% CPU busy-loop in the QQ bot adapter when the WebS… | 100% | — |
| — | fix(agent): import SimpleNamespace for hook payload sanitization ## Summary Fixes a `NameError` that silently kills observability hooks for Bedrock, Codex-resp… | 100% | — |
| — | fix(gateway): user launchd domain + Background session, detached fallback (macOS 26) ## Summary Closes #23387. Supersedes #24275 — salvages its primary fix and… | 100% | — |
| — | fix(cli): return bool when destructive-slash confirmation is cancelled ## Summary `process_command()` is typed `-> bool`, but the `/clear`, `/new`, and `/undo`… | 100% | — |
| — | fix(install): detect TLS cert-trust failures during npm install on Windows ## Summary Windows installs that fail on a corporate proxy now tell the user it's a … | 100% | — |
| — | fix(credits): grant-spent notice yields on the next prompt ## What The "grant spent" status-bar notice now flashes once and clears on your next message, instea… | 100% | — |
| File | Redacted excerpt | Confidence | Line |
|---|---|---|---|
| AGENTS.md | "Smallest footprint" governs *how a capability is wired into the core*, NOT | 50% | 48 |
| AGENTS.md | 4. **Plugin** — third-party/niche/user-specific capability that doesn't ship in | 50% | 185 |
| AGENTS.md | Before adding any tool, settle the footprint question first (see "The | 50% | 500 |
| AGENTS.md | cluster out of `cli.py` / `run_agent.py` / `gateway/run.py` into a focused | 50% | 66 |
| AGENTS.md | - **Per-conversation prompt caching is sacred.** A long-lived conversation | 50% | 19 |
| AGENTS.md | change-detector tests." | 50% | 83 |
| AGENTS.md | - **E2E validation, not just green unit mocks.** For anything touching | 50% | 84 |
| AGENTS.md | on it is hard. A hook is NOT speculative if a contributor has a real, stated | 50% | 100 |
| AGENTS.md | feature's purpose is the wrong mitigation. Read the original commit's intent | 50% | 115 |
| AGENTS.md | reuses a cached prefix every turn. Anything that mutates past context, | 50% | 20 |
| AGENTS.md | PR is NOT safe to close as `implemented_on_main` / `cannot_reproduce` (when in | 50% | 133 |
| CONTRIBUTING.md | Add dev/test extras on top of the standard install. | 70% | 95 |
| CONTRIBUTING.md | Use this only if you intentionally do not want Hermes' managed install layout | 50% | 111 |
| AGENTS.md | bucket we've already proven empty); a usage-accumulation fix whose new branch | 50% | 149 |
| AGENTS.md | writing or merging a fix.** A confirmed reproduction on current `main` plus a | 50% | 166 |
| README.md | <a href="https://hermes-agent.nousresearch.com/">Hermes Agent</a> | <a href="https://hermes-agent.nousresearch.com/">Hermes Desktop</a> | 50% | 7 |
| README.ur-pk.md | ہرمیس ایجنٹ ☤ (Hermes Agent) | 70% | 7 |
| README.ur-pk.md | | [ٹولز اور ٹول سیٹس](https://hermes-agent.nousresearch.com/docs/user-guide/features/tools) | 40 سے زائد ٹولز، ٹول سیٹ سسٹم، ٹرمینل بیک اینڈز | | 50% | 163 |
| README.ur-pk.md | **پہلی بار سیٹ اپ کے دوران:** سیٹ اپ وزرڈ (`hermes setup`) خود بخود `~/.openclaw` کو پہچان لیتا ہے اور کنفیگریشن شروع ہونے سے پہلے مائیگریٹ (migrate) کرنے کا آ… | 50% | 182 |
| apps/desktop/DESIGN.md | - **Rows:** `ListRow` (settings `primitives.tsx`) for label/description/action | 50% | 94 |
| apps/desktop/DESIGN.md | - **`Codicon`** is the icon set. No mixing icon libraries inline. | 50% | 114 |
| apps/desktop/DESIGN.md | in `en.ts` that skips the others is a regression (drifted punctuation, | 50% | 133 |
| README.ur-pk.md | <a href="https://github.com/NousResearch/hermes-agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="Lic… | 50% | 12 |
| README.ur-pk.md | <tr><td><b>سیکھنے کا ایک مکمل عمل</b></td><td>ایجنٹ کی اپنی ترتیب دی گئی میموری، جس میں وہ خود کو وقتاً فوقتاً یاد دہانی کرواتا ہے۔ پیچیدہ کاموں کے بعد خود کار… | 50% | 25 |
| README.ur-pk.md | iex (irm https://hermes-agent.nousresearch.com/install.ps1) | 50% | 55 |
| README.ur-pk.md | انسٹالر سب کچھ خود سنبھالتا ہے: uv، Python 3.11، Node.js، ripgrep، ffmpeg، **اور ایک پورٹ ایبل (portable) گٹ بیش (Git Bash)** (یعنی MinGit، جو `%LOCALAPPDATA%\… | 50% | 60 |
| README.ur-pk.md | hermes gateway # میسجنگ گیٹ وے شروع کریں (ٹیلی گرام، ڈسکارڈ، وغیرہ) | 50% | 90 |
| README.ur-pk.md | ہرمیس آپ کے پسندیدہ پرووائیڈر کے ساتھ کام کرتا ہے — یہ چیز تبدیل نہیں ہو رہی۔ لیکن اگر آپ ماڈل، ویب سرچ، امیج جنریشن، TTS، اور کلاؤڈ براؤزر کے لیے پانچ الگ الگ… | 50% | 105 |
| README.ur-pk.md | آپ اب بھی کسی بھی ٹول کے لیے اپنی مرضی کی API کیز استعمال کر سکتے ہیں — گیٹ وے ہر سروس کے لیے الگ الگ کام کرتا ہے، ایسا نہیں کہ یا تو سب کچھ استعمال کریں یا کچ… | 50% | 122 |
| README.ur-pk.md | ہرمیس کے دو بنیادی انٹر فیس ہیں: آپ ٹرمینل UI کو `hermes` کے ساتھ شروع کریں، یا گیٹ وے چلا کر اس کے ساتھ ٹیلی گرام، ڈسکارڈ، سلیک، واٹس ایپ، سگنل، یا ای میل کے … | 50% | 128 |
| README.ur-pk.md | | موجودہ کام کو روکیں | `Ctrl+C` دبائیں یا نیا میسج بھیجیں | `/stop` یا نیا میسج بھیجیں | | 50% | 141 |
| README.ur-pk.md | - **ورک اسپیس کی ہدایات** — AGENTS.md (`--workspace-target` کے ساتھ) | 50% | 206 |
| AGENTS.md | swaps toolsets, or rebuilds the system prompt mid-conversation invalidates | 50% | 21 |
| AGENTS.md | that cache and multiplies the user's cost. We do not do it (the one | 50% | 22 |
| README.ur-pk.md | کمیونٹی (Community) | 70% | 245 |
| README.ur-pk.md | - 🔌 [computer-use-linux](https://github.com/avifenesh/computer-use-linux) — ہرمیس اور دیگر MCP ہوسٹس کے لیے لینکس (Linux) ڈیسک ٹاپ کنٹرول MCP سرور، جس میں AT-… | 50% | 250 |
| README.zh-CN.md | cd "${HERMES_HOME:-$HOME/.hermes}/hermes-agent" | 50% | 173 |
| README.zh-CN.md | 手动克隆备用路径(用于一次性 clone / CI,或你明确不想使用 managed install layout 时): | 50% | 178 |
| apps/desktop/DESIGN.md | Group with whitespace and a single hairline, never nested rounded boxes. | 50% | 12 |
| apps/desktop/DESIGN.md | Both are CSS vars in `src/styles.css` — tune in one place, everything inherits. | 50% | 34 |
| apps/desktop/DESIGN.md | Buttons — one component | 70% | 53 |
| apps/desktop/DESIGN.md | - `Esc` closes every dismissable overlay/dialog (install/onboarding excluded); | 50% | 154 |
| AGENTS.md | exception is context compression). | 50% | 23 |
| AGENTS.md | - **The core is a narrow waist; capability lives at the edges.** Every model | 50% | 24 |
| AGENTS.md | tool we add is sent on every API call, so the bar for a new *core* tool is | 50% | 25 |
| apps/desktop/DESIGN.md | - Polymorph with `asChild` when the button must render as a link/Slot. | 50% | 72 |
| File | Redacted excerpt | Confidence | Line |
|---|---|---|---|
| — | Regression: busy_input_mode=interrupt broken in v2026.5.29 (worked in v2026.5.16) ## Problem After updating from v2026.5.16 to v2026.5.29.2, the `busy_input_mo… | 100% | — |
| — | perf(mcp): skip HTTP preflight probe on reconnect ## Problem `MCPServerTask.run()` performs a content-type preflight probe (`_preflight_content_type`) before e… | 100% | — |
| — | Missing GPT-5.5 model support across provider catalog, Codex image-gen default, tests, and docs ## Problem GPT-5.5 has been released, but hermes-agent does not… | 100% | — |
| — | Bug: busy_input_mode: queue silently drops messages — single-slot overwrite instead of FIFO Summary When busy_input_mode: queue is configured, Hermes is suppos… | 100% | — |
| — | [Bug]: Sending a message while delegate_task is running kills the subagent — interrupt propagates unconditionally to children ## Bug Description When a user se… | 100% | — |
| — | [Bug]: The external tool with conflicting name still affects the tool call procedures. ### Bug Description Hermes ignores the external tool with conflicting na… | 100% | — |
| — | [Bug]: Emoji in Hermes Desktop not showing correctly ### Bug Description Emoji aren't shown correctly in Hermes Desktop. Not sure if this happens on all platfo… | 100% | — |
| — | delegate_task crashes when tool message content is a list ## Bug description Thanks for all the work on `delegate_task` and the recent tool trace improvements.… | 100% | — |
| — | _build_web_ui() npm install missing --workspace web flag breaks "hermes update" on multi-workspace repos ## Description Running `hermes update` on Windows repo… | 100% | — |
| — | [Bug]: Root package.json workspaces glob unconditionally pulls apps/desktop (and bootstrap-installer) into every unscoped npm command ### Bug Description Bug D… | 100% | — |
| — | [Security] Hermes `skill_view` name traversal discloses files outside the trusted skills directory ### Advisory Details **Title**: Hermes `skill_view` name tra… | 100% | — |
| — | QQ Bot Reconnect Busy Loop Causes 100% CPU Spin # QQ Bot Reconnect Busy Loop Causes 100% CPU Spin **Version**: 0.14.0 **Python**: 3.11.15 **aiohttp**: 3.13.4 *… | 100% | — |
| — | [Bug]: QQBot adapter busy-loops after WebSocket reconnect failure, causing 100% CPU ### Bug Description Hermes Gateway can enter a sustained high-CPU busy loop… | 100% | — |
| — | Windows gateway logging should tolerate Unicode in rotating log handlers # GitHub Issue Draft (English) Title: Windows gateway logging should tolerate Unicode … | 100% | — |
| — | [Bug]: macOS 26.4.1: hermes gateway start fails — launchctl kickstart gui/502 returns error 125 (Domain does not support specified action) ## Bug Description O… | 100% | — |
| — | Bug: Context compression triggers repeatedly after fresh compress — last_prompt_tokens=-1 not updated until next API call ## Problem After context compression … | 100% | — |
| — | [Setup]: Hermes Desktop failed on Windows 11 without admin right ### What's Going Wrong? Hi I try to install hermes desktop in a windows 11, without admin righ… | 100% | — |
| File | Redacted excerpt | Confidence | Line |
|---|---|---|---|
| apps/desktop/src/app/chat/sidebar/workspace-groups.test.ts | apps/desktop/src/app/chat/sidebar/workspace-groups.test.ts | 60% | — |
| File | Redacted excerpt | Confidence | Line |
|---|---|---|---|
| agent/account_usage.py | Nous credits | 80% | 224 |