The LLM ecosystem has seen an explosion of frameworks, particularly in JavaScript and Python. While popular, these frameworks often serve two purposes: they either hide language limitations around concurrency or task orchestration, or they abstract “common” LLM operations. But do we really need this abstraction? Usually we would be better off building simple, bespoke solutions.