← all repositories
Chainlit/chainlit

Your LLM app needs a UI, but you don't want to build one

Chainlit turns a Python function into a chat interface with one decorator.

12.2k stars Python Chat AssistantsLLMOps · Eval
chainlit
Velocity · 7d
+10
★ / day
Trend
steady
star history

What it does

Chainlit is a Python framework that wraps your conversational AI logic in a web UI. You write an async function decorated with @cl.on_message; Chainlit handles the browser, the message history, and the plumbing. It also supports tool steps (@cl.step) so intermediate operations show up as collapsible progress indicators in the chat.

The interesting bit

The “production-ready in minutes” claim is doing a lot of heavy lifting, but the actual pitch is simpler: most LLM demos die in a Jupyter cell because there’s no interface. Chainlit is essentially scaffolding code that solves the “just give it a UI” problem without reaching for Streamlit or a React build pipeline. The cookbook examples cover LangChain, LlamaIndex, vector DBs, and the usual suspects, suggesting it’s positioned as glue between your backend logic and a user-facing chat.

Key highlights

  • Pure Python workflow: one decorator for message handling, another for tool steps
  • Hot-reload dev server via chainlit run -w
  • Cookbook with integrations for OpenAI, Anthropic, LangChain, LlamaIndex, ChromaDB, Pinecone
  • Apache 2.0 licensed
  • 12K+ stars, suggesting broad adoption in the LLM-prototype space

Caveats

  • As of May 1, 2025, the original team has stepped back; the project is now community-maintained under a formal agreement, with Chainlit SAS explicitly providing “no warranties on future updates”
  • The README doesn’t specify what “production-ready” means in terms of auth, persistence, or deployment patterns

Verdict

Worth a spin if you’re building LLM prototypes and need a chat UI yesterday without touching JavaScript. If you’re already invested in Gradio or Streamlit, or if you need enterprise guarantees about long-term maintenance, the community-handover notice should give you pause.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.