-
Notifications
You must be signed in to change notification settings - Fork 0
TUI Walkthrough
Your first analysis in the interactive TUI, step by step — open a capture, read the ladder, measure a delay, and inspect RTP.
New to sipnab? Start here. This is a guided first run through the interactive TUI. It names every key you press, and the full reference lives in Keybindings. If you prefer the command line, see the Cookbook instead.
Point sipnab at a pcap and it drops you straight into the Call List:
sipnab -I capture.pcapNo file handy? Capture live on an interface instead — this needs sudo,
because opening a capture device needs privilege:
sudo sipnab -d eth0Or start with no argument at all and open a file from inside the TUI with O
(the File Open dialog):
sipnabYou can open a different capture at any time with O -- no restart needed.
The Call List is the home view: one row per SIP dialog, with method, endpoints, state, message count, and PDD (post-dial delay).
-
j/k(orDown/Up) move the selection;PgUp/PgDn,Home,Endjump around. -
</>sort by the previous / next column;Zreverses the direction. Sort by State to bringFailedcalls to the top, or by PDD to find slow setups. -
tcycles the timestamp mode (absolute → delta-prev → delta-first → scaled). Delta-prev is the one that makes latency spikes jump out. - Too many columns, or missing one you want (Source IP, PDD)?
F10opens the column selector.
Land on the call you care about, then press Enter.
Enter opens the Call Flow -- a ladder diagram of the dialog across every
host it touched (UAC → proxy → UAS), with a detail panel beside it.
-
j/kwalk message-to-message; the detail panel updates to show the parsed message under the cursor. -
dcycles how the detail panel shows SDP (none / summary / full). -
wtoggles line wrapping in the detail panel; with wrap off, long lines truncate and a horizontal scrollbar appears (Left/Rightscroll it). -
Enteron a message opens the full-screen Raw Message view (/searches within it,n/Njump between matches,Escreturns). -
crecolors the ladder by method, Call-ID, or CSeq;tshares the timestamp mode with the Call List.
Esc takes you back to the Call List at any time.
This is the trick most people come to sipnab for. In the Call Flow:
- Move to the first message (say the
INVITE) and pressmto drop a mark. - Navigate to a later message (the
200 OK). A delta badge appears showing the elapsed time between the mark and your current position. - Press
Mto clear the mark.
Now you can read "how long from INVITE to 200 OK?" straight off the ladder, without doing timestamp math in your head.
Suspect a header changed across a retransmit or a proxy hop? Press Space on
one message, then Space on another, to open the Message Diff -- a
line-by-line comparison. Esc returns to the ladder.
-
/searches the current view (Call List, Raw Message, or RTP Streams). -
F7opens the Filter dialog, which accepts the full Filter DSL plus quick From/To fields and checkboxes. Trystate == 'Failed'to keep only calls that never established, orrtp.mos < 3.0for poor audio. -
F9clears the active filter;iprunes the dialogs that do not match, keeping only the matches, andIprunes the ones that do.
Press Tab to switch from the Call List to the RTP Streams view: every
media stream with codec, packet count, jitter, loss, and MOS. Streams flagged
orphan have no matching SIP dialog (often a NAT/ALG symptom).
Press Enter on a stream -- or on an ██ RTP ██ bar back in the Call Flow --
to open Stream Detail: MOS, jitter statistics, quality intervals, burst/gap
analysis, silence detection, and MOS/jitter sparklines. A stream whose far end
sent RTCP XR gains a Reported by Far End (RTCP XR) section at the bottom,
holding that endpoint's own R-factor, MOS-LQ, MOS-CQ, delays and discard rate.
Everything above that section is what sipnab measured, and nothing in it moves
those numbers. With an audio build,
Shift+P plays the stream (G.711). Tab switches back to the Call List.
If a call crossed a B2BUA or SBC, press x (or F4) in the Call Flow to toggle
extended multi-leg flow -- the related legs render together in one ladder,
so you can follow the call end-to-end through the middle boxes.
Select the dialogs you want with Space in the Call List (they show a ▸),
then press F2. In the Save dialog, Tab cycles the format -- PCAP, PCAP-NG,
TXT, JSON, NDJSON, CSV, Mermaid (a sequence diagram for your ticket/wiki),
Markdown, WAV, SIPp XML, RTP JSON -- and Enter writes the file. With nothing
selected, it saves everything.
-
F1(or?) opens context help in any view -- the fastest way to see what a view can do without leaving it. - Keybindings -- the complete per-view reference, plus an annotated visual tour of every screen.
- Theme Guide -- recolor the TUI to taste.
- Cookbook -- the same investigations as one-shot CLI commands, for scripting and CI.
Website · Repository · Issues · Generated from docs/ — edit there, not here.
Getting started
Using the TUI
CLI & automation
- CLI Reference
- Filter DSL
- Output Formats
- SIP Response Codes
- SIP Methods
- SIP Header Fields
- SIP Parameters
- SIP Lint Rules
- MOS and Codecs
Configuration
Integrations (API & MCP)
- REST API
- Prometheus Metrics
- Authentication
- MCP
- MCP Deployment
- MCP Tools
- MCP Protocol
- Uprobe Walkthrough
- Capture SIP over TLS
- WASM Plugins
Development & internals
- Internals Index
- Internals Subsystem Guide
- Internals Invariants
- Internals Testing
- Internals Walkthroughs
- Internals Build CI Release
- Internals Profiling
- Internals Domain Primer
- Library API
- Benchmarks
- Fault Model
- Architecture
- Internals Threading
- Internals TUI Testing
- Internals Zero Copy Payloads
- Internals Uprobe Capture