Background
NeverD exposes a pure C plugin ABI (NeverDPlugin.h) with loader/processor/UI plugin types and session events. An example plugin ships under plugins/example/, built with -DNEVERD_BUILD_PLUGINS=ON (default OFF).
The CLI supports listing and running plugins (neverd plugins), and load paths are documented in README (<neverd-dir>/plugins, ~/.neverd/plugins, $NEVERD_PLUGIN_PATH). However:
- There is no plugin developer guide
- Plugins are not built or tested in CI
- Integrators lack a minimal “hello plugin” walkthrough beyond the example source
Roadmap §4 mentions expanding the plugin ABI for new formats/loaders over time.
Goal
Make the plugin system discoverable, documented, and regression-tested so third parties (and AI agents) can extend NeverD without forking core code.
Current state
| Item |
Location |
| Plugin header |
include/neverd/sdk/NeverDPlugin.h |
| C API |
include/neverd/sdk/NeverDCAPI.h |
| Example plugin |
plugins/example/example_plugin.c |
| Build flag |
NEVERD_BUILD_PLUGINS (default OFF) |
| CLI |
neverd plugins command |
Acceptance criteria
Documentation
CI integration (depends on #1)
Example plugin quality
README
Implementation notes (for implementers / AI agents)
- Read
NeverDPlugin.h, plugins/example/example_plugin.c, and CLI plugin command implementation under tools/neverd/
- Keep the plugin API pure C — no C++ in plugin examples unless clearly isolated
- Do not break existing default builds (
NEVERD_BUILD_PLUGINS=OFF remains default)
- If Windows DLL export requires
__declspec(dllexport), document it in the guide
Out of scope
- New plugin types or ABI breaking changes
- GUI plugin hosting (no GUI in repo today)
- Publishing plugins to a central registry
- EVM/Solana loaders as plugins (separate roadmap issues)
Deliverables
docs/plugins.md (+ README link)
- CI step building and smoke-testing the example plugin
- Any small fixes needed for cross-platform plugin loading
References
Background
NeverD exposes a pure C plugin ABI (
NeverDPlugin.h) with loader/processor/UI plugin types and session events. An example plugin ships underplugins/example/, built with-DNEVERD_BUILD_PLUGINS=ON(default OFF).The CLI supports listing and running plugins (
neverd plugins), and load paths are documented in README (<neverd-dir>/plugins,~/.neverd/plugins,$NEVERD_PLUGIN_PATH). However:Roadmap §4 mentions expanding the plugin ABI for new formats/loaders over time.
Goal
Make the plugin system discoverable, documented, and regression-tested so third parties (and AI agents) can extend NeverD without forking core code.
Current state
include/neverd/sdk/NeverDPlugin.hinclude/neverd/sdk/NeverDCAPI.hplugins/example/example_plugin.cNEVERD_BUILD_PLUGINS(default OFF)neverd pluginscommandAcceptance criteria
Documentation
docs/plugins.md(or section in architecture docs) covering:NEVERD_PLUGIN_LOADER,PROCESSOR,UI,GENERIC)neverd_plugin→neverd_plugin_tNEVERD_EVT_BINARY_LOADED,ANALYSIS_DONE,PATCH_APPLIED, …)-DNEVERD_BUILD_PLUGINS=ON, link againstlibneverd$NEVERD_PLUGIN_PATHneverd plugins list/runCI integration (depends on #1)
-DNEVERD_BUILD_PLUGINS=ONneverd plugins listshows it, or run a documented subcommand)Example plugin quality
unittests/that loads the plugin in-process if a stable test hook exists; otherwise CLI smoke test in CI is sufficientREADME
Implementation notes (for implementers / AI agents)
NeverDPlugin.h,plugins/example/example_plugin.c, and CLI plugin command implementation undertools/neverd/NEVERD_BUILD_PLUGINS=OFFremains default)__declspec(dllexport), document it in the guideOut of scope
Deliverables
docs/plugins.md(+ README link)References
README.mdplugins/example/docs/roadmap/README.md