pcharbon
A direct-mode Terminal UI framework for Elixir/BEAM, inspired by BubbleTea (Go) and Ratatui (Rust).
TermUI leverages BEAM’s unique strengths—fault tolerance, actor model, hot code reloading—to build robust terminal applications using The Elm Architecture.

Features
-
Elm Architecture - Predictable state management with
init/update/view -
Rich Widget Library - Gauges, tables, menus, charts, dialogs, and more
-
Efficient Rendering - Double-buffered differential updates at 60 FPS
-
Themable - True color RGB support (16 million colors)
-
Cross-Platform - Linux, macOS, Windows 10+ terminal support
-
OTP Integration - Supervision trees, fault tolerance, hot code reload
Installation
Add term_ui to your dependencies in mix.exs:
def deps do
[
{:term_ui, "~> 0.1.0"}
]
end
Trending in Announcing
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New
Hello,
I’m sharing my plugin here in forum after some time so it has time to mature and proof yourself.
I use Claude Code daily on a pr...
New
Aloha gang,
There’s a new class of AI model out from TypeSafe. Jev is their flagship model. You can learn about it here:
...
New
I’ve recently created a small library phoenix_vite integrating the vite build tooling with phoenix.
It
provides an igniter.installer t...
New
I needed something like premailer for rails, and after searching, I decided to make an easy-to-use library to handle inline styles and co...
New
If you’ve ever had to debug a BEAM node you know it can be a painful process. Parsing raw data, or dealing with clutter often gets in the...
New
Other Trending Topics
Hey there,
I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first.
...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly)
AI dream has many faces, but general...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog
It says that Fly is going all-in on sprites, which is a worry ...
New
Code BEAM Europe 2026 – Call for Talks is Open!
We’re excited to announce that Code BEAM Europe 2026 is now open for talk submissions :t...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #blog-post
- #ecto-query
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #hex












Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
kevinschweikert
I tried the dashboard example and the refresh did not update the view. Would that be caused by
because the state diff is the same?
pcharbon
Yes unfortunately (or fortunately) you cant see the refresh. The rendering process uses two ETS buffers and only render a diff of the previous buffer and the next. I actually spent time trying to figure out why the refresh did not work haha
Note: you can see the past refresh by changing the theme.
AndyL
I was able to run all of your examples - no problems. Xubuntu 24.04, Ghostty, Elixir 1.19.3, Erlang 28.2.
(yeah the refresh on the dashboard was funky for me too…)
This looks like great work BRAVO.
fuelen
Looks very good
Schultzer
This looks nice and clean!
pcharbon
Yeah looked like a good idea to have a refresh on the dashboard for some reason. I was not expectint to be useless haha. Glad that it all worked, you never know when you publish.
pcharbon
Thanks, there are more widgets I want to do and hopefully people can just contribute theirs.
I am considering adding a DSL or some templating sigil maybe.
ghannam80
this looks very nice. I had some monitoring for some legacy systems that is using scripting like tail/sed and grep to alert people about issues based on logs. I wonder if the same can be done using it "time to explore”.
pcharbon
You could probably easily transform your scripts to .exs and run them from inside the TUI. I could definitetly see an email library tied into it even. Its elixir so sky is the limit. If you ever make an interesting widget for it, share it back if you can.
pcharbon
TermUI v0.2.0
New Widgets
Basic Widgets:
Overlay Widgets:
Layout Widgets:
Input Widgets:
Visualization Widgets:
Data Streaming Widgets:
BEAM Introspection Widgets:
Other Changes