Plugins & Integrations

Synaplan uses a non-invasive plugin architecture. Plugins live under plugins/ in the main repo, store data in generic shared tables, and expose their own API endpoints — no modifications to core Synaplan code are required.

Available Plugins

TTS — Text-to-Speech

Repository: github.com/metadist/synaplan-tts

Adds voice output to AI responses. Runs as a separate Docker service alongside Synaplan.

git clone https://github.com/metadist/synaplan-tts.git
cd synaplan-tts
docker compose up -d

Then set SYNAPLAN_TTS_URL in your Synaplan .env to point to the TTS service. The platform also supports ElevenLabs as a cloud-based TTS provider via ELEVENLABS_API_KEY.


Cloud Storage Integrations

Nextcloud

GitHub: github.com/nextcloud

Connect your Nextcloud instance to use its files as knowledge sources for RAG conversations.

Capabilities:

  • Index documents from specific Nextcloud folders
  • Automatic re-indexing when files are added or changed
  • Full text extraction pipeline (PDF, Word, Excel, images with OCR)
  • Per-user connection settings with app passwords

Setup:

  1. In your Nextcloud instance, create an App Password under Settings → Security
  2. In Synaplan's admin panel, add the Nextcloud connection with the server URL and app password
  3. Select which folders to index
  4. Documents are processed and become available as knowledge sources in AI chats

OpenCloud (ownCloud Infinite Scale)

GitHub: github.com/opencloud-eu

Full integration with OpenCloud / oCIS for organizations using the ownCloud ecosystem.

Capabilities:

  • WebDAV and Graph API support for file access
  • Spaces-aware document indexing
  • Automatic sync and re-indexing
  • Same text extraction and RAG pipeline as Nextcloud

Setup:

  1. Generate an API token or app password in your OpenCloud instance
  2. Configure the connection in Synaplan's admin panel
  3. Select spaces and folders to index

Building Your Own Plugin

Plugins follow a minimal structure:

my-plugin/
├── manifest.json           # Metadata, capabilities, version
├── backend/
│   ├── Controller/         # API endpoints (Symfony controllers)
│   └── Service/            # Business logic
├── frontend/               # Optional Vue components
└── migrations/
    └── 001_setup.sql       # Per-user config setup (BCONFIG entries)

Key rules:

  • No custom database tables — use BCONFIG for simple key-value config (with BGROUP = "P_{pluginName}") and the generic plugin_data table for structured data via PluginDataService.
  • No core code changes — plugins are self-contained under plugins/{name}/.
  • API namespacing — all endpoints live under /api/v1/user/{userId}/plugins/{name}/....
  • Reuse core services — use Synaplan's AiFacade, ModelConfigService, PluginDataService, etc. through dependency injection.

manifest.json Example

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "Short description of what the plugin does",
  "author": "Your Name",
  "capabilities": ["classify", "analyze"],
  "config_group": "P_myplugin"
}

Installing a Plugin

# Copy plugin directory into Synaplan
cp -r my-plugin/ /path/to/synaplan/plugins/my-plugin/

# Install for a specific user
docker compose exec backend php bin/console app:plugin:install <userId> my-plugin

Related Repositories

Repository Description Link
synaplan Main platform (backend + frontend) github.com/metadist/synaplan
synaplan-tts Text-to-Speech service github.com/metadist/synaplan-tts
synaplan-marketing Marketing website and content github.com/metadist/synaplan-marketing
synaplan-charts Helm charts for Kubernetes deployment github.com/metadist/synaplan-charts
synaplan-platform Production deployment configs github.com/metadist/synaplan-platform
Nextcloud Self-hosted cloud storage platform github.com/nextcloud
OpenCloud ownCloud Infinite Scale (oCIS) github.com/opencloud-eu