Menu

praytel(1).

Synopsis

praytel [flags] -- command [args ...]

Description

praytel runs command to completion, forwards signals to it, captures its stdout and stderr, receives the OTLP traces and logs it exports, joins them and prints a unified view. The -- separator is required.

By default the output is an append-only stream. --tui renders a live trace/span tree instead.

Flags

Rendering

FlagDefaultMeaning
--tuioffRender an interactive live trace tree.

Ingest and drain

FlagDefaultMeaning
--grpc-port PORT4317OTLP gRPC listen port.
--http-port PORT4318OTLP HTTP listen port.
--drain-idle DURATION250msIdle time with no OTLP after child exit before drain completes.
--drain-timeout DURATION2sHard cap on drain after child exit.

Memory limits

FlagDefaultMeaning
--max-spans N1000000Maximum retained spans, including pending and orphans.
--max-log-lines N1000000Maximum retained log lines, including pending and orphans.

When a limit is reached praytel evicts the oldest closed traces, then sheds the newest data. It reports both on stderr.

Environment

Praytel sets these variables for the child so its OpenTelemetry SDK exports to the in-process receiver. Any OTEL_EXPORTER_OTLP_* variables inherited from the caller’s environment are replaced.

VariableValue
OTEL_EXPORTER_OTLP_ENDPOINTThe gRPC receiver.
OTEL_EXPORTER_OTLP_PROTOCOLgrpc
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTThe HTTP receiver’s /v1/logs path.
OTEL_EXPORTER_OTLP_LOGS_PROTOCOLhttp/protobuf

TUI keys

Typing edits the search. Trace search is a subsequence match over span names and attributes; a single matching span surfaces its whole trace.

KeyAction
any characterAppend to the search.
BackspaceDelete the last character.
EscClear the search.
TabSwitch between searching traces and searching log bodies.
Ctrl-GSwitch between the tree view and the call graph view.
↑ / ↓ (or Ctrl-K / Ctrl-J)Scroll one line.
PgUp / PgDnScroll one page.
← / → (or Ctrl-B / Ctrl-F)Scroll horizontally.
HomeReturn to the left edge.
Ctrl-C, Ctrl-QQuit.

The TUI stays open after the child exits, until you quit.

Exit status

If the child started, praytel exits with the child’s exit code. If the child never started (it could not be executed, a port could not be bound, or the TUI could not start) or the invocation is malformed, praytel exits with 1. Warnings and praytel’s own logs go to stderr.

Examples

praytel -- go test ./...
praytel --tui -- ./server
praytel --grpc-port 14317 --http-port 14318 -- ./server