All plugins

hermes-plugin-dev

Hermes Plugin Dev: build Hermes plugins with Hermes. A plugin-development skill plus two offline tools that scaffold a new plugin and lint it against the catalog rules before you submit. The hermes-plugin-dev:hermes-plugin-development skill covers manifest v2 and strict YAML, the ctx API, all 46 hooks, capabilities and isolation, dashboard and Desktop panes, testing, release and catalog submission, and lessons from catalog reviews, with a template plugin and catalog-entry and PR-body templates. hpd_scaffold(target_dir, name) copies the hello-hermes template, which passes hermes plugins validate and doctor --ci as-is, renames it, and adds a catalog entry and PR body stub; it refuses non-empty folders and never overwrites. hpd_check(path, catalog_entry?) is a read-only lint: strict YAML, manifest rules, provides_tools against the registered tools, a security preflight, static schema token cost, and catalog entry rules (sha, image hosts, category, subdir, at most 6 screenshots). Both tool schemas together cost 190 o200k tokens. It is for anyone writing a first Hermes plugin or getting one ready for a catalog PR. To start, run hermes plugins install hermes-plugin-dev and hermes plugins enable hermes-plugin-dev, then ask: "Scaffold a Hermes plugin called weather-now in ~/code/weather-now, then check it." Finish with hermes plugins doctor <dir> --ci and hermes plugins validate <dir> --install-deps. The same skill installs into other coding agents with npx skills add mojomast/hermes-plugin-dev. Disclosure β€” `hpd_scaffold` creates files in any new or empty folder the model names (fixed template content only); `hpd_check` reads any folder or file the model names (read-only, never imports it); the user-run `hermes hpd check <dir> --execute` imports and runs the target plugin's `register()` unsandboxed in the Hermes process, so use it only on code you trust.

mojomastToolsv0.3.1Updated 2 hours ago

About

Hermes Plugin Dev: build Hermes plugins with Hermes. A plugin-development skill plus two offline tools that scaffold a new plugin and lint it against the catalog rules before you submit. The hermes-plugin-dev:hermes-plugin-development skill covers manifest v2 and strict YAML, the ctx API, all 46 hooks, capabilities and isolation, dashboard and Desktop panes, testing, release and catalog submission, and lessons from catalog reviews, with a template plugin and catalog-entry and PR-body templates. hpd_scaffold(target_dir, name) copies the hello-hermes template, which passes hermes plugins validate and doctor --ci as-is, renames it, and adds a catalog entry and PR body stub; it refuses non-empty folders and never overwrites. hpd_check(path, catalog_entry?) is a read-only lint: strict YAML, manifest rules, provides_tools against the registered tools, a security preflight, static schema token cost, and catalog entry rules (sha, image hosts, category, subdir, at most 6 screenshots). Both tool schemas together cost 190 o200k tokens. It is for anyone writing a first Hermes plugin or getting one ready for a catalog PR. To start, run hermes plugins install hermes-plugin-dev and hermes plugins enable hermes-plugin-dev, then ask: "Scaffold a Hermes plugin called weather-now in ~/code/weather-now, then check it." Finish with hermes plugins doctor <dir> --ci and hermes plugins validate <dir> --install-deps. The same skill installs into other coding agents with npx skills add mojomast/hermes-plugin-dev. Disclosure β€” `hpd_scaffold` creates files in any new or empty folder the model names (fixed template content only); `hpd_check` reads any folder or file the model names (read-only, never imports it); the user-run `hermes hpd check <dir> --execute` imports and runs the target plugin's `register()` unsandboxed in the Hermes process, so use it only on code you trust.


Why this exists

Hermes Agent has a powerful plugin
system and a reviewed plugin catalog. Getting a plugin from idea to listed means
learning a dozen sharp edges the hard way:

  • a stray keyword to register_tool and your plugin silently loads with 0 tools
  • a duplicated YAML key that PyYAML quietly "fixes" for you
  • an unquoted commit SHA the catalog validator reads as a number
  • a dashboard API change that won't show up until you restart the gateway
  • a security scan that fails your plugin because your README mentions a scary command word
  • a PR that won't open because of a GitHub limit, not your auth
  • an agent tool that can approve a stranger's device because a lobby message talked it into it
  • a session token that leaks because authedFetch was handed an absolute asset URL
  • a loopback "token-gated" viewer that hands the token to anyone who asks
  • a live pane that starves the Hermes gateway because every poll runs a full capture

