Straight answers
for your security review.
How tenants are isolated, how builds run, how environment variables are encrypted, and exactly what does — and doesn’t — get sent to AI providers. No marketing, just how it works.
Security & infrastructure FAQ
How are deployments isolated between tenants? +
Each project gets its own Coolify application (own Docker container, own RAM/vCPU/storage from your subscription tier). Each ProjectGroup gets its own Coolify Project + production-environment UUID, so cross-group network access isn't possible. Sibling services inside the same group share a Docker network on purpose so they can talk to each other; nothing crosses tenant boundaries.
Do builds run in ephemeral environments? +
Yes. Builds run in Coolify-managed Docker build containers. Every redeploy is sent with force=true, which skips Docker layer cache and re-resolves git HEAD, so you always get a clean build off the current commit. Test/preview deploys auto-cleanup after 180 minutes (Coolify app stopped + row deleted); failed prod deploys are pruned after 90 days.
What gets sent to AI providers during repo analysis or rescue? +
Repo analysis sends file paths (the GitHub tree) plus a capped white-list of manifests: package.json, *.csproj, requirements.txt, pyproject.toml, go.mod, etc. Max 25 files, longer ones truncated to 250 lines. That's it. Rescue sends the build-log tail (last 200 lines / 8 KB cap), runtime-log tail when the container is in a crash-loop, and deploy metadata. Env var values, source code beyond the manifest white-list, and any secrets are never sent. The provider is OpenRouter routing to Claude Haiku 4.5.
How are env vars encrypted and accessed during deploys? +
AES-256-GCM with a per-value random 12-byte nonce. Keys are versioned; a background rotation worker re-encrypts old rows in batches so retired keys can be removed safely. Every reveal/edit writes an audit row (actor hash, action, timestamp). At deploy-time, values are synced to Coolify per-key over authenticated HTTPS and the app is restarted; the row stays encrypted at rest in our DB.
Can build/runtime logs be fully exported or deleted? +
Build and runtime logs live in Coolify, not in our DB — we pull them on demand for the dashboard viewer. Deleting a project deletes its Coolify app, which deletes the logs. Right now there's no one-click "download full archive" — export is copy from the viewer. Audit logs (auth events + env-var changes) have an explicit retention worker that exports to CSV before deleting, default 24 months.
What happens if a project exceeds the free-tier limits? +
Free tier = 256 MB RAM / 0.5 vCPU / 4 GB storage / 3-month trial. On trial expiry the Coolify app is stopped, status flips to suspended, an email goes out — no data wipe. Runtime OOM and crash-loop (3+ restarts) surface a recommendation card for a tier upgrade; it's never auto-applied.
Are Dockerfile-based projects fully supported or constrained? +
Fully supported. Dockerfile is one of four build packs (Nixpacks, Dockerfile, Static, docker-compose). Coolify uses your Dockerfile as-is, no rewrites. Constraints come from the subscription tier (RAM / CPU / storage), not from the Dockerfile itself.
Still have a question?
Email us and we’ll answer directly.