agentsclimarketplace

Gossipper run

Skill VoicenterTeam/gossipper-skills/skills/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

Install
npx -y skills add VoicenterTeam/gossipper-skills --skill gossipper-run

Assembled 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

TaskOwner
Write or modify a scenario XMLgossipper-build
Decide what XML belongs in the scenariogossipper-build
Parse summary JSON, trace CSVs, call recordsgossipper-analyze
Classify failures (timeout / unexpected_sip / …)gossipper-analyze
Decide threshold values for -health_*gossipper-analyze or user
Cross-correlate with HEP/qryn production trafficgossipper-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 caseLaunch form
Single scenario, finite calls, exit when donegossipper -sf … -rsa … -m … -r …
Repeatable named runs, ops-friendlygossipper -config profile.json -run-alias=<name>
Long-running management UAS + HTTP APIgossipper server -config flat.json
Composite: UAS listener + parallel UAC clientsgossipper 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.

IntentInvocation
Vanilla UAC, finitegossipper -sf uac.xml -rsa <host:port> -r 5 -m 100
UAS listenergossipper -sf uas.xml -sn uas -i <bind_ip> -p 5060
REGISTER with digestadd -au <user> -ap <pass> -s <service>
3PCC masteradd -cmd_peers peers.txt -cmd_name master -cmd_listen_port <port>
3PCC slaveadd -cmd_peers peers.txt -cmd_name slave -cmd_listen_port <port>
INVITE + RTP mediaadd -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:

FlagPurposeWhen to omit
-summary_json <path>Top-level run summary, schema gossipper_summary_v1Never — always set
-trace_stat -fd 5Per-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-readableDebug only — verbose
-trace_err -error_file <path>Unexpected SIP + runtime errorsAlways 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):

FlagValue patternJoins on
-hep_addr <host:port>HOMER/heplify-server endpoint (default port 9060)Enables HEP3 mirror
-hep_capture_id <n>Distinct integer per runHEP filtering
-hep_password <pw>If destination requires authHEP auth

OTLP (event stream):

FlagValue patternJoins on
-log_otel_endpoint <host:port>OTLP receiverEnables OTLP export — required for any OTEL data to flow
-log_otel_proto <grpc|http>Default grpcWire protocol
-log_otel_insecureSet 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 channelshep_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)

ExitMeaningOperational action
0Clean run, no health breachHand off outputs to analyze
1Engine or parse errorRe-check scenario (hand back to build) or flags
2Health threshold breachRun 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

  1. -m 0 is not "unlimited" — it means zero calls. Use a large number, or -config with total_calls: 0 in the JSON (which IS unlimited in run-profile form).
  2. -fd <n> auto-enables -trace_stat — don't set both.
  3. -t s1 / sn are UDP aliases, not TLS, despite the "s" prefix. TLS server modes are l1 / sl. TLS client is l1 / cl.
  4. Port 5060 as non-root needs CAP_NET_BIND_SERVICE (not CAP_NET_RAW — gossipper uses normal sockets).
  5. -summary_json is written only on clean shutdown. SIGKILL loses it. Use SIGINT to drain in-flight calls and finalize.
  6. HTTP management API is OPEN by default-api_addr :8080 has no auth unless wired via -config JSON. Don't expose beyond VPN.
  7. 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 (SIGINT drain, SIGUSR1 screen 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 for gossipper server), 3PCC peer authoring + multi-slave coordination, pcap2scenario workflow, 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/

Keep looking

Skills are one crate of 326,506. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.