feat(desktop): plugins install in one click from hermes:// deeplinks, confirm-first (salvage #82735) - #89464
Merged
Conversation
૮ >ﻌ< ა ci reviewran on 999cd3a — feat(desktop): one-click plugin install via hermes:// deepli
|
Adds a reviewable in-app install path for Hermes plugins: hermes://plugin/install?repo=owner/repo (and Settings -> Plugins -> Install from Git) opens a confirmation modal showing the repo identity and source links, shallow-clones to probe for agent and/or desktop plugin artifacts, lets the user pick components, then installs — agent side through the gateway's new plugins.manage `install` action (wrapping the existing dashboard_install_plugin), desktop side through a new Electron git-install module with subdir-escape guards, a 60s clone timeout, non-interactive git env, and insecure-scheme warnings. Never auto-installs; hybrid repos get one dialog. Legacy plugin-agent / plugin-desktop deeplinks route into the same modal. Salvaged from PR #82735 by @serefyarar (net diff applied onto current main as a single authored commit; the branch carried merge commits). The preview screenshot PNG from the original branch was intentionally not carried over — images live in PR bodies, not the repo.
teknium1
force-pushed
the
salvage/plugin-install-deeplink
branch
from
August 18, 2026 21:31
3e502aa to
999cd3a
Compare
This was referenced Aug 18, 2026
teknium1
added a commit
that referenced
this pull request
Aug 18, 2026
The deeplink-driven plugin install flow shipped in #89464 (salvage of #82735 by @serefyarar) had no docs. Adds: - user-guide/features/plugins.md: "One-click install links (Desktop)" section under Managing plugins — link forms (repo/enable/force), the confirm-first dialog contract (never auto-installs, same install-time security scanning as the CLI), hybrid-repo behavior, legacy plugin-agent/plugin-desktop routing, hermes-dev:// in dev builds, and the no-SDK anchor example. Cross-links the MCP "Add to Hermes link" equivalent. - developer-guide/desktop-plugin-sdk.md: "Distributing with an install link" section so plugin authors find the link form next to the packaging docs.
lisajlau
pushed a commit
to lisajlau/hermes-agent
that referenced
this pull request
Aug 20, 2026
The deeplink-driven plugin install flow shipped in NousResearch#89464 (salvage of NousResearch#82735 by @serefyarar) had no docs. Adds: - user-guide/features/plugins.md: "One-click install links (Desktop)" section under Managing plugins — link forms (repo/enable/force), the confirm-first dialog contract (never auto-installs, same install-time security scanning as the CLI), hybrid-repo behavior, legacy plugin-agent/plugin-desktop routing, hermes-dev:// in dev builds, and the no-SDK anchor example. Cross-links the MCP "Add to Hermes link" equivalent. - developer-guide/desktop-plugin-sdk.md: "Distributing with an install link" section so plugin authors find the link form next to the packaging docs.
|
bobaba76
pushed a commit
to bobaba76/hermes-agent
that referenced
this pull request
Aug 27, 2026
The deeplink-driven plugin install flow shipped in NousResearch#89464 (salvage of NousResearch#82735 by @serefyarar) had no docs. Adds: - user-guide/features/plugins.md: "One-click install links (Desktop)" section under Managing plugins — link forms (repo/enable/force), the confirm-first dialog contract (never auto-installs, same install-time security scanning as the CLI), hybrid-repo behavior, legacy plugin-agent/plugin-desktop routing, hermes-dev:// in dev builds, and the no-SDK anchor example. Cross-links the MCP "Add to Hermes link" equivalent. - developer-guide/desktop-plugin-sdk.md: "Distributing with an install link" section so plugin authors find the link form next to the packaging docs.
melon-xf
added a commit
to melon-xf/hermes-agent
that referenced
this pull request
Sep 3, 2026
The deeplink-driven plugin install flow shipped in NousResearch#89464 (salvage of NousResearch#82735 by @serefyarar) had no docs. Adds: - user-guide/features/plugins.md: "One-click install links (Desktop)" section under Managing plugins — link forms (repo/enable/force), the confirm-first dialog contract (never auto-installs, same install-time security scanning as the CLI), hybrid-repo behavior, legacy plugin-agent/plugin-desktop routing, hermes-dev:// in dev builds, and the no-SDK anchor example. Cross-links the MCP "Add to Hermes link" equivalent. - developer-guide/desktop-plugin-sdk.md: "Distributing with an install link" section so plugin authors find the link form next to the packaging docs.
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Plugins now install in one click from a
hermes://plugin/install?repo=owner/repodeeplink (or Settings → Plugins → Install from Git), with a review step before anything touches disk — matching the confirm-first precedent set by the MCP install deeplink. Never auto-installs.Salvage of #82735 by @serefyarar (branch carried merge commits, so the net diff was applied as a single authored commit preserving attribution). Per repo policy the preview-screenshot PNG committed on the original branch was dropped — images live in PR bodies, not the tree.
Changes
apps/desktop/electron/desktop-plugin-install.ts(new): git URL/owner-repo resolution, shallow clone + agent/desktop artifact probe, subdir-escape guard, 60s clone timeout, non-interactive git env (GIT_TERMINAL_PROMPT=0), insecure-scheme warnings, stable install-folder naming from repo identityapps/desktop/src/app/settings/plugin-install-modal.tsx(new) +plugin-install-request.ts: review → probe → choose → install flow; hybrid repos (agent + desktop) get one dialog; legacyplugin-agent/plugin-desktoplinks route into the same modalapps/desktop/src/lib/deeplink-routes.ts+plugin-source-urls.ts(new): deeplink parsing and GitHub browse/clone URL derivation, with teststui_gateway/methods_tools.py:plugins.managegains aninstallaction wrapping the existingdashboard_install_plugin(inherits the security-scan gate); runs inside the same profile-override bracket as list/toggle, so theprofileparam routes installs to the right HERMES_HOMEValidation
tests/tui_gateway/test_plugins_manage_install.pynpm run check:lint(tsc ×3 + eslint)_mcp_resolve_profileHERMES_HOME overrideInfographic