This repo captures those lessons (each checked against hermes-agent source or
against the public catalog review threads, with a
verification log)
in a format every major coding agent can load. When installed into Hermes, it
also gives the Hermes agent two small tools to build plugins itself.

What's inside

| | |
|---|---|
| 🧠 Agent Skill | skills/hermes-plugin-development/: a short core guide plus 13 deep-dive references (manifest, ctx API, all 46 hooks, capabilities & isolation, panes, testing, release & catalog, review lessons, pitfalls, hackathons, worked examples, verification). |
| 🧩 Template plugin | templates/hello-hermes: a minimal plugin that passes hermes plugins validate and doctor --ci as-is, with a fake-host test, strict-YAML check, version bump script and schema-token meter. |
| πŸ“‹ Catalog kit | Catalog entry and PR body templates matching the upstream schema, including the 6-screenshot cap. |
| πŸ› οΈ Hermes plugin | plugin.yaml + register(ctx) at the repo root: bundles the skill and adds 2 lean tools (190 o200k tokens total, measured with tiktoken o200k_base). |

The two tools

| Tool | What it does | Safety |
|---|---|---|
| hpd_scaffold(target_dir, name) | Creates a new plugin from the template, renamed, with a catalog entry + PR body stub | Writes only inside target_dir; refuses non-empty dirs; never overwrites |
| hpd_check(path, catalog_entry?) | Offline lint: strict YAML, manifest rules, provides_tools vs registered (static AST), security preflight, static schema token cost, catalog entry rules (sha, hosts, category, subdir, at most 6 screenshots) | Read-only. Never imports or executes the target plugin. |
| hermes hpd check <dir> [--execute] | User-run CLI for the same lint | Default is static. --execute imports register() with a fake host, like hermes plugins doctor. Only use it on code you trust. |

No network calls, no subprocesses, no git, no credentials. The security preflight
is a heuristic, not a proof: it flags known anti-patterns (CDN React, session-token
reads, absolute URLs to authedFetch, inherited child environments, wildcard binds,
and more) without printing source or secret values.

What the skill teaches

  • Manifest v2, strict YAML, and keeping provides_tools identical to register().
  • Keyword-only ctx.register_tool, JSON-string results, and lean op enums measured in o200k tokens.
  • Dashboard and Desktop panes: SDK-only, SandboxedFrame, ctx.rest on Hermes >=0.23.0, dark mode, shared-screen arbiters, gateway-safe frame polling.
  • Secrets through agent.secret_scope.get_secret, minimal child environments, path confinement, SSRF-safe fetches.
  • Catalog review contracts: pane-only privileged actions, no "trust" for feed text, no absolute URLs to authedFetch, token-gated loopback relays, hook scope, pre_tool_call approval, at most 6 screenshots, scratch-home install checks.
  • Release hygiene: quote the 40-hex sha, YAML-only catalog PRs, the 5-open-PR cap, no invented pins, restore enablement on a shared test host.

The core is in SKILL.md. Open the
references when you need the
worked detail.

60-second quickstart

In Hermes:

hermes plugins install mojomast/hermes-plugin-dev
hermes plugins enable hermes-plugin-dev

Then ask your agent: "Scaffold a Hermes plugin called weather-now in ~/code/weather-now,
then check it."
It loads hermes-plugin-dev:hermes-plugin-development, calls
hpd_scaffold and hpd_check, and tells you to run doctor and validate.

Any other agent (Claude Code, Codex, Cursor, …):

npx skills add mojomast/hermes-plugin-dev

Then: "Using the hermes-plugin-development skill, build me a Hermes plugin that …"

Install matrix

| Agent | Install |
|---|---|
| Hermes Agent | hermes plugins install mojomast/hermes-plugin-dev then hermes plugins enable hermes-plugin-dev (skill id hermes-plugin-dev:hermes-plugin-development) |
| Claude Code (plugin) | /plugin marketplace add mojomast/hermes-plugin-dev then /plugin install hermes-plugin-dev@hermes-plugin-dev |
| Claude Code (plain skill) | git clone https://github.com/mojomast/hermes-plugin-dev && cp -r hermes-plugin-dev/skills/hermes-plugin-development ~/.claude/skills/ |
| skills CLI (Claude Code, Codex, Cursor, OpenCode, Goose, Windsurf, Hermes, …) | npx skills add mojomast/hermes-plugin-dev (add -g for global, -a <agent> to target one) |
| Cursor | Copy skills/hermes-plugin-development into .cursor/skills/ (project) or ~/.cursor/skills/ |
| Codex / AGENTS.md agents | Vendor the folder and add to AGENTS.md: "Before working on a Hermes plugin, read skills/hermes-plugin-development/SKILL.md." |
| Anything else | Attach SKILL.md as context; the agent opens references/ and templates/ on demand |

