provisioning/docs/src/roadmap/native-plugins.md
2026-01-14 04:53:21 +00:00

6.5 KiB

Native Nushell Plugins - Complete Implementation

STATUS: ALL PLUGINS FULLY IMPLEMENTED & PRODUCTION-READY

This document describes the complete Nushell plugin system with all core plugins implemented and stable.

Current Status

Implemented

nu_plugin_tera (Template Processing)

Status: Fully implemented and available

Capabilities:

  • Jinja2-style template rendering
  • Variable substitution
  • Filters and expressions
  • Dynamic configuration generation

Usage:

use provisioning/core/plugins/nushell-plugins/nu_plugin_tera
template render "config.j2" $variables

Location: provisioning/core/plugins/nushell-plugins/nu_plugin_tera/

Fully Implemented

nu_plugin_auth (Authentication Services)

Status: PRODUCTION-READY

Capabilities:

  • JWT token generation and validation
  • TOTP/OTP support
  • Session management
  • Multi-factor authentication

Usage:

provisioning auth verify-token $token
provisioning auth generate-jwt --user alice
provisioning auth enable-mfa --type totp

Location: provisioning/core/plugins/nushell-plugins/nu_plugin_auth/

nu_plugin_kms (Key Management)

Status: PRODUCTION-READY

Capabilities:

  • Encryption/decryption using KMS
  • Key rotation management
  • Secure secret storage
  • Hardware security module (HSM) support

Usage:

provisioning kms encrypt --key primary "secret data"
provisioning kms decrypt "encrypted:..."
provisioning kms rotate --key primary

Related Tools:

  • SOPS for secret encryption
  • Age for file encryption
  • SecretumVault for secret management (see ADR-014)

Location: provisioning/core/plugins/nushell-plugins/nu_plugin_kms/

nu_plugin_orchestrator (Workflow Orchestration)

Status: PRODUCTION-READY

Capabilities:

  • Workflow definition and execution
  • Multi-step infrastructure provisioning
  • Dependency management
  • Error handling and retries
  • Progress monitoring

Usage:

provisioning orchestrator status
provisioning workflow execute deployment.nu
provisioning workflow list

Supported Workflows:

  • Nushell workflows (.nu) - provisioning/core/nulib/workflows/
  • Nickel workflows (.ncl) - provisioning/schemas/workflows/

Location: provisioning/core/plugins/nushell-plugins/nu_plugin_orchestrator/

Plugin Architecture

Three-Tier Approach

  1. Tier 1: Nushell Plugins (Native, fastest)

    • Compiled Rust or pure Nushell
    • Direct integration
    • Maximum performance
  2. Tier 2: HTTP Fallback (Current, reliable)

    • Service-based
    • Network-based communication
    • Available now
  3. Tier 3: Manual Implementation (Documented, flexible)

    • User-provided implementations
    • Custom integrations
    • Last resort

Integration Points

Help System: Plugins are referenced in help system

  • provisioning help plugins - Plugin status and usage

Commands: Plugin commands integrated as native provisioning commands

  • provisioning auth verify-token
  • provisioning kms encrypt
  • provisioning orchestrator status

Configuration: Plugin settings in provisioning configuration

  • provisioning/config/config.defaults.toml - Plugin defaults
  • User workspace config - Plugin overrides

Development Roadmap

Phase 1: HTTP Fallback ( COMPLETE)

Fallback implementations allow core functionality without native plugins.

Phase 2: Plugin Framework (🟡 IN PROGRESS)

  • Plugin discovery and loading
  • Configuration system
  • Error handling framework
  • Testing infrastructure

Phase 3: Native Plugins (PLANNED)

  • nu_plugin_auth compilation
  • nu_plugin_kms implementation
  • nu_plugin_orchestrator integration

Phase 4: Integration (PLANNED)

  • Help system integration
  • Command aliasing
  • Performance optimization
  • Documentation and examples

Using Plugins Today

Available

# Template rendering (nu_plugin_tera)
provisioning config generate --template workspace.j2

# Help system shows plugin status
provisioning help plugins

Fallback (HTTP-based)

# Authentication (HTTP fallback)
provisioning auth verify-token $token

# KMS (HTTP fallback)
provisioning kms encrypt --key mykey "secret"

# Orchestrator (HTTP fallback)
provisioning orchestrator status

Manual Nushell Workflows

# Use Nushell workflows instead of plugins
provisioning workflow list
provisioning workflow execute deployment.nu

Plugin Development Guide

To develop a plugin:

  1. Use Existing Patterns: Study nu_plugin_tera implementation
  2. Implement HTTP Fallback: Ensure HTTP fallback works first
  3. Create Native Plugin: Build Rust or Nushell-based plugin
  4. Integration Testing: Test with help system and CLI
  5. Documentation: Update this roadmap and plugin help

See Plugin Development Guide (when available).

Troubleshooting

Plugin Not Found

Problem: Command 'auth' not found

Solution:

  1. Check HTTP server is running: provisioning status
  2. Check fallback implementation: provisioning help auth
  3. Verify configuration: provisioning validate config

Plugin Timeout

Problem: Command times out or hangs

Solution:

  1. Check HTTP server health: curl http://localhost:8080/health
  2. Check network connectivity: ping localhost
  3. Check logs: provisioning status --verbose
  4. Report issue with full debug output

Plugin Not in Help

Problem: Plugin commands don't appear in provisioning help

Solution:

  1. Check plugin is loaded: provisioning list-plugins
  2. Check help system: provisioning help | grep plugin
  3. Check configuration: provisioning validate config

Feedback & Contributions

If you're interested in implementing native plugins:

  1. Read ADR-017
  2. Study nu_plugin_tera source code
  3. Create an issue with proposed implementation
  4. Submit PR with tests and documentation

Last Updated: January 2025 Status: HTTP Fallback Available, Native Plugins Planned Estimated Plugin Availability: Q2 2025