Plugin System
EdgeCrab can now discover plugins from ~/.edgecrab/plugins/ and fold them into the same runtime used by built-in tools.
skill: injectsSKILL.mdcontent into the system prompttool-server: proxies subprocess tools over newline-delimited JSON-RPCscript: loads Rhai code for lightweight local extension logichermes: loads Hermes-style Python plugins fromplugin.yaml+__init__.py
Standalone skills remain separate from plugins. A skill in ~/.edgecrab/skills/
can bundle helper files and scripts, but a plugin is still the installable
runtime unit with its own lifecycle, trust metadata, and enable/disable policy.
That distinction matters for Claude-style skill bundles too:
- A standalone skill may bundle Python helpers under
scripts/. - EdgeCrab renders
${CLAUDE_SKILL_DIR}and${CLAUDE_SESSION_ID}for those skills. - Those helper scripts still run through normal tools such as
run_terminal. - Automatic prompt-shell execution and Claude-only fork semantics are not part of the plugin runtime and are not auto-executed.
Discovery Roots
Section titled “Discovery Roots”~/.edgecrab/plugins/.edgecrab/plugins/~/.hermes/plugins//usr/share/edgecrab/plugins/When HERMES_ENABLE_PROJECT_PLUGINS=true, EdgeCrab also discovers ./.hermes/plugins/ for project-local Hermes compatibility.
Config
Section titled “Config”plugins: enabled: true auto_enable: true disabled: [] platform_disabled: {} install_dir: ~/.edgecrab/pluginsPlugin disable state is persistent. Disabled plugins stay installed on disk but are excluded from prompt injection and tool dispatch.
That runtime policy is reflected live in the TUI:
- enabled plugin tools appear in
/toolsunder thepluginstoolset - disabled plugins disappear from the active tool inventory without a restart
- re-enabling a plugin re-registers its tools in the same session
Example:
/plugins/tools/plugins disable calculator/tools/plugins enable calculator/toolsPlugin search also uses layered caches under ~/.edgecrab/plugins/.hub/cache/:
- source indexes are cached with a TTL
- repo-backed plugin tree scans are cached separately from descriptions
- per-plugin descriptions are cached so repeated searches do not refetch remote metadata
- stale cache is reused when a refresh fails, which keeps the remote browser usable during transient network or GitHub failures
Security and Hub
Section titled “Security and Hub”- Installs are staged in
~/.edgecrab/plugins/.quarantine/ - Every install is statically scanned before activation
- Installed manifests are stamped with trust metadata and a directory checksum
- Install and remove events are appended to
~/.edgecrab/plugins/.hub/audit.log edgecrab plugins search <query>searches curated and configured plugin indicesedgecrab plugins search --source edgecrab <query>targets the official EdgeCrab repo examples directlyedgecrab plugins search --source hermes <query>targets Hermes-oriented registries directlyedgecrab plugins search --source hermes-evey <query>targets the curated42-evey/hermes-pluginscataloghub:<source>/<plugin>resolves through the configured hub index before install- Direct
https://...zipplugin archives are supported in addition to GitHub and local paths
Host API
Section titled “Host API”Tool-server plugins now use MCP-style newline-delimited JSON-RPC over stdio in both directions.
- Host requests:
initialize,notifications/initialized,tools/list,tools/call - Plugin reverse-calls:
host:platform_info,host:log,host:memory_read,host:memory_write,host:session_search,host:secret_get,host:inject_message,host:tool_call
Hermes Compatibility
Section titled “Hermes Compatibility”EdgeCrab now recognizes Hermes directory plugins with:
plugin.yaml__init__.pyand a register(ctx) function. Hermes-compatible hook support currently covers:
requires_envreadiness gating tosetup-neededpre_tool_callpost_tool_callon_session_startpre_llm_callpost_llm_callpre_api_requestpost_api_requeston_session_endon_session_finalizeon_session_reset
pre_llm_call results are appended to the current user message, preserving the system-prompt cache behavior used by Hermes. Plugins that are disabled or setup-needed are not exposed as runtime tools.
The Hermes Python bridge now provides the minimal runtime shims real upstream Hermes plugins expect:
agent.memory_providertools.registry.tool_errorhermes_constantsplugins.*namespace-package imports for repo-backed plugin trees
Compatibility is verified against real upstream NousResearch/hermes-agent
assets, including the holographic and honcho plugins plus local-bundle
compatibility checks for Hermes optional skills such as github-issues and
1password.
The official EdgeCrab repo also ships Hermes-format examples under plugins/:
plugins/productivity/calculatorplugins/developer/json-toolbox
Those examples are indexed by edgecrab-official, so they show up in normal
plugin search and can be installed directly from a local checkout.
Compatibility is also verified against real plugins from
42-evey/hermes-plugins, including evey-telemetry and evey-status.
Hermes plugin roots can now be installed directly from the upstream guide layout:
calculator/├── plugin.yaml├── __init__.py├── schemas.py├── tools.py├── SKILL.md└── data/ └── units.jsonedgecrab plugins search --source edgecrab calculatoredgecrab plugins search --source edgecrab jsonedgecrab plugins install ./plugins/productivity/calculatoredgecrab plugins install ./plugins/developer/json-toolbox
edgecrab plugins install ./calculatoredgecrab plugins info calculator
edgecrab plugins install ~/src/hermes-agent/plugins/memory/holographicedgecrab plugins info holographic
edgecrab plugins search --source hermes-evey telemetryedgecrab plugins install hub:hermes-evey/evey-telemetryedgecrab plugins install hub:hermes-evey/evey-status
EDGECRAB_PLUGIN_PYTHON=~/.venvs/hermes/bin/python \ edgecrab plugins listEDGECRAB_PLUGIN_PYTHON=~/.venvs/hermes/bin/python \ edgecrab entry-demo statusRemote plugin search only shows plugin-capable artifacts. Hermes standalone
skills such as 1password belong in the remote skills browser:
edgecrab skills search 1passwordedgecrab skills install hermes-agent:security/1passwordBundled SKILL.md files inside Hermes plugin directories are loaded as plugin skills, so
their readiness, compatibility, and related_skills metadata appear in discovery and
edgecrab plugins info.
For a full authoring walkthrough, see the Build A Hermes Plugin guide.
Verified runtime coverage includes the Hermes memory-provider cli.py register_cli(subparser)
convention and gateway session lifecycle parity across reset and shutdown flows.
edgecrab plugins listedgecrab plugins info github-toolsedgecrab plugins statusedgecrab plugins enable github-toolsedgecrab plugins disable github-toolsedgecrab plugins toggle [github-tools]edgecrab plugins install github:edgecrab/plugins/github-toolsedgecrab plugins install hub:community/github-toolsedgecrab plugins install https://example.com/github-tools.zipedgecrab plugins install ./plugins/github-toolsedgecrab plugins audit --lines 20edgecrab plugins search githubedgecrab plugins search --source hermes weatheredgecrab plugins browseedgecrab plugins refreshedgecrab plugins remove github-toolsThe same plugin state is visible in the TUI Tool Manager:
/toolsshows only tools that are currently registered- plugin tools are marked as dynamic and grouped under the
pluginstoolset - toggling a plugin through
/plugins, the plugin toggle overlay, install, update, or remove refreshes that tool inventory immediately