Skip to content

feat: Ballista Text User Interface#1436

Merged
milenkovicm merged 112 commits intoapache:mainfrom
martin-g:ballusta-tui-in-cli-2
Apr 8, 2026
Merged

feat: Ballista Text User Interface#1436
milenkovicm merged 112 commits intoapache:mainfrom
martin-g:ballusta-tui-in-cli-2

Conversation

@martin-g
Copy link
Copy Markdown
Member

@martin-g martin-g commented Feb 1, 2026

Which issue does this PR close?

Closes #1396

Rationale for this change

See #1396

What changes are included in this PR?

Initial version of the TUI app that includes:

  • new Cargo feature tui to include it as part of the CLI app
  • New CLI option --tui to start the TUI app
  • Header navigation (Dashboard, Jobs, Metrics)
  • Help popup (activate with ? or h)
  • Dashboard view (scheduler state and executors info)
  • Placeholder for the Jobs and Metrics views
  • Yaml configuration
    • hardcoded defaults
    • OS specific config (e.g. ~/.config/ballista/config.yaml)
    • env variables, e.g. BALLISTA_HTTP_TIMEOUT=3000

Are there any user-facing changes?

New option for the CLI application, --tui that starts the TUI application

Initial version of the TUI app that includes:
* new Cargo feature `tui` to include it as part of the CLI app
* New CLI option `--tui` to start the TUI app
* Header navigation (Dashboard, Jobs, Metrics)
* Help popup (activate with `?` or `h`)
* Dashboard view (scheduler state and executors info)
* Placeholder for the Jobs and Metrics views
* Yaml configuration
  * hardcoded defaults
  * OS specific config (e.g. ~/.config/ballista/config.yaml)
  * env variables, e.g. `BALLISTA_HTTP_TIMEOUT=3000`

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
@milenkovicm
Copy link
Copy Markdown
Contributor

@martin-g i hope you're not waiting for my review :)

@martin-g
Copy link
Copy Markdown
Member Author

@milenkovicm I'll continue working on it this week!
Should I implement all functionalities from #1396 before merging it or should we split it in smaller tasks ?

@milenkovicm
Copy link
Copy Markdown
Contributor

sorry @martin-g your question fall off my radar. IMHO it would be great to get some kind of MVP in the PR if possible, but it's up to you

@martin-g
Copy link
Copy Markdown
Member Author

I'll continue adding functionalities for the other views too (jobs & metrics)!

@milenkovicm
Copy link
Copy Markdown
Contributor

I'll try to get logical and physical plan as part of api this week

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
@martin-g
Copy link
Copy Markdown
Member Author

martin-g commented Apr 4, 2026

an we make lines not to wrap, it would improve readability

removed the wrapping

martin-g added 12 commits April 4, 2026 08:40
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
The MetricsData struct has some state fields which otherwise need to be
ignored

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
@milenkovicm
Copy link
Copy Markdown
Contributor

I would suggest to have jobs view as default

In that case maybe we should rename "Dashboard" to "Executors" ? "Dashboard" is usually the landing page in such kind of monitoring apps.

spark starts from jobs

image

in most cases users use ui to check job status,

@milenkovicm
Copy link
Copy Markdown
Contributor

#1543 has added more task related information. This kind of information gives users ability to diagnose skewed partitions.

@milenkovicm
Copy link
Copy Markdown
Contributor

I guess we could do stage related changes as a follow up, wdyt?

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
@martin-g
Copy link
Copy Markdown
Member Author

martin-g commented Apr 5, 2026

I guess we could do stage related changes as a follow up, wdyt?

It is up to you how much code you want to review at once :-)

martin-g added 3 commits April 6, 2026 00:45
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Copy link
Copy Markdown
Contributor

@milenkovicm milenkovicm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @martin-g heroic effort, I like it a lot. We can add improvements later

@milenkovicm
Copy link
Copy Markdown
Contributor

image

@milenkovicm milenkovicm changed the title Ballista Text User Interface app feat: Ballista Text User Interface Apr 8, 2026
@milenkovicm milenkovicm merged commit 20cf268 into apache:main Apr 8, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add interactive TUI (Text User Interface) for cluster monitoring

3 participants