A terminal-based flamegraph viewer that receives profiling data via an OTLP gRPC endpoint and renders a live, interactive flamegraph in the terminal. It can be used to visualize profiling data generated by opentelemetry-ebpf-profiler.
- OTLP gRPC profiles receiver (default
0.0.0.0:4317, configurable via--port) - Live icicle-style flamegraph with hot/warm color scheme
- Freeze/live toggle to pause updates for smooth navigation
- Frame type annotations (
[Native],[Kernel],[JVM], etc.) - Thread/process grouping via
thread.namesample attribute - Keyboard-driven navigation and zoom
- Thread search (
/) with fuzzy filtering
No Rust toolchain required β you can run eprofiler-tui directly with Docker or Podman:
podman run -it -p 4317:4317 ghcr.io/rogercoll/eprofiler-tui:latest
Replace
podmanwithdockerif preferred.
Alternatively, install from source with Cargo:
cargo install --git https://github.com/rogercoll/eprofiler-tui
The TUI will start and listen for OTLP profile data on port 4317. Point your OpenTelemetry profiling agent at localhost:4317.
To use a different port:
# With Cargo install:
eprofiler-tui --port 4318
| Option | Description |
|---|---|
-p, --port <PORT> |
OTLP gRPC listen port (default: 4317) |
-h, --help |
Print help |
Requires Rust 2024 edition and protobuf definitions from the opentelemetry-proto submodule.
git submodule update --init
cargo build --release
| Key | Action |
|---|---|
f / Space |
Toggle freeze/live mode |
j / β |
Move deeper into the stack |
k / β |
Move shallower |
h / β |
Previous sibling frame |
l / β |
Next sibling frame |
Enter |
Zoom into selected frame |
Esc |
Zoom out one level |
/ |
Search/filter by thread name |
r |
Reset (clear all data) |
q |
Quit |

