OneTUI: Why you many TUIs when you can use one?
tl;dr Code is at github.com/syndbg/onetui . If the idea of one consistent TUI across your databases and queues sounds useful to you too, I'd like to hear about it. Note: Cross-published also at my blog https://syndbg.github.io/posts/2026-09-20-onetui-one-terminal-every-data-source/ . Over the years I've used DBeaver, DataGrip, psql, and whatever Kafka CLI happened to be the flavor of the month.…
OneTUI proposes a consistent terminal user interface (TUI) for accessing various data sources such as databases and message queues. The author has used multiple tools like DBeaver, DataGrip, psql, and Kafka CLI over the years, but none of them felt like a unified tool to use consistently across different data sources. This led to inconsistencies in keybinds, panels, and support for different data sources.
OneTUI aims to provide a single interaction model that can be used consistently, regardless of the underlying data source. The author acknowledges that OneTUI is not a completely novel idea but borrows concepts from existing tools like K9s, DBeaver, DataGrip, and their respective features. K9s' resource and navigation model is borrowed, and it is added with a thin TUI layer over the raw protocol.
The author emphasizes the importance of picking proven parts and dropping those that didn't work, creating a consistent shell. The goal is not novelty but to create a tool that is easy to use and understand, with a focus on read-only mode initially to avoid potential data loss and other risks associated with write operations.
The architecture of OneTUI is written in Rust, utilizing Ratatui for the terminal UI. The Rust choice provides a new learning opportunity for the author, who has been using Go for 12 years. Rust, with its zero-cost abstractions and safety features, is chosen over Go for the project. The code is written with human review, ensuring thorough checking and minimizing runtime errors.
Each data source implements the same two traits: a Provider, which describes the source and its capabilities, and an Executor, responsible for executing the operations like fetching data or following live updates. The TUI communicates with the Executor consistently, regardless of the underlying data source. This approach ensures a uniform user experience while allowing for flexibility in connecting to various data sources.
In summary, OneTUI aims to provide a consistent TUI for accessing multiple data sources, borrowing and combining best practices from existing tools. The project focuses on simplicity, consistency, and ease of use, starting with read-only operations to minimize risks before introducing write support.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.