Example session

you   β–Έ Make a Hermes plugin that exposes my local Ollama models as a tool.
agent β–Έ (loads hermes-plugin-development skill)
        hpd_scaffold β†’ ~/code/ollama-models   βœ“ 11 files
        …edits __init__.py: one composable tool `ollama_models(op=list|show)`…
        hpd_check    β†’ manifest βœ“  tools match βœ“  schema tokens reported
        Run: hermes plugins doctor ~/code/ollama-models --ci
             hermes plugins validate ~/code/ollama-models --install-deps

Catalog submission checklist

Use this when your plugin is ready to list. A draft catalog entry and PR body
for this repo live in docs/SUBMISSION.md β€” that
catalog PR has not been opened.

  1. Tests, hermes plugins doctor . --ci, and hermes plugins validate . --install-deps are green at the commit you will pin.
  2. Schema tokens measured with tiktoken o200k_base and recorded.
  3. Secret scan is clean. No .env, tokens, or pane-captured keys in the tree.
  4. README discloses network, subprocesses, credentials, and any write-then-execute or hypervisor/browser power. Versions match across plugin.yaml, pyproject.toml, and packaging metadata.
  5. At most 6 screenshots, plus an optional 2:1 banner, all on GitHub raw hosts, pinned to the same 40-hex sha, each returning HTTP 200, shot in Hermes dark mode.
  6. YAML-only PR on a fork of NousResearch/hermes-agent, branch catalog/<name>-vX.Y.Z. Never invent the sha; pin an already-existing (usually tagged) commit.
  7. A real hermes plugins install <name> --enable in a scratch HERMES_HOME installs that sha and registers every declared tool.
  8. If you have a pane: it is connected to the right session; privileged actions are pane-only or approval-gated; a temporary enable on a shared host is restored afterwards.
  9. Watch the 5-open-PR cap on NousResearch/hermes-agent. A version bump in this repo is not a tag, a release, or a catalog PR β€” those need an explicit yes.

Use the checks without Hermes

git clone https://github.com/mojomast/hermes-plugin-dev && cd hermes-plugin-dev
pip install pyyaml tiktoken
# Static lint (never imports the target plugin):
python hpd_cli.py check /path/to/my-plugin
# Import-based schema measure, same class of execution as `hermes plugins doctor`.
# Only on code you trust:
python hpd_cli.py check /path/to/my-plugin --execute --catalog catalog/my-plugin.yaml

Repository layout

