Gossipper run
Invoke the sipcapture/gossipper SIP load generator. Use whenever the user wants to run a Gossipper scenario, set CLI flags / transport mode / rate / volume / output flags, wire correlation identifiers for HEP or OTEL, author a 3PCC peer file, convert a PCAP to scenarios via `pcap2scenario`, smoke-test a freshly authored scenario, build a run-profile JSON for systemd or long-running deployment, set health thresholds, or interpret a Gossipper exit code. Also use for questions about the `gossipper -h` surface or `gossipper server` management mode.From its SKILL.md
npx -y skills add VoicenterTeam/gossipper-skills --skill gossipper-runAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.5 KB, ~3.0k tokens by cl100k_base, as published. Nobody here has run it
gossipper-run — Scenario Execution
Invoke Gossipper. Pinned to Gossipper 0.1.60-rtcpmuxpatch2 (sipcapture/gossipper
on main, audited 2026-05-18).
When to use this skill
- Run an existing scenario (one-shot CLI or long-running).
- Pick transport mode, rate, concurrency, output flags, correlation IDs.
- Author a 3PCC peer file (CSV
name;host:port). - Convert a PCAP to scenarios via
gossipper pcap2scenario. - Smoke-test a freshly authored scenario before the real run.
- Build a run-profile JSON for systemd / long-running deployment.
- Wire
-health_*thresholds when given threshold values. - Interpret a Gossipper exit code at the operational level.
When NOT to use this skill
| Task | Owner |
|---|---|
| Write or modify a scenario XML | gossipper-build |
| Decide what XML belongs in the scenario | gossipper-build |
| Parse summary JSON, trace CSVs, call records | gossipper-analyze |
| Classify failures (timeout / unexpected_sip / …) | gossipper-analyze |
Decide threshold values for -health_* | gossipper-analyze or user |
| Cross-correlate with HEP/qryn production traffic | gossipper-analyze |
This skill picks flags and runs the process. It does not decide what the scenario should do, and it does not interpret what came out beyond exit-code level (0 / 1 / 2).
Inputs from gossipper-build
Every scenario authored by gossipper-build starts with a top-of-file XML comment block. Read it — don't re-derive from message content.
<!--
Scenario: <name>
Role: <UAC | UAS | 3PCC-master | 3PCC-slave>
Intent: <one-paragraph description>
Partial-support features used: <list, or "none">
Required runtime vars:
-s <service> ...
-au <username> ...
-ap <password> ...
-rsa <host:port> ...
-mi <media_ip> ...
-mp <media_port> ...
3PCC coordination (if applicable):
-cmd_peers peers.txt
-cmd_name <master|slave>
-cmd_listen_port <port>
-->
Two sections drive flag selection:
- Required runtime vars → the flags you must set on the command line.
- 3PCC coordination → you author the peer file (see below) and wire
-cmd_*flags.
If the block is missing or thin, ask the user — don't guess.
Decision tree — pick the launch form
| Use case | Launch form |
|---|---|
| Single scenario, finite calls, exit when done | gossipper -sf … -rsa … -m … -r … |
| Repeatable named runs, ops-friendly | gossipper -config profile.json -run-alias=<name> |
| Long-running management UAS + HTTP API | gossipper server -config flat.json |
| Composite: UAS listener + parallel UAC clients | gossipper server -config flat.json (with server + clients[]) |
Both run-profile JSON shapes and the systemd pattern are in
references/patterns.md.
Common invocation patterns
Minimal flag set per pattern. Add output flags from the next section.
| Intent | Invocation |
|---|---|
| Vanilla UAC, finite | gossipper -sf uac.xml -rsa <host:port> -r 5 -m 100 |
| UAS listener | gossipper -sf uas.xml -sn uas -i <bind_ip> -p 5060 |
| REGISTER with digest | add -au <user> -ap <pass> -s <service> |
| 3PCC master | add -cmd_peers peers.txt -cmd_name master -cmd_listen_port <port> |
| 3PCC slave | add -cmd_peers peers.txt -cmd_name slave -cmd_listen_port <port> |
| INVITE + RTP media | add -mi <media_ip> -mp <media_port> |
| TLS client | -t l1 -tls_ca <ca.pem> (+ -tls_skip_verify=false for strict) |
| TLS server | -t l1 -tls_cert <cert.pem> -tls_key <key.pem> |
For TLS, see the gotcha below: -t s1 / sn are UDP, not TLS.
Full flag surface → references/cli-reference.md.
Output flags — always wire these
Without output flags, gossipper-analyze has nothing to read. Defaults:
| Flag | Purpose | When to omit |
|---|---|---|
-summary_json <path> | Top-level run summary, schema gossipper_summary_v1 | Never — always set |
-trace_stat -fd 5 | Per-5s stats CSV (*_stats.log) | Only for one-call debug runs |
-call_records_jsonl <path> | Per-call records (gossipper_call_record_v1) | If analyze is summary-only |
-trace_msg -message_file <path> | Full SIP send/recv human-readable | Debug only — verbose |
-trace_err -error_file <path> | Unexpected SIP + runtime errors | Always useful, cheap |
-record_wav_dir <dir> | Per-call WAV capture, Call-ID keyed (16-bit PCM mono 8 kHz; add -record_wav_duplex for stereo) | Most runs — set only when media-quality investigation needs per-call audio |
-fd <n> auto-enables -trace_stat. The full output channel matrix
(rtt, screen, counts, shortmsg, error_codes, WAV capture) →
references/cli-reference.md.
Correlation identifiers
Set these so gossipper-analyze can join run outputs with HEP traffic in HOMER/qryn and OTLP events downstream.
HEP (SIP signaling mirror):
| Flag | Value pattern | Joins on |
|---|---|---|
-hep_addr <host:port> | HOMER/heplify-server endpoint (default port 9060) | Enables HEP3 mirror |
-hep_capture_id <n> | Distinct integer per run | HEP filtering |
-hep_password <pw> | If destination requires auth | HEP auth |
OTLP (event stream):
| Flag | Value pattern | Joins on |
|---|---|---|
-log_otel_endpoint <host:port> | OTLP receiver | Enables OTLP export — required for any OTEL data to flow |
-log_otel_proto <grpc|http> | Default grpc | Wire protocol |
-log_otel_insecure | Set for plaintext (lab / intra-VPN) | TLS off |
-log_attr self_tag=<id> | Per-run unique ID (e.g. gossipper-<region>-<ts>) | OTEL resource attr — the run-correlation key |
-log_attr <other>=<val> | Free-form (repeatable) | Additional resource attrs |
For autonomous Cowork-scheduled runs: generate one logical run identifier (string), then derive a correlated pair:
self_tag=<run_id>— full string (e.g.cowork-soak-20260521T0930Z)hep_capture_id=<int_derived_from_run_id>— deterministic mapping, e.g.CRC32(run_id) mod <reserved_capture_id_range>
Analyze consumes both. The string→int derivation must be reproducible
(or logged in the Run report's Notes) so cross-channel pivot works.
A single identifier cannot serve both channels — hep_capture_id is
int, self_tag is string.
3PCC peer file
When the scenario block declares 3PCC coordination, this skill authors the peer file. Format is CSV, one row per peer:
master;<master_ip>:<master_cmd_port>
slave;<slave_ip>:<slave_cmd_port>
Naming matches -cmd_name on each instance. Slave must be running
before master starts — master immediately tries to connect.
Full coordination pattern (multi-slave, init-block, Call-ID adoption) →
references/patterns.md.
pcap2scenario
Convert a captured PCAP to paired UAC/UAS XML scenarios:
gossipper pcap2scenario -in capture.pcap -out-uac uac.xml -out-uas uas.xml
The produced XML often needs cleanup before reliable runs — CDATA fixes, timing tuning, partial-support feature trimming. Hand the raw output to gossipper-build, then come back here to run it.
Loopback smoke run (optional pre-flight)
Catches gossipper-specific XML loader complaints that well-formedness validation (build's job) doesn't surface:
gossipper -sf scenario.xml -sn uas
Binds locally and starts the UAS listener; the scenario goes through
gossipper's stricter XML loader during startup. Send SIGINT
(Ctrl-C) to exit cleanly. Load-time errors surface immediately as
stderr output with exit code 1. Run once after authoring, before the
first real run. Not required on every subsequent run.
Health thresholds
When the user (or analyze) provides threshold values, wire -health_*
flags on the command line. On clean shutdown, gossipper compares
final summary metrics against thresholds; breach exits 2.
This skill sets the flags. It does not decide the values —
threshold values come from analyze or directly from the user. Full
flag list → references/cli-reference.md.
Exit codes (operational interpretation only)
| Exit | Meaning | Operational action |
|---|---|---|
| 0 | Clean run, no health breach | Hand off outputs to analyze |
| 1 | Engine or parse error | Re-check scenario (hand back to build) or flags |
| 2 | Health threshold breach | Run completed; analyze for the failing dimension |
Do not classify failure shapes here (timeout vs unexpected_sip vs
transport_error etc.) — that's the analyze skill's vocabulary.
Always-remember gotchas
-m 0is not "unlimited" — it means zero calls. Use a large number, or-configwithtotal_calls: 0in the JSON (which IS unlimited in run-profile form).-fd <n>auto-enables-trace_stat— don't set both.-t s1/snare UDP aliases, not TLS, despite the "s" prefix. TLS server modes arel1/sl. TLS client isl1/cl.- Port 5060 as non-root needs
CAP_NET_BIND_SERVICE(notCAP_NET_RAW— gossipper uses normal sockets). -summary_jsonis written only on clean shutdown.SIGKILLloses it. UseSIGINTto drain in-flight calls and finalize.- HTTP management API is OPEN by default —
-api_addr :8080has no auth unless wired via-configJSON. Don't expose beyond VPN. - No Docker image is published. Build your own; package layout
is under
/usr/local/gossipper/per the upstream conventions.
Going deeper
Read on demand:
references/cli-reference.md— full flag surface grouped (engine, transport, rate, auth, TLS, media, output/trace, HEP, OTEL, profiling, 3PCC, health, config bootstrap), subcommand routing, transport mode matrix, signals (SIGINTdrain,SIGUSR1screen snapshot), exit codes, HTTP management API (/api/v1/*and/api/v2/*with-ui_data_dir).references/patterns.md— run-profile JSON (aliased form for root command, flat composite forgossipper server), 3PCC peer authoring + multi-slave coordination,pcap2scenarioworkflow, loopback smoke pattern, HEP/OTEL correlation wiring for autonomous runs, health threshold authoring, systemd unit pattern, deployment notes.
Run report (handoff to gossipper-analyze)
After every run, surface this structured block in chat. Analyze consumes it to know which artifacts to ingest and which correlation identifiers to use.
Run report
----------
Invocation: <command line, or profile path + alias>
Started / ended: <ISO 8601> / <ISO 8601>
Exit code: <0 | 1 | 2>
Outputs produced:
summary_json: <path>
trace_stat: <path or omitted>
call_records_jsonl: <path or omitted>
message_file: <path or omitted>
error_file: <path or omitted>
wav_dir: <path or omitted>
Correlation identifiers:
hep_capture_id: <int or omitted>
self_tag: <id or omitted>
hep_addr: <host:port or omitted>
otel_endpoint: <host:port or omitted>
Notes:
<anything operationally relevant — e.g. SIGINT drained, retries observed,
any flag fallbacks that happened>
Hand this block to gossipper-analyze. Do not also paste the summary JSON content here — analyze reads files itself.
What ships with it: 2 files
38.1 KB alongside SKILL.md
references/
- cli-reference.md23.8 KB
- patterns.md14.2 KB