Three of these draw boxes and arrows. Two are Python libraries. Knowing which is which is most of the decision.The homelab runs a self-hosted layer for building LLM workflows and agents on top of its private model serving. Five tools cover the range from “connect an LLM to 400 other apps” to “write a multi-agent crew in Python.” They overlap on purpose at the edges; the trick is not deploying all five and using none of them.
The five, at a glance
| Tool | What it is | Shape | Reach for it when |
|---|---|---|---|
| n8n | General workflow automation, 400+ integrations | Visual builder (service) | You need to wire an LLM into other systems — email, calendars, webhooks, databases, SaaS APIs |
| Dify | Full LLMOps platform — RAG, prompts, evals, agents, model routing | Visual builder (service) | You want a production AI app with retrieval, prompt versioning, and evaluation, low-code |
| LangFlow | Visual node editor for LangChain graphs | Visual builder (service) | You want to prototype a chain by dragging nodes, then export it to Python |
| LangChain | Library of composable LLM building blocks | Python library | You’re writing code and want chains, tools, memory, and retrievers as primitives |
| CrewAI | Framework for role-playing multi-agent “crews” | Python library | You’re writing code and want agents with roles collaborating on a task |
Services vs libraries
The single most useful distinction:- n8n, Dify, and LangFlow are services. They run as containers, expose a web UI, and you build inside them. They are deployed and have an HTTPS front door.
- LangChain and CrewAI are libraries. You do not “deploy” them — you
pip installthem into application code. In this homelab they live together in one Python execution box that runs the agent code people write against them.
How they fit together
Solid edges are model calls; coral dashed edges are telemetry. Every tool is configured to its own model provider per its standard install — the local OpenAI-compatible endpoint, an external API, or both — never forced onto a shared backend that belongs to another stack. Each tool’s call is instrumented, and the traces fan out to the LLM observability pipeline.Picking one — the blunt version
- One tool only, and it has to be one → Dify. It covers RAG, prompts, evals, and agents without a separate automation tool.
- Already automating with workflows → keep n8n and add Dify as the AI layer beside it.
- Want to sketch a chain visually and walk away with Python → LangFlow.
- Writing application code → LangChain for primitives, CrewAI for role-based agent teams. Both are imports, not installs-as-a-service.
Where to go next
Local LLM
The private GPU model serving these tools call.
LLM observability
How every LLM call gets traced, costed, and evaluated.
LXC vs Docker
Why the compose-based tools run as Docker-in-LXC.
ansible-proxmox-apps
The configuration tier that deploys these app payloads.