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:
- In your Nextcloud instance, create an App Password under Settings → Security
- In Synaplan's admin panel, add the Nextcloud connection with the server URL and app password
- Select which folders to index
- 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:
- Generate an API token or app password in your OpenCloud instance
- Configure the connection in Synaplan's admin panel
- 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
BCONFIGfor simple key-value config (withBGROUP = "P_{pluginName}") and the genericplugin_datatable for structured data viaPluginDataService. - 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 |