Files
LangBot/plugins/README.md
T

108 lines
5.7 KiB
Markdown

# LangBot Plugins
Official and example plugins, maintained in the `plugins/` directory of [LangBot](https://github.com/langbot-app/LangBot).
Each plugin is an independent package with its own `manifest.yaml`, dependencies, and README. Install plugins from [LangBot Space](https://space.langbot.app/market?type=plugin), or run `lbp build` inside a plugin directory.
## Directory layout
See [catalog.json](catalog.json) for the generated source index and
[RELEASING.md](RELEASING.md) for independent testing, packaging and Marketplace
publication. Plugins are not included in Core release artifacts.
- `Runner/` — agent runners and event processors.
- `KnowledgeEngine/` — knowledge engine integrations.
- `misc/` — commands, tools, event listeners, pages, and other plugins.
## Runner
- [ACPAgentRunner](Runner/acp-agent-runner/README.md)
- [ClaudeCodeAgent](Runner/claude-code-agent/README.md)
- [CodexAgent](Runner/codex-agent/README.md)
- [CozeAgent](Runner/coze-agent/README.md)
- [DashScopeAgent](Runner/dashscope-agent/README.md)
- [DeerFlowAgent](Runner/deerflow-agent/README.md)
- [DifyAgent](Runner/dify-agent/README.md)
- [LangflowAgent](Runner/langflow-agent/README.md)
- [LocalAgent](Runner/LocalAgent/README.md)
- [N8nAgent](Runner/n8n-agent/README.md)
- [RunnerDemo](Runner/RunnerDemo/README.md)
- [TboxAgent](Runner/tbox-agent/README.md)
- [WeKnoraAgent](Runner/weknora-agent/README.md)
## KnowledgeEngine
- [DifyDatasetsConnector](KnowledgeEngine/DifyDatasetsConnector/README.md)
- [FastGPTConnector](KnowledgeEngine/FastGPTConnector/README.md)
- [LangRAG](KnowledgeEngine/LangRAG/README.md)
- [LongTermMemory](KnowledgeEngine/LongTermMemory/README.md)
- [RAGFlowConnector](KnowledgeEngine/RAGFlowConnector/README.md)
## misc
- [AgenticRAG](misc/AgenticRAG/README.md)
- [AIImagePlugin](misc/AIImagePlugin/README.md)
- [AutoTranslate](misc/AutoTranslate/README.md)
- [DailyLimitPlugin](misc/DailyLimitPlugin/README.md)
- [EssentialCommands](misc/EssentialCommands/README.md)
- [FAQManager](misc/FAQManager/README.md)
- [GeneralParsers](misc/GeneralParsers/README.md)
- [GitHubKit](misc/GitHubKit/README.md)
- [GoogleSearch](misc/GoogleSearch/README.md)
- [GroupChatSummary](misc/GroupChatSummary/README.md)
- [HelloPlugin](misc/HelloPlugin/README.md)
- [HumanTakeover](misc/HumanTakeover/README.md)
- [KeywordAlert](misc/KeywordAlert/README.md)
- [MCBotPlugin](misc/MCBotPlugin/README.md)
- [PowerContext](misc/PowerContext/README.md)
- [QWeather](misc/QWeather/README.md)
- [ScheNotify](misc/ScheNotify/README.md)
- [SysStatPlugin](misc/SysStatPlugin/README.md)
- [TavilySearch](misc/TavilySearch/README.md)
- [URLSummary](misc/URLSummary/README.md)
- [WebSearch](misc/WebSearch/README.md)
- [WordFSRS](misc/WordFSRS/README.md)
## Deployment: dedicated and shared placement
A plugin runs either **dedicated** (its own worker per installation) or **shared** (one `BasePlugin` and one object
per declared component serve every installation of an artifact digest in a single worker). Shared placement is
opted into per plugin with both manifest fields:
```yaml
execution:
python: {path: main.py, attr: Plugin}
sharedRuntime: shared-runtime-v1
componentModel: stateless-v1
```
`sharedRuntime` without `componentModel: stateless-v1` is not eligible. The normative contract is
[`langbot-plugin-sdk/docs/stateless-components.md`](https://github.com/langbot-app/langbot-plugin-sdk/blob/main/docs/stateless-components.md):
component objects are process-wide singletons, `initialize()` runs once per worker and sees no tenant config,
configuration and credentials are resolved per invocation, tenant state in a process cache is keyed by the full
installation binding and released in `on_installation_revoked()`, components must be re-entrant, and blocking work
must stay off the shared event loop. Adding the manifest fields alone is not sufficient — source review and
concurrency tests must prove the implementation.
37 of the 40 plugins here declare shared placement. `Runner/acp-agent-runner`, `Runner/claude-code-agent` and
`Runner/codex-agent` stay dedicated: each launches a process-global daemon hub, symlinks worker-`HOME` credentials
into every run home and shares one workspace root, so serving two installations from one process needs the
Host/SDK broker and duplex-process API first (see `Runner/acp-agent-runner/docs/SHARED_RUNTIME_BLOCKERS.md`); shared
adaptation is deliberately not planned for them, and their dedicated manifests are the supported configuration.
Every plugin that declares shared placement ships a `SHARED_RUNTIME.md` stating what is per invocation, what is
binding-keyed and released on revocation, and its known limits, plus a test that drives two installation bindings
through one object graph. `misc/*` suites run in CI through `../.github/workflows/plugins-misc-tests.yml` (one venv and one
interpreter per plugin, dependencies from that plugin's `requirements.txt`); Runner plugin suites run through the
isolated-interpreter harness in `Runner/tests/test_migrated_runners.py`. Declaration is not certification:
[`SHARED_SOURCE_LEDGER.md`](SHARED_SOURCE_LEDGER.md) records the committed source tree of each candidate and no
plugin is claimed certified or live-accepted there.
## Development
Use a plugin directory as the working directory when building or running it; the repository root is not a plugin. Runner development and tests are documented in [Runner/README.md](Runner/README.md).
The complete official plugin catalog now lives in LangBot. See [MIGRATION.md](MIGRATION.md) for provenance and release boundaries. The previous demo repository was renamed in place. External runner, LocalAgent, and LangRAG source histories were imported with Git subtree; existing plugin IDs and authors are unchanged.
[Plugin documentation](https://docs.langbot.app)