What Are All Those Dependencies Actually For?

Every package in LangChain and LlamaIndex, categorized by purpose

HTTP & Networking
Serialization
Own Ecosystem
NLP / Tokenization
DB / Storage
HTTP & Networking
LangChain: 12 packages  ·  LlamaIndex: 17 packages  ·  SynapseKit: 0
Neither framework calls HTTP directly — they pull in packages that do, which pull in other packages. This is the cascading cost of supporting async + sync HTTP across dozens of provider integrations.
httpx LC + LI
Modern sync+async HTTP client. Used by most provider SDKs.
httpcore LC + LI
Low-level HTTP — httpx depends on this. You didn't choose it.
anyio LC + LI
Async compatibility layer. Both frameworks depend on it.
certifi LC + LI
SSL certificate bundle. Required for HTTPS.
aiohttp LC only
Async HTTP client (older style). LangChain keeps it for legacy integrations.
aiosignal LC only
aiohttp dependency. Cascading cost.
multidict LC only
aiohttp dependency. HTTP header handling.
urllib3 LC only
Low-level HTTP — the requests dependency.
nest-asyncio LI only
Patches Python's event loop to allow nested async calls. A workaround bundled as a core dep.
Key Insight SynapseKit has zero HTTP deps at core level — httpx only enters when you install a provider extra (e.g. synapsekit[openai]). Both LangChain and LlamaIndex make that choice for you whether you use a local model or not.
www.engineersofai.com — AI Letters #11 · Full analysis: kaggle.com/misternautiyal