# CLI: run, print, exit
$ ls -la
$ git commit -m "..."
# REPL: stays alive, keeps state
$ python
>>> x = 40
>>> x + 2
42Max Rydahl Andersen (@maxandersen)
Quarkus and CLI Applications
🎙️ Ståle Pedersen & Max Andersen
Why Command line?
Aesh, Picocli differences & benefits
…and a bit of TamboUI too!
It’s the oldest UI we have — and it’s not going away
Scriptable, composable, remote-friendly, fast
And now: the place AI agents live
| Term | In one line |
|---|---|
Terminal | the window — draws text, sends keys |
Shell | Usually the first program inside |
REPL | stays open, interactive |
CLI | args in → result out → exits |
TUI | full-screen, panels, redraws |
| Term | You already use |
|---|---|
Terminal | iTerm2, Ghostty, Windows Terminal, Warp, kitty |
Shell | bash, zsh, fish, nushell, PowerShell |
REPL | python, jshell, node, |
CLI | quarkus, git, kubectl, curl, jbang |
TUI |
|
You flip between all of these every day.
Terminal = the glass. Renders characters, forwards input.
Shell = the brain. Parses what you type, runs programs.
You can swap either independently — different terminal, same shell.
The terminal is the screen. The shell is the app.
# CLI: run, print, exit
$ ls -la
$ git commit -m "..."
# REPL: stays alive, keeps state
$ python
>>> x = 40
>>> x + 2
42CLI = fire and forget. REPL = a conversation.
Takes over the whole terminal — panels, menus, live updates
Keyboard-driven, mouse optional
quarkus dev, vim, lazygit, k9s… and TamboUI
A GUI’s ergonomics, in a terminal’s reach.
Aesh & Picocli — the details + a demo
CLIs and REPLs are great — but some tasks want a screen
Dashboards, pickers, live logs, interactive review
That’s where TUIs earn their keep
A TUI toolkit for the JVM / Quarkus world
Components, layout, events — without leaving the terminal
Reactive redraws, keyboard-first
Pairs naturally with Quarkus command mode
Demo: what a modern JVM TUI feels like
Agents don’t click buttons — they run commands
Text in, text out = the perfect tool interface
A good CLI is instantly an AI-usable tool
Composable tools > one giant app
If it works in a pipe, it works for an agent.
Quarkus command mode — CLIs as first-class apps
GraalVM native image — instant startup, tiny footprint
No JVM warmup tax on every invocation
Perfect for agent tools + short-lived CLI runs
Native CLIs: fast enough that an agent can call them all day.
Aesh — in Quarkus 3+, and key in Quarkus 4
TamboUI — possible today: some warts, but definitely usable
Dedicated TamboUI extension on its way
Terminal, shell, CLI, REPL, TUI — love or hate them - they are here!
Aesh & Picocli for the CLI itself; TamboUI when you need a screen
Quarkus + GraalVM = smooth, fast, AI-friendly tools
It’s all just text — and text is where the agents are.
@maxandersen · Ståle Pedersen
Quarkus Insights Ep. 260