Yes, you can build a modern AI platform on PHP and JavaScript — and run it as an Open Source business. We just shipped Synaplan v4.0.8, so here's a quick look under the hood.
What Synaplan is
Synaplan is an open source AI knowledge platform: chat, RAG over your documents, embeddable chat widgets, WhatsApp and email integration. The stack is deliberately boring in the best way — Symfony on the backend, Vue 3 + TypeScript on the frontend, all glued together with Docker Compose. One docker compose up -d, paste an API key, done.
Two Docker images, on purpose
Our build is split in two:
The base image (synaplan-base-php) contains everything that is slow to build: FrankenPHP with PHP 8.5, the gRPC extension compiled from source, whisper.cpp for local speech-to-text, ffmpeg, ImageMagick, and all the PHP runtime tuning (OPcache, tracing JIT, worker mode). Compiling gRPC and whisper.cpp takes real time — but the base only changes once or twice a month, so we pay that cost rarely. CI builds it natively on amd64 and arm64 runners (no QEMU) and publishes one multi-arch manifest.
The app image just layers the Symfony application on top. It builds in a fraction of the time, so every release is fast — and every install, from an Apple Silicon laptop to a production cluster node, runs the exact same tuned runtime.
New in v4.0.8: AI provider keys now live in the database and are editable from the admin UI — no more .env juggling (existing .env files keep working).
Sovereignty means supporting every model
If you sell to European businesses and public administration, "just use one US API" is not an answer. So Synaplan treats AI providers as swappable: OpenAI, Anthropic, Google Gemini, Groq, Mistral, xAI, HuggingFace — and fully local Ollama with any model you can pull. Models are configured in the database, never hardcoded, and every answer shows which model produced it at what cost. Self-hosted with Ollama, your data never leaves your infrastructure and the per-token price is zero.
Qdrant for RAG
For retrieval we run Qdrant as a vector store right in the Compose stack. Documents are chunked, embedded (locally via bge-m3 on Ollama if you want zero external calls), and stored in per-user collections — the same mechanism also powers persistent AI memories across conversations. PHP talks straight to Qdrant's REST API; no middleware, no vendor lock-in.
The business part
The code is open source (self-host everything), and we run a hosted version at web.synaplan.com for teams who don't want to operate it themselves. Same image, same catalog, transparent per-model pricing. That's the whole model: the software is free, the convenience is the product.
Try it: git clone https://github.com/metadist/synaplan && docker compose up -d — a free Groq key gets you chatting in five minutes.