Appearance
Plugins
Plugins are local extension packages that add channels, custom integrations, tools, or skills to Murph.
For implementation-level plugin details, use Extending Plugins.
Scoped plugins
Scoped plugins live under the Murph home directory:
text
~/.murph/plugins/<category>/<id>Plugins are global operator extensions. Runtime scope comes from Murph configuration, channels, integrations, and policy, not from the local shell directory where Murph is started.
Categories keep extension types separated:
channelsfor messaging provider extensions.toolsfor callable actions.skillsfor prompt guidance.contextfor integration-style grounding sources.bundlesfor plugins that intentionally combine multiple categories.
Murph still loads older flat plugin directories under ~/.murph/plugins/<id> for compatibility, but new plugins should use the category-first layout.
Capabilities
A scoped plugin can contribute:
- channels
- custom integrations through connector modules
- skills
- read-only tools
Package structure
Use one plugin directory per plugin under a capability category:
text
~/.murph/plugins/tools/jira
~/.murph/plugins/channels/teams
~/.murph/plugins/context/internal-docsThe directory name should match the plugin id when possible.
Every plugin needs plugin.json:
json
{
"id": "jira",
"name": "Jira",
"description": "Jira plugin",
"version": "0.1.0",
"capabilities": {
"skills": ["skills/jira.md"],
"integrations": ["integrations/jira.mjs"]
}
}The manifest must declare at least one skill, integration, or channel.
For a channel plugin:
json
{
"id": "teams",
"name": "Microsoft Teams",
"description": "Teams channel plugin",
"version": "0.1.0",
"capabilities": {
"channels": ["channel.mjs"]
}
}Use these directories:
skills/*.mdinside the plugin root for skill files referenced bycapabilities.skills.integrations/*.mjsfor integration connector modules referenced bycapabilities.integrations.channel.mjsorchannels/*.mjsfor messaging providers referenced bycapabilities.channels.
Manifest paths must stay inside the plugin root. Paths that escape the package root are rejected.
Integrations and tools
An integration is the connected source users think about, such as Jira or an internal docs index. In a plugin package, that integration is implemented by a connector module.
A tool is one callable action Murph can run. Some tools are built in, such as web.search; others are exposed by plugin-provided integrations, such as jira.search.
After plugins are reloaded, connector metadata is exposed through integration status and appears as a generic integration card in the browser UI.
Public boundary
Scoped plugins are the documented plugin model. Keep custom integrations in scoped plugins unless a change must become part of Murph core.
Build workflow
Use Murph Agent to create or update scoped plugins:
bash
murph agentThen ask it to create or update a plugin under the right category root, such as ~/.murph/plugins/tools/jira.
For a new messaging provider, ask Murph Agent to create a channel plugin under ~/.murph/plugins/channels/<id>. A custom channel should not require edits to Murph core runtime files, but it may still require manual app, bot, scope, webhook, or approval steps in the provider's console.