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 - Experimental: Flamescope tab (https://www.brendangregg.com/flamescope.html)
- Experimental: Executables tab β load debug symbols from ELF/DWARF binaries for inline-aware symbolization (persistent LSM-tree store survives restarts)
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 --data-dir /tmp
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) |
-d, --data-dir <PATH> |
Symbol store directory (default: platform data dir) |
-h, --help |
Print help |
Requires Rust 2024 edition and protobuf definitions from the opentelemetry-proto submodule.
The symbolization feature (symblib) pulls in native C/C++ dependencies that need extra build tools:
cmakeandmakeβ used by thezydisdisassembler crateg++(or any C++ compiler) β compileszydis's bundled C sourcesprotobuf-compiler(protoc) β used byprost-buildto compile.protodefinitions insidesymblib
git submodule update --init
cargo build --release
Global: Tab switch tab, Ctrl-c / q quit.
Flamegraph tab
| Key | Action |
|---|---|
f / Space |
Toggle freeze/live mode |
j / β k / β |
Navigate depth |
h / β l / β |
Navigate siblings |
Enter / Esc |
Zoom in / out |
/ |
Search threads |
r |
Reset |
Executables tab (experimental β under testing, may be removed for simplification)
| Key | Action |
|---|---|
j / k |
Navigate list |
Enter |
Load symbols for selected executable |
/ |
Add new executable by path |
r |
Remove loaded symbols |

