navi-plugin-api
Stable plugin ABI for NAVI — the trait definitions and types that plugin authors implement.
This crate is intentionally minimal: it has no dependency on navi-core and defines types used across the plugin boundary. Executable plugins run as WASM (navi-plugin-runtime / navi-plugin-orchestrator); native libloading plugins were removed (ADR 0013).
Plugin ABI
use ;
;
Key types
| Type | Description |
|---|---|
NaviPlugin |
Top-level plugin trait — metadata + tool registration |
PluginRegistry |
Registration interface for tools, policies, and components |
PluginTool |
Self-contained tool trait (definition + invoke) |
PluginToolDefinition |
Name, description, kind, and JSON schema |
PluginToolKind |
Read, Write, Command, or Custom |
PluginToolInvocation |
Invocation id, tool name, and JSON input |
PluginToolResult |
Invocation id, success flag, and JSON output |
ABI versioning
The constant NAVI_PLUGIN_API_VERSION (currently 2) is checked at load time. The host rejects plugins with incompatible versions.
Writing a plugin
- Depend on
navi-plugin-api(notnavi-core) - Implement
NaviPluginand one or morePluginTools - Export
navi_plugin_entrypointas a#[no_mangle]function - Build as a
cdylib(.so/.dylib/.dll)
[]
= ["cdylib"]
Part of the NAVI workspace
Full project: https://github.com/navi-ai-org/navi License: Apache-2.0