Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 25 additions & 9 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -338,14 +338,8 @@ streamspace/
│ │ ├── database-init.yaml # PostgreSQL initialization
│ │ └── ingress.yaml # Traefik ingress configuration
│ │
│ ├── templates/ # Application template manifests (22 pre-built)
│ │ ├── browsers/ # Firefox, Chromium, Brave, LibreWolf (4)
│ │ ├── development/ # VS Code, GitHub Desktop, etc. (3)
│ │ ├── productivity/ # LibreOffice, Calligra, etc. (3)
│ │ ├── design/ # GIMP, Krita, Inkscape, Blender, etc. (5)
│ │ ├── media/ # Audacity, Kdenlive, etc. (2)
│ │ ├── gaming/ # DuckStation, Dolphin, etc. (2)
│ │ └── webtop/ # Desktop environments (3)
│ ├── templates/ # Minimal bundled templates (1-2 defaults)
│ │ └── browsers/ # Firefox only (minimal default)
│ │
│ └── monitoring/ # Observability stack
│ ├── servicemonitor.yaml # Prometheus ServiceMonitor
Expand Down Expand Up @@ -401,10 +395,11 @@ streamspace/
- **`manifests/`**: All Kubernetes YAML manifests, organized by purpose
- `crds/`: Custom Resource Definitions for Sessions and Templates
- `config/`: Platform deployment configurations
- `templates/`: Pre-built application templates
- `templates/`: **Minimal bundled templates** (1-2 defaults for offline/air-gapped use)
- `monitoring/`: Prometheus and Grafana configurations

- **`chart/`**: Helm chart for easy deployment and configuration management
- Includes repository sync configuration for external templates and plugins

- **`docs/`**: Comprehensive technical documentation
- Architecture diagrams and data flows
Expand All @@ -421,12 +416,33 @@ streamspace/
- Authentication and session management
- Plugin system backend
- WebSocket proxy for VNC connections
- **Repository sync** for external templates and plugins

- **`ui/`**: React web UI with TypeScript
- User dashboard for session management
- Admin panel for platform administration
- Plugin catalog and management UI

### External Repositories

StreamSpace uses separate repositories for templates and plugins to enable:
- Independent versioning and releases
- Community contributions without main repo access
- Flexible deployment (online/offline modes)
- Multiple repository sources

