Plugin Architecture
Every NeMo Helix capability, from agents and evaluation to guardrails, routing, and optimization, is a plugin: a Python package that registers its pieces through entry points. Skills are instructions, shipped with plugins, that teach coding agents how to use those capabilities.
Plugin Surfaces
A plugin contributes one or more surfaces. Each entry-point group maps a name to a class or function:
Some groups extend another plugin. For example, a job that declares an optimization strategy becomes
a strategy of nemo agents optimize.
A minimal plugin depends only on nemo-helix-plugin:
Every HTTP route must declare its authorization, or the platform refuses to build its policy; see Plugin Authorization. For a complete plugin with every surface, see the example plugin.
Install a Plugin
The default plugins ship with nemo-helix; nemo --help lists the ones in your environment.
Install another plugin into the same Python environment as the platform, then restart the platform
so its entry points are discovered:
Check that it loaded:
Middleware plugins log Loaded inference middleware plugin '<name>' at startup.
Virtual Model Plugins
An inference middleware plugin processes requests and responses for any
virtual model that lists it. Subclass
NemoInferenceMiddleware and implement the hooks you need; unimplemented hooks pass through.
Register the class. The entry-point name is what virtual models reference:
nemo-switchyard and nemo-guardrails are built the same way. The example plugin’s
middleware
shows streaming redaction and stored configs.
Optimization Strategy Plugins
An optimization strategy is an ordinary
job that declares one extra class variable, nemo_agent_optimization_strategy. The router behind
nemo agents optimize run-strategy discovers every installed job that declares it, and forwards every
submitted field except strategy to the job’s own spec.
Users then run nemo agents optimize run-strategy --strategy my-strategy --agent my-agent. Fields
outside the shared --agent, --optimize-config, --optimize-config-fileset, and --output flags
travel through --spec. Keep the stored agent unchanged and write candidates to the job’s results.
To add a companion command to nemo agents optimize, register a register(group: typer.Typer)
function under nemo.cli.agents.optimize. Prefix it with your strategy name unless it is generic.
The switchyard
and prompt-master
strategies are complete examples, including executor selection.
Skills
Skills are Markdown instructions (SKILL.md files) that teach a coding agent, such as Claude Code,
Codex, Cursor, or OpenCode, to use NeMo Helix correctly. They are not runtime services. Each plugin
ships the skills for its capability, so installed skills follow installed plugins.
nemo setup can install skills for you. To ship skills with a plugin, register a function that returns
the directory holding one sub-directory per skill:
For skill structure and conventions, see the Skills Spec.