Plugins extend specialist nodes with shared prompts, optional knowledge files, and optional tool (functions) implementations.
Multi-specialist meshes work best when each node has a clear role (review, security, documentation, research, and so on). Keep capabilities in plugin.yaml and in node YAML focused so routing and aggregation stay meaningful: the coordinator and operators can tell which specialist should own a given kind of task.
- Overlapping capability labels are fine if prompts, plugins, or knowledge still differentiate behavior.
- If every specialist advertises the same broad skill list and the same generalist prompt, you mostly pay mesh overhead without gaining division of labor.
The default preset is different on purpose: a single assistant is meant to be broad. For several specialists, prefer distinct profiles instead of cloning one mega-generalist on every node. How plugin and YAML capabilities merge at runtime is described under Merge order (runtime) below.
domain(optional string on each node inmeshmind.yaml): the node’s primary routing role. The coordinator matches a routed capability if it appears incapabilitiesor equalsdomain. Use one short token consistent with your mesh (e.g.security,code_review).plugin: an extension pack (prompts, optional knowledge, optionalfunctions). It equips the node; it does not replace declaring adomainwhen you want a stable routing identity.knowledge_domains: labels for knowledge loading (topics tied to project/plugin content). They are not the same asdomain, which is for orchestration routing.
To go from “plugin on disk” to “node in the mesh”, either edit meshmind.yaml by hand or use meshmind plugin add-node (bundled ids only): it installs the stub if needed and appends a specialist block with plugin:, capabilities from the stub, and an optional domain (defaults to the first stub capability). plugin: remains equipment; the new YAML stanza defines topology.
meshmind init … --preset defaultgenerates a general assistant + coordinator and writesdata/knowledge.jsonwith example fields; your YAMLknowledge:list should point at files underdata/(see the generatedmeshmind.yaml).--preset codeuses a multi-specialist template and, unless--skip-bundled-plugins, installs bundled stubsdemo_reviewanddemo_securityinto your plugin directory. Runmeshmind plugin sync -c meshmind.yamlif the CLI reports missing plugins.- Domains declared in
knowledge_domainsand paths inknowledge:feed the knowledge loader: project JSON/MD/TXT files are merged with plugin knowledge whenplugin:is set.
By default plugins live under:
~/.meshmind/plugins/<plugin-id>/
Override with environment variable:
MESHMIND_PLUGIN_DIR
<plugin-id>/
plugin.yaml # required: metadata (id, capabilities, optional functions)
prompts/
system_prompt.txt # optional: appended after the node's YAML system_prompt
knowledge/ # optional: .json, .md, .txt (injected into prompt context)
functions/ # optional: .py modules implementing tool handlers
When meshmind.yaml sets plugin: "<plugin-id>" on a node:
- system_prompt — text from YAML first, then the plugin's
system_prompt.txtand inlined knowledge. - capabilities — union of YAML and plugin
capabilities(stable unique order). - functions — plugin tool schemas first; YAML
functionsentries override by name. - function_handlers — plugin handlers merged; YAML handlers override by name.
meshmind plugin list— plugins already installed underMESHMIND_PLUGIN_DIRmeshmind plugin list --available— bundled ids that ship with MeshMind (same asmeshmind plugin catalog)meshmind plugin catalog— alias forplugin list --availablemeshmind plugin show <id>— printplugin.yamlmeshmind plugin install <path>— copy a plugin directory into the user plugin foldermeshmind plugin install <bundled-id>— copy a packaged stub (see catalog) without typing a repo pathmeshmind plugin sync -c meshmind.yaml— install any missing bundled plugins referenced byplugin:in the config (--strictexits with an error if a referenced plugin is missing and not bundled)meshmind plugin add-node <bundled-id> -c meshmind.yaml— install the bundled plugin if needed and append a specialist node (optional--name,--port,--domain,--dry-run)meshmind plugin remove <id>— remove an installed plugin (--yesto skip prompt)meshmind plugin validate <path-or-id>— validateplugin.yaml
The repo ships stub plugins demo_review, demo_security, demo_documentation, and demo_research under meshmind/cli/plugin_stubs/.
meshmind init <name> --preset code can copy demo_review and demo_security into your plugin directory (default unless --skip-bundled-plugins).
If you skipped that step or moved machines, run meshmind plugin sync -c meshmind.yaml before meshmind up.
Example specialist node:
nodes:
myapp-reviewer:
type: specialist
port: 8401
plugin: demo_review
system_prompt: |
You are the team reviewer.
capabilities:
- review