Appearance
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
- Development - Write and test locally
- Build - Compile to WebAssembly
- Deploy - Creates new version
- Active - Serves all requests
- Previous - Kept for rollback
- 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:
- Navigate to Plugins
- Select your plugin
- View "Version History" tab
- 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:
Via Console:
- Go to Plugin → Version History
- Select previous version
- Click "Activate"
- Instant rollback
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:
- Check activation in Console
- Test through MCP client
- Monitor for errors
- 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:
- Clear MCP client cache
- Restart AI agent
- 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:
- New version uploaded
- Platform validates
- Atomic switch to new version
- Old version connections drain
- 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:
- Version N - Current behavior
- Version N+1 - New behavior
- Switch between versions as needed
Emergency Rollback
Via Console:
- Identify problematic version
- Select previous stable version
- Activate immediately
- 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
- Publishing - Deploy your plugins
- Configuration - Environment setup
- Quick Start - Build your first plugin