hermes-plugin-dev/
β”œβ”€β”€ plugin.yaml  __init__.py  hpd_core.py  hpd_cli.py   # the Hermes plugin + CLI
β”œβ”€β”€ skills/hermes-plugin-development/        # the Agent Skill
β”‚   β”œβ”€β”€ SKILL.md
β”‚   β”œβ”€β”€ references/*.md
β”‚   └── templates/{hello-hermes,catalog}/
β”œβ”€β”€ .claude-plugin/{plugin.json,marketplace.json}
β”œβ”€β”€ catalog/hermes-plugin-dev.yaml           # prepared catalog entry (not yet submitted)
β”œβ”€β”€ docs/SUBMISSION.md                       # draft catalog PR, pending review
β”œβ”€β”€ CHANGELOG.md
β”œβ”€β”€ tests/                                   # fake-host tests, no Hermes needed
└── .github/workflows/ci.yml                 # pytest + gitleaks

FAQ

Is this an official Nous Research project? No. It's a community project. Upstream docs
and source always win; the skill says so and links them.

Will it go stale? Hermes moves fast. Every claim is tagged in the
verification log with the
Hermes version or catalog review it was checked against, and unverified items are marked.
PRs welcome.

Why only two tools? Every tool schema costs context on every turn. Two composable tools
(190 o200k tokens) cover scaffolding and linting. Running doctor/validate stays in your
terminal, where Hermes's own checks are authoritative.

Does it run my plugin's code? The hpd_check tool does not. It measures schema
tokens by parsing the AST of register_tool schemas and never imports the target.
Import-based measurement is only on the user-run CLI: hermes hpd check <dir> --execute
(or python hpd_cli.py check <dir> --execute). That path imports register() with a
fake host, like hermes plugins doctor, and is not a sandbox β€” only use it on code
you trust. The security preflight always reads source without executing it.

Is it in the Hermes catalog yet? A listing PR is open:
NousResearch/hermes-agent#152699,
originally pinned to v0.3.0. v0.3.1 is the review fix (static hpd_check; import-based
measure only on hermes hpd check --execute) and is the pin to use once released.

Contributing

Found a new pitfall? Add it to
references/pitfalls.md with the
symptom, cause and fix, and note in verification.md how you confirmed it. Run pytest -q,
hermes plugins validate . and hermes plugins doctor . --ci before opening a PR.

Worked examples to learn from: EOH Β·
Hermagotchi Β·
hyperrizz Β·
Hermes Strudel Studio Β·
Shortrizz Β·
stitchslop Β·
TempleOS Β·
photo-to-part Β·
comfyrizz-hermes

License

MIT

What's new in 0.3.1

hpd_check no longer imports the plugin it is linting. Schema tokens and
provides_tools drift are measured by parsing register_tool schemas from
the AST. Import-based measurement (register() on a fake host, like
hermes plugins doctor) is only available on the user-run CLI:

hermes hpd check ./my-plugin --execute

Use --execute only on code you trust; it runs in that process, unsandboxed.
This is the fix requested on catalog PR
#152699.

What's new in 0.3.0

Catalog-review lessons from 8–10 Nov 2026, plus a sync with hermes-agent
main (verified @ acdc8f1ba6, 2026-11-08):

  • hpd_check now mirrors the newer admission lints β€” core-override rebinds
    (setattr/sys.modules/mock.patch on Hermes internals) are errors, imports
    outside the generated public plugin API (hermes_cli/data/plugin_api.json) are
    warnings, and plugin.yaml gets unknown-field, kind and capability-id checks.
    Absolute http(s): URLs passed to authedFetch are errors; wildcard binds,
    postMessage(..., '*'), and null/file:// origin allowlists are warnings.
  • Two new skill references: hooks.md (all 46 hook names by family, the
    observer/transform/directive/policy return shapes, timeout rules) and
    capabilities-and-isolation.md (the 8 consent-gated capability ids, and what
    plugins.isolation: host refuses to load). Catalog review contracts live in
    catalog-review-lessons.md.
  • Corrections: provides_middleware is a catalog capabilities: key, not a
    plugin.yaml field (the old template logged an unknown-field warning);
    override=True is gated by the tools.override capability, not only the legacy
    allow_tool_override boolean.

Catalog security preflight (v0.3.0)

hpd_check looks for SDK/auth anti-patterns (including absolute URLs to
authedFetch and postMessage(..., '*')), credential access, unsafe process
environments, private imports, profile paths, insecure URLs, wildcard binds,
null/file:// origin allowlists, and handlers that return dictionaries
instead of JSON strings. Network fetches and complex data flows produce
manual-review warnings, not a security guarantee. See the bundled
security-boundaries
and catalog-review-lessons
references for SSRF, file confinement, honest online clients, capture relay
budgets, pane-only privileged actions, untrusted feed text, and live-host
acceptance. Tool results use JSON strings as required by Hermes.

README from the reviewed commit 796a35e; it updates when the author re-pins.

More by mojomast

11 plugins by mojomast in the catalog.

mojomastaircraft-doppler-geolocationDetect aircraft flyovers in a recording (Doppler tones, plus experimental ground-reflection broadband jet passes) and estimate where it was made by scoring them against adsb.lol ADS-B history, with a posterior heatmap, 68/95% areas and a confidence flag. Provides the doppler_detect and doppler_locate tools and a dopplergeo CLI. Results on unseen real recordings are weak (2 of 18 held-out runs under 3 km); treat output as a hypothesis. Disclosure β€” doppler_locate / dopplergeo locate makes unauthenticated HTTPS GETs to GitHub (adsb.lol release assets, streamed, about 3 GB read per uncached day; only the crop is cached), raw.githubusercontent.com (tar1090-db types), the Copernicus DEM S3 bucket and Open-Meteo, caching results under ~/.cache/doppler-geo (or DOPPLER_GEO_CACHE); offline mode uses the local cache only; no credentials, uploads or telemetry. doppler_detect and the skill scripts make no network calls; the tools and scripts run ffmpeg/ffprobe (no shell) on the recording you name and write CSV/PNG/JSON at the output path you give (default `<recording>.doppler/`). PyPI packages (numpy, scipy, soundfile, matplotlib, tifffile) install only after Hermes dependency consent. The method can geolocate where a recording was made, so use it only on recordings you are entitled to analyse.Communitytools16mojomastorbit-desktopYour workspace, shaped by your agent: a bundled browser desktop powered by Hermes. Describe the workflow you need; the agent can rearrange windows and panes, customize appearance, build versioned sandboxed web apps, and refine your workspace with scoped control, previews and checkpoints. Illustrated examples show a project-specific COCS 3D asset viewer and OmniVoice experiment bench; these example apps and their backends are not bundled. Includes permission-controlled desktop agent-reply notifications (generic alerts while Orbit remains open; browser/OS restrictions apply) and 100,000-character chat messages, guidance and drafts. Includes Devplan Studio for guided interviews, specifications, phased devplans and circular-development handoff exports. Optional conversational interviews require explicit service setup and a working Hermes provider login, and send project context to that provider. Includes 14 distinctive interface presets including Nous Atelier, with local wallpapers, themed icons and taskbar treatments. Agent chats include inline expandable tool activity, running/completed/failed summaries, an activity strip, a workspace agent overview and responsive toolbar controls. Missing tool-call IDs are explicitly uncorrelated. Embedded apps retain their own styling. Includes a reviewed GitHub app catalog with immutable source pins and a portable Live Telemetry package. Catalog sync (operator-run scripts/orbit_catalog.py, never triggered by the Hermes tool or at register) reads the entry list from the upstream repo's main branch at sync time and downloads third-party static app bundles at their per-entry commit pins; installed UI runs in a sandboxed iframe and never executes backend code. Optional telemetry backend staging downloads pinned Python; execution requires explicit host-code trust and separate private authenticated HTTPS setup. Backend code runs with owner privileges, not a sandbox. Disclosure β€” adapter talks only to the configured local Orbit server (loopback, Bearer capability from runtime_dir); mutations off by default. Optional orbit.py setup runs npm ci / node. Bundled VNC/Xpra launchers use the Orbit page's hostname and scheme; optional Linux apps require separate provisioning. Optional api.typesafe.ai requests require explicit consent and a user-supplied key. The 0.2.7 web app's opt-in Show tools panel displays tool call arguments and results for the current Hermes conversation, fetched from the local Orbit server and local Hermes session API and kept in the browser only. The Nous Atelier theme contains Nous Research logo artwork and is unofficial; Orbit is not affiliated with Nous Research.CommunityDesktop app10mojomastgodseyeEye Of Hermes (EOH), built on God's Eye View (bilawalsidhu/gods-eye-view, MIT): the same 11 composable godseye_* tools (godseye_view, godseye_query, godseye_layers, godseye_feeds, godseye_annotate, godseye_nav, godseye_track, godseye_scene, godseye_watch, godseye_capture, godseye_admin) for public data (aircraft, ships, satellites, quakes, fires, weather, infrastructure) backed by its MCP server, a live 3D globe pane in Hermes Desktop and the Webapp that Hermes can drive and read, and HUD summaries generated with the Hermes model (ctx.llm) instead of OpenAI. An Overlays sidebar (godseye_annotate op=overlays) lists pins, routes and trails, lines, areas, watches, and scenes, and imports or exports eoh.overlays.v1 JSON under plugin-data. godseye_scene director ops build, update, list, play, and stop a Director scene on the pane; godseye_annotate op=clip stores a YouTube or X URL on a pin; godseye_feeds op=fire_check runs FIRMS, the clearest recent image, then imagery before/after, and does not create a watch or a pin. v0.2.2 hardens Wayback imagery releases, overlays when the relay is out-of-process, pane routing timeouts, and layer/user-pref behavior; v0.2.3 keeps a visible imagery surface during compare swipe and the Wayback timeline; v0.2.4 captures the pane after render and falls back to public Overpass mirrors for OSM queries; v0.2.5 restores a clean plugin.yaml and adds a strict duplicate-key test; v0.2.6 declares street-level keys through Hermes requires_env/get_secret and removes the Gods Eye View env-file fallback. v0.2.7 addresses catalog security review (public-only fetches, scoped credentials, confined imports and minimal child environments) and bounds pane captures with explicit transport errors. v0.2.8 documents the public SDR receivers layer (sdr-receivers); the map layer needs gods-eye-view main at or after b361a25 (PR #5). v0.2.9 treats watch-alert titles as quoted third-party data, requires confirm=true for godseye_admin start/stop/restart/rebuild (refused inside batch), gesture-gates pane link opens and Ask Hermes, and stops re-posting runtime config after the app acknowledges it. v0.2.10 adds a read-only godseye_query op=sdr_receivers (nearest public SDR receivers; does not start audio), refuses private-LAN Overpass/Nominatim/OSRM/Valhalla/Wayback URLs, hardens the live relay and HUD bridge, and adds GitHub Actions CI. The same 11 tools also carry the recent God's Eye View v0.3-style ops (imagery before/after, a weather preset, GTFS-RT transit on the app's transit layer, and fire-perimeter watches). Requires Node 24 or newer (God's Eye View documents 24.14 or later, or 26.x) and a running God's Eye View checkout. No named-person search, face recognition, or tracking of individuals. Disclosure β€” starts one node MCP child from the user's God's Eye View checkout, plus git rev-parse, node and systemctl --user children with a minimal environment; runs loopback-only HUD bridge (127.0.0.1:18791) and live relay (127.0.0.1:18792) threads gated by a random token stored 0600 in plugin-data; registers a godseye.live-globe system-prompt section and ships a godseye-analyst skill; a pre_llm_call hook may add a short map line and queued watch alerts, whose feed titles are passed as quoted third-party text; an active area watch polls USGS, NASA FIRMS, OpenSky (falling back to api.adsb.lol when OpenSky fails), the local app, or Overpass/Nominatim from a daemon thread; place search, routes, isochrones, Wayback metadata, and pin research call public services (Nominatim, Overpass and public Overpass mirrors, OSRM, Valhalla, Esri, Wikipedia, Wikidata, Wikimedia, and venue sites), and private-LAN service URLs are refused; feed tools, including fire_check, and godseye_query op=sdr_receivers talk to the user's God's Eye View app, which itself fetches public third-party data feeds and the public SDR receiver directory; overlay import and export stay under plugin-data/godseye/overlays and are not uploaded, and credential-named files are refused for import; opening a pin drawer that has a clip loads a www.youtube-nocookie.com/embed or platform.twitter.com/embed iframe inside the sandboxed frame, and pane link opens and Ask Hermes run only after a click on the pane's confirm bar; godseye_admin app_start, app_stop, app_restart, and rebuild require confirm=true, are refused inside batch, may run systemctl --user on gods-eye-view.service, start Node on the checkout's vite.js, or run npm run build:panel in the checkout, and refuse a foreign listener; all provider credentials are declared in plugin.yaml requires_env and read only via agent.secret_scope.get_secret; no plugin dotenv reads, key-file installation, or process-wide credential mutation; browser-facing credentials are written only to gitignored mode-0600 runtime config, while server-only secrets never enter the pane; the pane backend adds a base tag, an opt-in UI flag, a Cesium worker shim, the overlay sidebar and Director bridge scripts, and the live agent script inside the sandboxed frame only.Communitytools4mojomasthyperrizzAgent-led HyperFrames films with a live review pane, frame notes, revisions and on-demand full Studio. Runs local Node/Chromium/FFmpeg subprocesses and background jobs; npm downloads pinned dependencies on first build. Project code runs locally. Stores projects in profile-scoped plugin data. No API keys or hosted generation. Disclosure β€” spawns local Node/Chromium/FFmpeg child processes with a minimal non-secret environment; runs background build/check/render workers and an optional loopback Studio sidecar (token-gated, 512 KiB capture budget, no redirects); project write can edit the project's scripts/*.mjs and package.json, and build/check/render run them with Node at the user's full privileges (no filesystem or network sandbox), the same power as file writes plus the terminal; npm ci runs package lifecycle scripts; the embedded HyperFrames Studio server listens on loopback without a token; Desktop pane uses ctx.rest only; post_tool_call binds projects to the host session; no credentials, no telemetry, no self-update.CommunityDesktop app4

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section