LiteLLM Gateway ArchitectureΒΆ
Compose π³ΒΆ
flowchart LR
subgraph role [svc-ai-litellm]
svc_litellm["litellm<br>ghcr.io/berriai/litellm:main-v1.77.7-stable<br>http 4000"]
end
Swarm πΒΆ
flowchart LR
svc_litellm["litellm"]
svc_litellm --> rep_litellm["replicas: from the host group"]
classDef pinned fill:#fef7e0,stroke:#b06000,color:#3d2600;
VolumesΒΆ
flowchart LR
none["svc-ai-litellm declares no volume"]
Condition |
Effect |
|---|---|
swarm, |
shared over NFS |
any one of those missing |
node-local |
All four conditions must hold, so pinning a role takes every one of its volumes node-local. Only the roleβs primary entry counts as pinned here: a placement on any other service pins that service alone and leaves the backing of every volume unchanged. The chain is drawn rather than its result, because that coupling is what makes a placement change move data without saying so.
DependenciesΒΆ
flowchart LR
subgraph deps [Dependencies]
dep_svc_ai_lmstudio["svc-ai-lmstudio π³π"]
dep_svc_ai_ollama["svc-ai-ollama π³π"]
dep_svc_ai_s1["svc-ai-s1 π³π"]
dep_svc_db_postgres["svc-db-postgres π³π"]
dep_web_app_docs["web-app-docs π³π"]
end
subgraph role [svc-ai-litellm π³π]
svc_litellm["litellm"]
svc_postgres["postgres"]
svc_s1["s1"]
svc_ollama["ollama"]
svc_lmstudio["lmstudio"]
svc_docs["docs"]
end
subgraph dependents [Dependents]
dpt_dsk_gnt_claude["dsk-gnt-claude π»"]
dpt_dsk_gnt_codex["dsk-gnt-codex π»"]
dpt_dsk_gnt_pi["dsk-gnt-pi π»"]
dpt_svc_ai_agent_broker["svc-ai-agent-broker π³π"]
dpt_web_app_discourse["web-app-discourse π³π"]
dpt_web_app_flowise["web-app-flowise π³π"]
dpt_web_app_hermes["web-app-hermes π³π"]
dpt_web_app_litellm["web-app-litellm π»"]
dpt_web_app_matrix["web-app-matrix π³π"]
dpt_web_app_mattermost["web-app-mattermost π³π"]
dpt_web_app_mediawiki["web-app-mediawiki π³π"]
dpt_web_app_moodle["web-app-moodle π³π"]
dpt_web_app_n8n["web-app-n8n π³π"]
dpt_web_app_nextcloud["web-app-nextcloud π³π"]
dpt_web_app_openclaw["web-app-openclaw π³π"]
dpt_web_app_openwebui["web-app-openwebui π³π"]
dpt_web_app_wordpress["web-app-wordpress π³π"]
dpt_web_app_xwiki["web-app-xwiki π³π"]
dpt_web_app_zammad["web-app-zammad π³π"]
dpt_web_svc_translate["web-svc-translate π³π"]
end
dep_svc_ai_lmstudio -. "0..1" .-> svc_lmstudio
dep_svc_ai_ollama -. "0..1" .-> svc_ollama
dep_svc_ai_s1 -. "0..1" .-> svc_s1
dep_svc_db_postgres -. "0..1" .-> svc_postgres
dep_web_app_docs -. "0..1" .-> svc_docs
svc_litellm -. "0..1" .-> dpt_dsk_gnt_claude
svc_litellm -. "0..1" .-> dpt_dsk_gnt_codex
svc_litellm -. "0..1" .-> dpt_dsk_gnt_pi
svc_litellm -- "1:1" --> dpt_svc_ai_agent_broker
svc_litellm -. "0..1" .-> dpt_web_app_discourse
svc_litellm -. "0..1" .-> dpt_web_app_flowise
svc_litellm -. "0..1" .-> dpt_web_app_hermes
svc_litellm -- "1:1" --> dpt_web_app_litellm
svc_litellm -. "0..1" .-> dpt_web_app_matrix
svc_litellm -. "0..1" .-> dpt_web_app_mattermost
svc_litellm -. "0..1" .-> dpt_web_app_mediawiki
svc_litellm -. "0..1" .-> dpt_web_app_moodle
svc_litellm -. "0..1" .-> dpt_web_app_n8n
svc_litellm -. "0..1" .-> dpt_web_app_nextcloud
svc_litellm -. "0..1" .-> dpt_web_app_openclaw
svc_litellm -. "0..1" .-> dpt_web_app_openwebui
svc_litellm -. "0..1" .-> dpt_web_app_wordpress
svc_litellm -. "0..1" .-> dpt_web_app_xwiki
svc_litellm -. "0..1" .-> dpt_web_app_zammad
svc_litellm -. "0..1" .-> dpt_web_svc_translate
Symbol |
Meaning |
|---|---|
|
fixed relationship |
|
conditional, enabled only in matching deployments |
|
declared but turned off in this role |
π» |
deploys to the host |
π³ |
deploys under compose |
π |
deploys under swarm |
β |
service explicitly turned off |
βοΈ |
Ansible role dependency from |
Every dependency and dependent is listed; the graph is not truncated.