Plugin System¶
MeshFlow discovers plugins via Python entry points — no configuration required.
Discover and load¶
from meshflow import discover_plugins, load_plugin, verify_plugin, PluginInfo
# Discover all installed plugins
plugins: list[PluginInfo] = discover_plugins()
for p in plugins:
print(p.name, p.version, p.entry_point)
# Load a specific plugin
plugin = load_plugin("meshflow-rag-haystack")
# Verify (check dependencies, API compatibility)
issues = verify_plugin("meshflow-rag-haystack")
if issues:
print("Plugin issues:", issues)
Entry point groups¶
| Group | Registers |
|---|---|
meshflow.tools |
Additional Tool objects |
meshflow.providers |
Additional LLMProvider classes |
meshflow.guardrails |
Additional Guardrail classes |
meshflow.compliance |
Additional compliance profiles |
Write a plugin¶
# pyproject.toml of your plugin package
[project.entry-points."meshflow.tools"]
my_special_tool = "my_package.tools:my_special_tool"
[project.entry-points."meshflow.guardrails"]
my_guardrail = "my_package.guardrails:MyCustomGuardrail"
# my_package/tools.py
from meshflow import tool, RiskTier
@tool(name="my_special_tool", risk=RiskTier.EXTERNAL_IO)
async def my_special_tool(query: str) -> str:
"""Call my external service."""
return await call_my_service(query)
After pip install my-plugin-package, it is auto-discovered on the next discover_plugins() call or server restart.