Skip to content

Versioning

How Noorle automatically manages plugin versions.

Overview

Noorle provides automatic version management for your plugins. Every deployment creates a new version, making it easy to track changes, roll back if needed, and maintain a complete deployment history.

Core Concepts

Plugin vs Version

  • Plugin: Your deployed capability (e.g., "weather-plugin")
  • Version: A specific deployment of that plugin (v1, v2, v3...)
  • Active Version: The current version handling all requests
  • Version History: Complete record of all deployments

Automatic Versioning

No manual version numbers needed:

bash
noorle plugin deploy  # Creates Version 1
noorle plugin deploy  # Creates Version 2
noorle plugin deploy  # Creates Version 3
# ... and so on

Each deployment automatically:

  • Increments the version number
  • Activates the new version
  • Preserves previous versions
  • Updates configuration and environment

How Versioning Works

First Deployment

When deploying a new plugin:

bash
noorle plugin deploy weather-plugin.npack

Result:

  • Creates plugin with Version 1
  • Immediately available to AI agents
  • Accessible through MCP
  • Version 1 becomes active

Subsequent Deployments

When deploying updates:

bash
# Make changes to your plugin
noorle plugin build
noorle plugin deploy

Result:

  • Automatically creates Version 2, 3, 4...
  • Instant activation (zero downtime)
  • Previous versions preserved
  • Immediate availability to agents

Version Lifecycle

  1. Development - Write and test locally
  2. Build - Compile to WebAssembly
  3. Deploy - Creates new version
  4. Active - Serves all requests
  5. Previous - Kept for rollback
  6. History - Archived versions

Version Information

What's Stored

Each version includes:

  • Version Number - Sequential identifier
  • Deployment Time - When deployed
  • Deployer - Who deployed it
  • Configuration - noorle.yaml snapshot
  • Environment - Variables at deployment
  • Binary - The plugin.wasm file

Viewing Version History

In Noorle Console:

  1. Navigate to Plugins
  2. Select your plugin
  3. View "Version History" tab
  4. See all deployments

Information shown:

  • Version numbers
  • Deployment timestamps
  • Configuration changes
  • Environment updates
  • Activation status

Managing Versions

Current Version

Check active version:

bash
noorle status my-plugin

Output:

Plugin: my-plugin
Active Version: 3
Deployed: 2024-01-15 10:30:00
Status: Active

Version Rollback

If issues occur, administrators can rollback:

  1. Via Console:

    • Go to Plugin → Version History
    • Select previous version
    • Click "Activate"
    • Instant rollback
  2. Effect:

    • Previous version becomes active
    • No redeployment needed
    • Immediate effect
    • Current version preserved

Version Comparison

Compare versions in Console:

  • Configuration differences
  • Environment changes
  • Code updates
  • Permission modifications

Best Practices

1. Deployment Strategy

Incremental Updates:

bash
# Small, frequent deployments
noorle plugin deploy  # v1: Initial feature
noorle plugin deploy  # v2: Bug fix
noorle plugin deploy  # v3: Enhancement

Better than large, infrequent updates.

2. Testing Before Deployment

bash
# Always test locally first
wasmtime run dist/plugin.wasm --invoke process "test"

# Then deploy
noorle plugin deploy

3. Document Changes

Keep a CHANGELOG.md:

markdown
## Version History

### v3 (2024-01-15)
- Added caching support
- Fixed timeout issue

### v2 (2024-01-14)
- Improved error handling
- Added retry logic

### v1 (2024-01-13)
- Initial release

4. Environment Coordination

When changing environment variables:

bash
# Update both config and environment
noorle plugin deploy --env-file .env.v2

The new version gets new environment automatically.

5. Monitor After Deployment

After each version:

  1. Check activation in Console
  2. Test through MCP client
  3. Monitor for errors
  4. Be ready to rollback

Version Naming

Automatic Naming

Noorle uses sequential numbers:

  • Version 1
  • Version 2
  • Version 3

Your File Naming

Keep your files organized:

bash
# Good: Descriptive archive names
weather-plugin.npack
weather-plugin-fixed.npack
weather-plugin-enhanced.npack

# Avoid: Version in filename
weather-v1.npack        # Confusing
weather-final.npack     # Not final
weather-2024.npack      # Date-based

CI/CD Integration

Automatic Deployments

GitHub Actions example:

yaml
name: Deploy on Push

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Install CLI
        run: curl -L cli.noorle.dev | sh

      - name: Build Plugin
        run: noorle plugin build

      - name: Deploy (Auto-version)
        env:
          NOORLE_TOKEN: ${{ secrets.NOORLE_TOKEN }}
        run: |
          noorle plugin deploy
          echo "New version deployed"

Version Tracking

Track deployments in CI:

yaml
- name: Deploy and Log Version
  run: |
    OUTPUT=$(noorle plugin deploy)
    VERSION=$(echo $OUTPUT | grep -oP 'Version: \K\d+')
    echo "Deployed Version $VERSION" >> $GITHUB_STEP_SUMMARY

Troubleshooting Versions

Version Not Activating

Check:

  • Deployment completed successfully
  • No validation errors
  • Console shows correct version

Solution:

bash
# Verify deployment
noorle status my-plugin

# Check logs
noorle logs my-plugin

Old Version Still Running

Causes:

  • Client caching
  • Browser cache
  • MCP client needs restart

Solutions:

  1. Clear MCP client cache
  2. Restart AI agent
  3. Verify in Console

Version History Missing

If history incomplete:

  • Check Console permissions
  • Verify plugin ownership
  • Contact support if needed

Rollback Not Working

Requirements:

  • Admin privileges required
  • Previous version must be valid
  • Platform must be accessible

Platform Behavior

Zero-Downtime Updates

How it works:

  1. New version uploaded
  2. Platform validates
  3. Atomic switch to new version
  4. Old version connections drain
  5. Seamless transition

Version Retention

Platform keeps:

  • Last 100 versions
  • All versions from last 30 days
  • Marked versions (future feature)

Version Cleanup

Automatic cleanup:

  • Very old versions archived
  • Binaries compressed
  • Metadata always retained

Security Considerations

Version Security

Each version:

  • Has independent permissions
  • Uses version-specific environment
  • Maintains security boundaries
  • Provides audit trail

Access Control

  • Deploy: Requires authentication
  • Rollback: Admin only
  • View History: Plugin owner
  • Delete: Not allowed (audit trail)

Environment Security

  • Variables encrypted per version
  • No cross-version access
  • Rotation supported
  • Audit logging enabled

Common Scenarios

Hotfix Deployment

bash
# Fix critical bug
vim src/main.py

# Quick deploy
noorle plugin publish  # Creates new version instantly

Feature Release

bash
# Develop feature
git checkout -b new-feature

# Test thoroughly
npm test

# Deploy when ready
noorle plugin deploy --env-file .env.prod

A/B Testing

Deploy different versions:

  1. Version N - Current behavior
  2. Version N+1 - New behavior
  3. Switch between versions as needed

Emergency Rollback

Via Console:

  1. Identify problematic version
  2. Select previous stable version
  3. Activate immediately
  4. Investigate issue offline

Integration with MCP

Automatic Updates

When new version deploys:

  • MCP tools update immediately
  • No client restart needed
  • New functions available
  • Backward compatibility maintained

Version in Tool Calls

MCP clients always use active version:

json
{
  "tool": "process",
  "plugin": "my-plugin",
  "version": "active"  // Always current
}

Next Steps