Self-hosting an AI stack used to mean standing up multiple services, managing GPU infrastructure, and dealing with complex orchestration. The modern landscape is different. For the workflow layer — the piece that connects your LLM calls, API requests, and business logic — self-hosting with Docker is a thirty-minute operation, not a week-long project.
Why Self-Host?
Data Privacy
When you run workflow execution on your own infrastructure, the inputs you send to your LLM and the outputs you receive never transit through a third-party system. For industries with data handling requirements — healthcare, finance, legal — this is not optional. For everyone else, it eliminates a category of risk without any performance cost.
Cost Predictability
SaaS AI tools typically charge per seat, per execution, or per workflow. These pricing models are designed to grow with your usage. When you self-host, the marginal cost of an additional workflow execution is essentially zero beyond infrastructure costs you already pay. At scale, the difference is significant.
Operational Control
When something breaks in a managed service, you file a support ticket and wait. When something breaks in your own infrastructure, you open the logs. You instrument the execution. You add a timeout. You fix the underlying issue. Self-hosting restores the debugging and optimization capabilities that managed services abstract away.
What Self-Hosting Waiflo Looks Like
Waiflo is designed to be self-hosted by default. The entire stack is a single Node.js process with file-based storage — no external database, no Redis, no message queue. A docker-compose.yml is included:
git clone https://github.com/jpdesmontils/waiflo
cd waiflo && cp .env.example .env
# Set JWT_SECRET and MASTER_SECRET
docker compose up -dThe editor is available immediately at http://localhost:3001/editor. Workflow files are persisted to a mounted volume, so they survive container restarts. The API is available at the same host for your backend to call.
What You Bring
Waiflo is not a managed LLM provider. You bring your own API keys — Anthropic, OpenAI, Mistral, or any provider that exposes a compatible API. Keys are stored encrypted at rest (AES-256-CBC) and never leave your infrastructure in plaintext.
This means your LLM costs go directly to your provider with no markup, and you have full visibility into what each workflow step costs. You can also switch providers per-step, running a cheap model for classification tasks and a more capable model for generation, without any platform constraints.
Production Hardening
For production deployments, a few additional steps matter:
- Nginx reverse proxy with SSL termination. The included
nginx.confhandles SSE streaming (theproxy_buffering offdirective is essential for real-time token streaming). - PM2 or systemd for process supervision, with automatic restart on crash.
- Regular backups of the
waiflo-data/directory, which contains all user data and workflow files. - Firewall rules that restrict direct access to port 3001 and route all traffic through the reverse proxy.
None of these are exotic. They are the same hardening steps you apply to any Node.js service. If you have ever deployed an Express application to production, you already know how to deploy Waiflo.
The Right Default
Self-hosting should be the default choice for production AI workflows, not the advanced option. When your pipeline logic is in version-controlled JSON files that run on your infrastructure with your API keys, you have eliminated the categories of risk that tend to cause the most painful production incidents: vendor outages, pricing changes, data handling surprises, and debugging black boxes.
The SaaS convenience is real. So is the cost you pay for it, in ways that don't show up on the invoice.