Official plugin repository for StreamSpace.
This repository contains official and community-contributed plugins that extend StreamSpace functionality. Plugins can add new features, integrate with external services, customize workflows, and enhance the user interface.
streamspace-plugins/
├── streamspace-slack/ # Slack integration plugin
├── streamspace-teams/ # Microsoft Teams plugin
├── streamspace-discord/ # Discord integration plugin
├── streamspace-pagerduty/ # PagerDuty integration plugin
├── streamspace-email/ # SMTP email plugin
├── streamspace-calendar/ # Calendar integration plugin
├── streamspace-datadog/ # Datadog monitoring plugin
├── streamspace-newrelic/ # New Relic monitoring plugin
├── streamspace-sentry/ # Sentry error tracking plugin
├── streamspace-elastic-apm/ # Elastic APM plugin
├── streamspace-honeycomb/ # Honeycomb observability plugin
├── streamspace-compliance/ # Compliance framework plugin
├── streamspace-dlp/ # Data loss prevention plugin
├── streamspace-audit-advanced/ # Advanced audit logging plugin
├── streamspace-recording/ # Session recording plugin
├── streamspace-snapshots/ # Session snapshots plugin
├── streamspace-multi-monitor/ # Multi-monitor support plugin
├── streamspace-workflows/ # Workflow automation plugin
├── streamspace-analytics-advanced/ # Advanced analytics plugin
├── streamspace-auth-saml/ # SAML authentication plugin
├── streamspace-auth-oauth/ # OAuth/OIDC authentication plugin
├── streamspace-storage-s3/ # S3 storage backend plugin
├── streamspace-storage-azure/ # Azure storage backend plugin
├── streamspace-storage-gcs/ # Google Cloud Storage plugin
├── streamspace-billing/ # Billing & usage tracking plugin
├── streamspace-node-manager/ # Kubernetes node manager plugin
├── catalog.yaml # Plugin discovery metadata
├── claude.md # AI context documentation
├── README.md # This file
└── CONTRIBUTING.md # Contribution guidelines
Official plugins are maintained by the StreamSpace team and follow strict quality standards:
- session-recorder: Record and replay user sessions
- audit-logger: Enhanced audit logging with external storage
- slack-integration: Slack notifications for session events
- metrics-exporter: Export metrics to external monitoring systems
Community plugins are contributed by users and may have varying levels of support:
- github-integration: GitHub issue creation from sessions
- custom-theme: Example custom UI theme
- jira-integration: Create Jira tickets from sessions
- ldap-sync: Sync users from LDAP/Active Directory
This repository is the source tree for plugins. The StreamSpace runtime does not
load raw *_plugin.go files from here; it loads packaged plugin bundles that
contain a compiled .so, a runtime manifest, and plugin metadata.
Generate a static marketplace layout with:
./scripts/package_plugins.sh
That produces:
dist/
├── catalog.yaml
└── streamspace-slack/
├── manifest.json
├── streamspace-slack.so
├── plugin.tar.gz
└── README.md
Point StreamSpace's PLUGIN_REPOSITORY_URL at the published dist/ root. For
an official deployment, that can be a static path on streamspace.dev.
StreamSpace can automatically sync plugins from this repository:
# In Helm values.yaml repositories: plugins: enabled: true url: https://github.com/JoshuaAFerguson/streamspace-plugins branch: main syncInterval: "1h"
# Using StreamSpace CLI streamspace plugin install streamspace-recording # Or manually kubectl apply -f https://raw.githubusercontent.com/JoshuaAFerguson/streamspace-plugins/main/streamspace-recording/manifest.yaml
# Via API curl https://streamspace.local/api/plugins/catalog # Or view catalog.yaml curl https://raw.githubusercontent.com/JoshuaAFerguson/streamspace-plugins/main/catalog.yaml
StreamSpace supports several plugin types:
Add new features and UI components to the platform.
Example: Custom dashboard widgets, new session actions
React to system events in real-time.
Example: Send notifications on session creation, log user activity
Available Events:
session.created,session.started,session.stopped,session.deleteduser.created,user.updated,user.deleted,user.logintemplate.created,template.updated,template.deletedplugin.installed,plugin.enabled,plugin.disabled,plugin.uninstalledsystem.startup,system.shutdown,audit.violation
Connect StreamSpace to external services.
Example: Slack, GitHub, Jira, PagerDuty integrations
Customize the web interface appearance.
Example: Dark theme, company branding, accessibility themes
Each plugin must follow this structure:
my-plugin/
├── manifest.json # Plugin metadata (required)
├── index.js # Entry point (required)
├── README.md # Documentation (required)
├── config.schema.json # Configuration schema (optional)
├── package.json # Node.js dependencies (if needed)
└── assets/ # Images, icons, etc.
└── icon.png
{
"name": "my-plugin",
"version": "1.0.0",
"displayName": "My Plugin",
"description": "Brief description",
"type": "extension",
"author": "Your Name",
"license": "MIT",
"permissions": ["read:sessions"],
"entrypoints": {
"main": "index.js"
}
}module.exports = { async onLoad() { console.log('Plugin loaded!'); }, async onUnload() { console.log('Plugin unloaded!'); } };
# Clone this repository git clone https://github.com/JoshuaAFerguson/streamspace-plugins.git cd streamspace-plugins # Create plugin directory mkdir streamspace-my-plugin cd streamspace-my-plugin # Initialize npm init -y # Create manifest cat > manifest.json <<EOF { "name": "my-plugin", "version": "1.0.0", "displayName": "My Plugin", "description": "My custom StreamSpace plugin", "type": "extension", "author": "Your Name", "license": "MIT", "permissions": ["read:sessions"], "entrypoints": { "main": "index.js" } } EOF # Create entry point cat > index.js <<EOF module.exports = { async onLoad() { console.log('My plugin loaded!'); } }; EOF
# Package plugin tar -czf my-plugin.tar.gz manifest.json index.js # Upload to StreamSpace curl -X POST https://streamspace.local/api/plugins/upload \ -H "Authorization: Bearer $TOKEN" \ -F "file=@my-plugin.tar.gz" # Enable plugin curl -X POST https://streamspace.local/api/plugins/my-plugin/enable \ -H "Authorization: Bearer $TOKEN"
- Fork this repository
- Add your plugin directory (e.g.,
streamspace-my-plugin/) - Update
catalog.yaml - Submit a pull request
See CONTRIBUTING.md for detailed guidelines.
Plugins have access to the StreamSpace API:
module.exports = { async onLoad({ api, config }) { // List sessions const sessions = await api.sessions.list(); // Get user info const user = await api.users.get('username'); // Access plugin config const setting = config.get('mySetting'); // Register webhook api.webhooks.on('session.created', async (event) => { console.log('New session:', event.data.session); }); } };
api.sessions- Session managementapi.users- User managementapi.templates- Template operationsapi.plugins- Plugin managementapi.webhooks- Event subscriptionsapi.metrics- Metrics collectionapi.logs- Logging utilities
See API Reference for complete documentation.
Plugins must declare required permissions:
read:sessions- View session informationwrite:sessions- Create/modify sessionsread:users- View user informationwrite:users- Create/modify usersread:templates- View templateswrite:templates- Create/modify templatesadmin- Administrative accessnetwork- Make external HTTP requests
All plugins are:
- ✅ Sandboxed in isolated environments
- ✅ Rate-limited to prevent abuse
- ✅ Audited for security issues
- ✅ Reviewed before inclusion in official catalog
See Security Guidelines for details.
// streamspace-slack/index.js module.exports = { async onLoad({ api, config }) { const webhookUrl = config.get('slackWebhookUrl'); api.webhooks.on('session.created', async (event) => { await fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: `New session created: ${event.data.session.name}` }) }); }); } };
// community/custom-widget/index.js module.exports = { async onLoad({ api, ui }) { ui.registerWidget({ id: 'my-widget', title: 'My Custom Widget', component: 'MyWidget.vue', location: 'dashboard' }); } };
- Documentation: Plugin Development Guide
- API Reference: Plugin API
- Discussions: GitHub Discussions
- Issues: GitHub Issues
MIT License - see LICENSE
- Main Project: StreamSpace
- Template Repository: streamspace-templates
- Documentation: StreamSpace Docs