cymph. Everything it needs runs on one host — there are no external dependencies apart from the integrations you configure and, optionally, an AI provider.
Services
ui, api and db each declare a healthcheck, and Compose starts them in dependency order — db before api, api before ui, ui before nginx.
Users reach the deployment through nginx, on the address and port you choose during installation. Uploads are capped at 20MB.
ui, api, embedding-api and db are reachable only on the internal Docker network — none of them is published on the host. The single published port is nginx’s, which means every request reaching the application has passed through TLS termination. See Networking.Data and volumes
Four Docker volumes hold everything that survives a container restart:
These are what you snapshot — see Backup & restore.
Secrets generated at setup
env.sh generates the deployment’s secrets on first run and writes them to .env and db/secrets.txt:
NEXTAUTH_SECRET/CYMPH_AUTH_SECRET— session token signingCYMPH_SESSION_SECRET— session stateCYMPH_ENCRYPTION_KEYandCYMPH_ENCRYPTION_IV— encryption of sensitive integration data at rest- A Fernet key in
db/secrets.txt, passed to the database container as a Compose secret
Outbound connections
Theapi service makes outbound connections to the endpoints your integrations point at, and to your AI provider if you enable one. Search embeddings are computed locally by embedding-api, so no content leaves the deployment for search, and product analytics is disabled in the on-prem configuration (NEXT_PUBLIC_AMPLITUDE_ENABLED=false).
See Networking for allowlisting, and AI & data usage for what an enabled AI provider receives.
