Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

StreamSpace Plugins

Official plugin repository for StreamSpace.

Overview

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.

Repository Structure

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

Plugin Categories

Official Plugins

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

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

Usage

Runtime Packaging

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.

Install from Catalog

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"

Install Individual Plugin

# 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

List Available Plugins

# Via API
curl https://streamspace.local/api/plugins/catalog
# Or view catalog.yaml
curl https://raw.githubusercontent.com/JoshuaAFerguson/streamspace-plugins/main/catalog.yaml

Plugin Types

StreamSpace supports several plugin types:

1. Extension Plugins

Add new features and UI components to the platform.

Example: Custom dashboard widgets, new session actions

2. Webhook Plugins

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.deleted
  • user.created, user.updated, user.deleted, user.login
  • template.created, template.updated, template.deleted
  • plugin.installed, plugin.enabled, plugin.disabled, plugin.uninstalled
  • system.startup, system.shutdown, audit.violation

3. API Integration Plugins

Connect StreamSpace to external services.

Example: Slack, GitHub, Jira, PagerDuty integrations

4. UI Theme Plugins

Customize the web interface appearance.

Example: Dark theme, company branding, accessibility themes

Plugin Structure

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

Minimal manifest.json

{
 "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"
 }
}

Minimal index.js

module.exports = {
 async onLoad() {
 console.log('Plugin loaded!');
 },
 async onUnload() {
 console.log('Plugin unloaded!');
 }
};

Quick Start

1. Create a New Plugin

# 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

2. Test Your Plugin

# 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"

3. Submit for Inclusion

  1. Fork this repository
  2. Add your plugin directory (e.g., streamspace-my-plugin/)
  3. Update catalog.yaml
  4. Submit a pull request

See CONTRIBUTING.md for detailed guidelines.

API Reference

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);
 });
 }
};

Available API Modules

  • api.sessions - Session management
  • api.users - User management
  • api.templates - Template operations
  • api.plugins - Plugin management
  • api.webhooks - Event subscriptions
  • api.metrics - Metrics collection
  • api.logs - Logging utilities

See API Reference for complete documentation.

Permissions

Plugins must declare required permissions:

  • read:sessions - View session information
  • write:sessions - Create/modify sessions
  • read:users - View user information
  • write:users - Create/modify users
  • read:templates - View templates
  • write:templates - Create/modify templates
  • admin - Administrative access
  • network - Make external HTTP requests

Security

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.

Examples

Webhook Plugin - Slack Notifications

// 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}`
 })
 });
 });
 }
};

Extension Plugin - Custom Dashboard Widget

// 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'
 });
 }
};

Support

License

MIT License - see LICENSE

Links

About

Official and community plugins for StreamSpace - extensions, webhooks, and integrations

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /