Files
light-heart-labs--dreamserver/ods/extensions
wehub-resource-sync 9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:33 +08:00
..

ODS Extensions

This directory contains all service extensions that ship with ODS. Each subdirectory under services/ is a self-contained extension with a manifest and optional compose files.

Documentation Map

Document What it covers
Extension Authoring Guide How to create a new extension: directory structure, manifest contract, compose patterns, GPU overlays, enable/disable mechanism, validation, and runtime lifecycle
Build On ODS How to fork ODS, ship a custom edition, keep changes rebase-friendly, and validate downstream changes
Extension Templates Copy-ready manifest, compose, GPU overlay, and dashboard plugin starter files
Extension Catalog List of all bundled extensions with ports, categories, and GPU compatibility
Manifest Schema Reference JSON Schema specification for manifest.yaml — all fields, types, and validation rules
Host Agent API API contract for the host agent that starts/stops extension containers from outside Docker
Dashboard API Extensions Endpoints REST API for browsing, installing, enabling, disabling, and uninstalling extensions

Directory Layout

extensions/
  CATALOG.md              # Bundled extension catalog
  README.md               # This file
  schema/
    service-manifest.v1.json  # JSON Schema for manifest validation
    README.md                 # Schema documentation
  templates/
    service-template.yaml      # Commented manifest starter
    compose-template.yaml      # Commented compose starter
    compose-gpu-swap.yaml      # CPU base + GPU image swap pattern
    compose-gpu-only.yaml      # GPU-only overlay pattern
  services/
    <service-id>/
      manifest.yaml           # Service metadata (required)
      compose.yaml            # Docker Compose fragment (extension services)
      compose.amd.yaml        # AMD GPU overlay (optional)
      compose.nvidia.yaml     # NVIDIA GPU overlay (optional)
      compose.local.yaml      # Mode-specific overlay (optional)
      README.md               # Per-service documentation (optional)

Core services (llama-server, open-webui, dashboard, dashboard-api) only have a manifest.yaml here — their compose definitions live in docker-compose.base.yml at the repository root.

  • Add an extension: 30-Minute Path
  • Build a custom edition: Build On ODS
  • Copy starter files: Extension Templates
  • Validate manifests: bash scripts/validate-manifests.sh or ods config validate
  • Audit extensions: python3 scripts/audit-extensions.py --project-dir .
  • Enable/disable from CLI: ods enable <id> / ods disable <id>