Hi everyone,
I’d like to share Livellm, a small open-source Phoenix LiveView chat app built as a reference for integrating llm_composer into a real Elixir application.
The main goal is to show how Elixir and Phoenix fit this kind of use case very naturally: LiveView for the chat UI, llm_composer for unified multi-provider LLM access, background tasks for non-blocking requests, PubSub for streaming updates, and OTP patterns for keeping the app responsive and simple.
It demonstrates a practical setup for:
- streaming LLM output into LiveView in real time
- switching providers behind one API
- handling reasoning output separately
- tracking token usage and cost
- persisting chat state locally (sqlite)
I used this app yesterday as part of a demo for a talk about llm_composer at the Elixir Madrid meetup, and decided to publish it as a small reference project in case it is useful to others exploring similar patterns.
It is intentionally minimal and not meant to be a full chat platform, but rather a compact example of how Phoenix LiveView, PubSub, OTP, and unified LLM access can work together in practice.
Feedback is very welcome.
Repo:






















