Files
Agentic-OS/skills/vessel-voip/SKILL.md
nearxos 0375b20bb4 Enhance MCP development features and introduce skills management
- Added configuration options for requiring human approval before applying LLM-generated MCP patches.
- Updated Docker setup to include skills directory.
- Integrated skills management into the backend, allowing for procedural guides and skill matching.
- Refactored database initialization to apply Alembic migrations.
- Enhanced task approval process to handle MCP patch applications with optional approval.
- Introduced new schemas for skills and updated existing APIs to support skills functionality.

This commit lays the groundwork for improved agent capabilities and better management of MCP development processes.
2026-06-14 22:27:24 +03:00

3.9 KiB

id, name, description, priority, rule_ids, match
id name description priority rule_ids match
vessel-voip Vessel VoIP troubleshooting Deep procedural guide for GeneseasX VoIP — SIP registration, one-way audio, RTP path, IAX trunks, and Asterisk NAT on ship stacks. 90
one-way-audio
no-registration
outbound-trunk-failure
asterisk-health
keywords
voip
sip
pjsip
rtp
registration
one-way
one way
trunk
iax
dialplan
codec
yealink
phone
dial tone
no audio
asterisk

Vessel VoIP stack

Layer model (bottom → top)

Layer Component Typical symptoms
1 pfSense VM Blocked SIP/RTP, wrong NAT, missing pass on phone VLAN
2 Docker VM (shipPortal) Container down, wrong published ports
3 Asterisk container Registration, SDP, codec, dialplan
4 Phones / FortiGate Yealink NAT quirks, trunk via wrong gateway

Topology is vessel-specific. Golden-lab reference (confirm live):

Role Typical IP / alias
pfSense Management 10.20.30.1 (vtnet4)
shipPortal / Docker VM 10.20.30.222
Business VLAN 10.0.100.0/24 (vtnet3)
CREW VLAN 192.168.100.0/24 (vtnet2)

Interface map (verify on device): vtnet0=WAN1, vtnet1=WAN2, vtnet2=CREW, vtnet3=Business, vtnet4=Management.

Symptom → start here

Symptom First layer Then
Phone won't register pfSense — SIP NAT + pass rules on phone VLAN Asterisk — pjsip show registrations
One-way audio pfSense — UDP 10000-10029 pass toward shipPortal Asterisk — local_net, external_media_address
Trunk / dial tone down Asterisk — PJSIP/IAX peers pfSense — outbound NAT if media leaves WAN
Codec mismatch Asterisk — allowed codecs vs trunk Not pfSense unless blocked

One-way audio playbook (proven order)

  1. Which direction is silent? Remote can't hear phone → phone→Asterisk RTP likely blocked. Phone can't hear remote → Asterisk→phone or return path.
  2. pfSense filter.log — blocked flows from phone to shipPortal:100xx on Business (vtnet3)?
  3. Pass rulepass udp phone VLAN → shipPortal ports 10000-10029.
  4. Outbound NAT — RTP SNAT to correct segment IP (e.g. phone VLAN VIP 192.168.0.254) when hairpin involved.
  5. Asterisklocal_net must include phone subnet AND VoIP subnet (10.20.30.0/24). external_media_address / external_signaling_address = reachable Asterisk IP.
  6. Live verify — RTP RX/TX counters during call; both directions should increment.

Registration playbook

  • Phones typically register via pfSense SIP NAT redirect (e.g. 192.168.0.254:5060 → Asterisk), not directly to Asterisk IP in phone config.
  • Yealink red flags: SIP server = pfSense VIP with NAT keepalive on but rport off.
  • Asterisk: failing qualify on endpoint = path/NAT problem, not credentials.
  • Check: port-forward UDP 5060, matching pass rule, pjsip show registrations, pjsip show contacts.

Outbound trunk / IAX

  • IAX2 uses UDP 4569 — confirm pfSense pass + outbound NAT if crossing WAN.
  • Dialplan: _7XXXX patterns may strip prefix — verify dial string matches trunk expectation.
  • Codec: trunk may require ulaw while endpoint negotiates opus — check iax2 show peer / PJSIP allow list.
  • Congestion = route/codec/dialplan, not firewall, when peer shows OK but calls fail.

Evidence to capture

  • pfSense rule tracker IDs, filter.log lines for blocked RTP/SIP
  • Asterisk CLI: endpoint config, channel stats, core show channels
  • Do not propose firewall writes without backup — see pfsense-change-safe skill

During investigation

  • Read before write on pfSense.
  • Cross-check NAT rules with their associated filter rules.
  • Build on project memory hits — do not repeat ruled-out causes from prior tasks.