**Template Repository**: [streamspace-templates](https://github.com/JoshuaAFerguson/streamspace-templates)
- 22+ official application templates
- Organized by category (browsers, development, design, etc.)
- Auto-synced by API backend (configurable interval)
- Catalog metadata for discovery

**Plugin Repository**: [streamspace-plugins](https://github.com/JoshuaAFerguson/streamspace-plugins)
- Official and community plugins
- Extension points for platform functionality
- Auto-discovery via catalog
- Optional auto-install on deployment

---

## 🛠 Key Technologies
Expand Down
85 changes: 56 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,30 +290,43 @@ Admin panel: `https://streamspace.example.com/admin`

## 📱 Available Applications

StreamSpace includes **200+ pre-configured templates** from LinuxServer.io:
StreamSpace provides **200+ pre-configured templates** via the [streamspace-templates](https://github.com/JoshuaAFerguson/streamspace-templates) repository:

### Web Browsers (5)
Firefox, Chromium, Chrome, Brave, LibreWolf
### Web Browsers
Firefox, Chromium, Brave, LibreWolf

### Development (10+)
VS Code, GitHub Desktop, GitQlient, Gitea, JupyterLab
### Development
VS Code, GitHub Desktop, GitQlient, Sublime Text

### Productivity (20+)
LibreOffice, Calligra, GIMP, Inkscape, Krita, Blender
### Productivity
LibreOffice, Calligra, OnlyOffice

### Media (15+)
Audacity, Kdenlive, Jellyfin, Plex, Radarr, Sonarr
### Design & Graphics
GIMP, Krita, Inkscape, Blender, FreeCAD, KiCad, darktable

### Design (10+)
GIMP, Krita, Inkscape, Blender, FreeCAD, KiCad
### Media Production
Audacity, Kdenlive

### Desktop Environments (16)
Ubuntu (XFCE, KDE, MATE), Alpine (i3), Fedora, Arch
### Gaming & Emulation
Dolphin (GameCube/Wii), DuckStation (PlayStation)

### Gaming (8+)
Dolphin, DuckStation, MAME, GZDoom, Flycast
### Desktop Environments
Ubuntu (XFCE, KDE), Alpine (i3), Arch

See full catalog: [docs/APPLICATIONS.md](docs/APPLICATIONS.md)
**Full Template Catalog**: [streamspace-templates](https://github.com/JoshuaAFerguson/streamspace-templates)

### Automatic Template Sync

Templates are automatically synced from the external repository:

```yaml
# In chart/values.yaml
repositories:
templates:
enabled: true
url: https://github.com/JoshuaAFerguson/streamspace-templates
syncInterval: 1h
```

## 🔌 Plugin System

Expand Down Expand Up @@ -363,9 +376,28 @@ kubectl get -n streamspace cm plugin-registry -o yaml
- View plugin usage statistics
- Manage plugin permissions

### Plugin Repositories
### Official Plugin Repository

Plugins are automatically synced from the [streamspace-plugins](https://github.com/JoshuaAFerguson/streamspace-plugins) repository:

```yaml
# In chart/values.yaml
repositories:
plugins:
enabled: true
url: https://github.com/JoshuaAFerguson/streamspace-plugins
syncInterval: 1h
```

**Browse Plugin Catalog**: [streamspace-plugins](https://github.com/JoshuaAFerguson/streamspace-plugins)

**Available Plugin Categories**:
- **Official** - Maintained by StreamSpace team
- **Community** - User-contributed plugins

### Custom Plugin Repositories

Add custom plugin repositories to access more plugins:
Add additional plugin repositories to access more plugins:

1. Go to **Repositories** in the web UI
2. Click **Add Repository**
Expand All @@ -374,17 +406,12 @@ Add custom plugin repositories to access more plugins:
5. Click **Sync** to load plugins from the repository

```yaml
# Example: Add via kubectl
apiVersion: stream.space/v1alpha1
kind: Repository
metadata:
name: company-plugins
namespace: streamspace
spec:
url: https://github.com/mycompany/streamspace-plugins
branch: main
authType: ssh
authSecret: github-ssh-key
# Example: Add custom repository via Helm values
repositories:
plugins:
enabled: true
url: https://github.com/mycompany/streamspace-plugins
branch: main
```

### Security & Permissions
Expand Down
60 changes: 50 additions & 10 deletions chart/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ api:
# CORS settings
corsOrigins: "*" # Restrict in production

# Repository sync
# Repository sync (deprecated - use repositories section below)
syncInterval: "1h"
syncWorkDir: /tmp/streamspace-repos

Expand Down Expand Up @@ -482,18 +482,58 @@ secrets:

## Application Templates
templates:
# Deploy sample templates on install
# Deploy bundled sample templates on install (minimal set)
# For full catalog, enable external repository below
deploy: true

# Categories to deploy
# Categories to deploy from bundled templates
categories:
browsers: true # Firefox, Chromium, Brave, LibreWolf
development: true # VS Code, GitHub Desktop
productivity: true # LibreOffice, Calligra
design: false # GIMP, Krita, Inkscape, Blender (large images)
media: false # Audacity, Kdenlive
gaming: false # DuckStation, Dolphin
webtop: false # Desktop environments
browsers: true # Firefox only (minimal default)
development: false # Use external repository
productivity: false # Use external repository
design: false # Use external repository
media: false # Use external repository
gaming: false # Use external repository
webtop: false # Use external repository

## External Repositories
# StreamSpace can sync templates and plugins from external Git repositories
repositories:
# Application templates repository
templates:
enabled: true
url: https://github.com/JoshuaAFerguson/streamspace-templates
branch: main
syncInterval: 1h # How often to sync (e.g., 15m, 1h, 24h)

# Categories to sync from external repository
categories:
browsers: true # Firefox, Chromium, Brave, LibreWolf
development: true # VS Code, GitHub Desktop
productivity: true # LibreOffice, Calligra
design: true # GIMP, Krita, Inkscape, Blender
media: true # Audacity, Kdenlive
gaming: true # DuckStation, Dolphin
webtop: true # Desktop environments

# Plugin repository
plugins:
enabled: true
url: https://github.com/JoshuaAFerguson/streamspace-plugins
branch: main
syncInterval: 1h

# Auto-install official plugins
autoInstall:
official: false # Set to true to auto-install all official plugins
community: false # Set to true to auto-install all community plugins (not recommended)

# Specific plugins to auto-install
install:
[]
# - session-recorder
# - audit-logger
# - slack-integration

## Monitoring & Observability
monitoring:
Expand Down
50 changes: 50 additions & 0 deletions manifests/templates/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# StreamSpace Templates - Minimal Defaults

This directory contains **minimal bundled templates** for offline/air-gapped deployments or quick testing.

## Full Template Catalog

For the **complete template catalog** (200+ applications), see:

🔗 **[streamspace-templates](https://github.com/JoshuaAFerguson/streamspace-templates)**

The external repository includes:
- **Browsers** (4): Firefox, Chromium, Brave, LibreWolf
- **Development** (3): VS Code, GitHub Desktop, GitQlient
- **Productivity** (2): LibreOffice, Calligra
- **Design** (6): GIMP, Krita, Inkscape, Blender, FreeCAD, KiCad
- **Media** (2): Audacity, Kdenlive
- **Gaming** (2): DuckStation, Dolphin
- **Webtop** (3): Ubuntu XFCE, Ubuntu KDE, Alpine i3

## Automatic Syncing

StreamSpace automatically syncs templates from the external repository when configured:

```yaml
# In chart/values.yaml
repositories:
templates:
enabled: true
url: https://github.com/JoshuaAFerguson/streamspace-templates
branch: main
syncInterval: 1h
```

## Manual Installation

Deploy all templates from external repository:

```bash
kubectl apply -f https://raw.githubusercontent.com/JoshuaAFerguson/streamspace-templates/main/catalog.yaml
```

Or specific category:

```bash
kubectl apply -f https://raw.githubusercontent.com/JoshuaAFerguson/streamspace-templates/main/browsers/
```

## Adding Custom Templates

To add your own templates, see the [Template Development Guide](https://github.com/JoshuaAFerguson/streamspace-templates/blob/main/CONTRIBUTING.md).
40 changes: 0 additions & 40 deletions manifests/templates/browsers/brave.yaml

This file was deleted.

42 changes: 0 additions & 42 deletions manifests/templates/browsers/chromium.yaml

This file was deleted.

Loading
Loading