{"id":21216851,"url":"https://github.com/sipcapture/rtcagent","last_synced_at":"2025-07-10T11:32:56.483Z","repository":{"id":171998133,"uuid":"648711379","full_name":"sipcapture/rtcagent","owner":"sipcapture","description":"RTCAgent is an eBPF powered HEP Agent for HOMER/HEPIC","archived":false,"fork":false,"pushed_at":"2024-04-12T20:52:30.000Z","size":16810,"stargazers_count":28,"open_issues_count":9,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-14T04:25:11.487Z","etag":null,"topics":["ebpf","freeswitch","hep","hep-agent","hepic","homer","kamailio","opensips"],"latest_commit_sha":null,"homepage":"https://sipcapture.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sipcapture.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-06-02T16:03:08.000Z","updated_at":"2024-04-15T09:48:56.818Z","dependencies_parsed_at":"2024-04-15T09:59:05.390Z","dependency_job_id":null,"html_url":"https://github.com/sipcapture/rtcagent","commit_stats":null,"previous_names":["sipcapture/rtcagent"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Frtcagent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Frtcagent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Frtcagent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sipcapture%2Frtcagent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sipcapture","download_url":"https://codeload.github.com/sipcapture/rtcagent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225637064,"owners_count":17500360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebpf","freeswitch","hep","hep-agent","hepic","homer","kamailio","opensips"],"created_at":"2024-11-20T21:55:53.739Z","updated_at":"2024-11-20T21:55:54.367Z","avatar_url":"https://github.com/sipcapture.png","language":"C","readme":"\u003ca href=\"https://github.com/sipcapture\"\u003e\n\u003cimg src=\"https://github.com/sipcapture/rtcagent/assets/1423657/e1d78a7e-cf2e-4775-9177-b0a730ba66c6\" height=100\u003e\n\u003c/a\u003e\n\n\u003e RTCagent is an HEP/eBPF powered observability tool for VoIP/WebRTC Applications.\n\n\u003cbr\u003e\n\n### About\n\n**RTCAgent** is a _next-generation **HEP Agent**_ developed using the latest **[eBPF](https://ebpf.io)** technologies.\n\nRTCAgent greatly differs from any other previous HEP Agent in several ways:\n\n- Unlike _native agents_, it does not require any code modifications or patches\n- Unlike _passive agents_, it does not require access to network interfaces and packets\n- Unlike _any other agent_, it traces functions used for _sending/receiving_ data\n\n_The result is a new, lightweight and portable HEP Agent able to mirror SIP packets through eBPF hooks\u003cbr\u003e\nfrom the core of supported applications bypassing manual code integrations, network encryption and complexity._\n\n\u003cbr\u003e\n\n\u003ca href=\"https://github.com/sipcapture\"\u003e\n\u003cimg src=\"https://github.com/sipcapture/rtcagent/assets/1423657/3869ea12-f172-40d8-9baf-5f7a82b9e09c\" height=400\u003e\n\u003c/a\u003e\n\n\n### Download\nDownload an `amd64/x86` static build of `rtcagent` and use it immediately on modern kernels.\n```bash\ncurl -fsSL github.com/sipcapture/rtcagent/releases/latest/download/rtcagent -O \u0026\u0026 chmod +x rtcagent\n```\n\nPrefer using packages? Get the latest [deb and rpm](https://github.com/sipcapture/rtcagent/releases) releases for `amd64/x86`\n\n### Usage\n\n```\n\nNAME:\trtcagent - Capture and debug RTC Projects.\nUSAGE:\trtcagent [flags]\n\nCOMMANDS:\n\n\thelp\t\tHelp about any command\n\tfreeswitch\tcapture SIP messages from freeswitch (libsofia): t_port, su_recv\n\tkamailio\tcapture SIP messages from kamailio: recv_msg, udp_send, tcp_send.\n        opensips\tcapture SIP messages from v: recv_msg, udp_send, tcp_send.\n\ttcprtt\t\tshow tcp rtt stats\n  monitor\t\tshow advanced monitor statistics\n\n\nDESCRIPTION:\n\n\tRTCAgent is a tool that can capture and trace SIP packets using eBPF hooks and HEP\n\n\tUsage:\n\t  rtcagent \u003ccommand\u003e -h\n\nOPTIONS:\n  -d, --debug[=false]\t\tenable debug logging\n  -h, --help[=false]\t\thelp for rtcagent\n  -P, --hep-port=\"9060\"\t\thep port - default 9060\n  -S, --hep-server=\"\"\t\thep server to duplicate: i.e. 10.0.0.1\n  -T, --hep-transport=\"udp\"\thep transport default udp. Can be udp, tcp, tls\n      --hex[=false]\t\tprint byte strings as hex encoded strings\n  -l, --log-file=\"\"\t\t-l save the packets to file\n      --nosearch[=false]\tno lib search\n  -p, --pid=0\t\t\tif pid is 0 then we target all pids\n  -u, --uid=0\t\t\tif uid is 0 then we target all users\n  -v, --version[=false]\t\tversion for rtcagent\n\n```\n\n\u003cbr\u003e\n\n### Build\n\n\u003e Compatible with Linux/Android kernel versions \u003e= **x86_64 5.x**, \u003e= **aarch64 5.5**.\u003cbr\u003e\n\u003e Linux only. Does not support Windows and macOS.\n\n#### Requirements \n* golang 1.18 or newer\n* clang 9.0 or newer\n* cmake 3.18.4 or newer\n* clang backend: llvm 9.0 or newer\n* kernel config:CONFIG_DEBUG_INFO_BTF=y\n\n#### Instructions\n\n##### Ubuntu\nIf you are using Ubuntu 20.04 or later versions, you can use a single command to complete the initialization of the compilation environment.\n```shell\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com//sipcapture/rtcagent/master/builder/init_env.sh)\"\n```\n##### Any Linux\nIn addition to the software listed in the 'Toolchain Version' section above, the following software is also required for the compilation environment. Please install before proceeding.\n\n* linux-tools-common\n* linux-tools-generic\n* pkgconf\n* libelf-dev\n\n**Clone the repository code and compile**\n```shell\ngit clone git@github.com:/sipcapture/rtcagent.git\ncd rtcagent\nmake\nbin/rtcagent\n```\n#### compile without BTF\nRTCAgent support BTF disabled with command `make nocore` to compile at 2022/04/17 and can run on Linux systems that do not support BTF.\n```shell\nmake nocore\nbin/rtcagent --help\n```\n\n\u003cbr\u003e\n\n### Usage\nRun `rtcagent` on a native host attaching to a local binary target\n##### Kamailio\n```\n./rtcagent kamailio -T udp -P 9060 -S $HOMER -m /usr/sbin/kamailio\n```\n##### OpenSIPS\n```\n./rtcagent opensips -T tcp -P 9061 -S $HOMER -m /usr/sbin/opensips\n```\n##### FreeSwitch\n```\n./rtcagent freeswitch -T udp -P 9060 -S $HOMER -m /usr/sbin/freeswitch\n```\n\n### Docker\n#### Hypervisor Mode\nRun `rtcagent` as a priviledged container on your host attaching to a local binary target\n```\nrtcagent:\n    privileged: true\n    pid: host\n    image: ghcr.io/sipcapture/rtcagent\n    container_name: rtcagent\n    restart: unless-stopped\n    volumes:\n      - /sys/fs/cgroup:/host/sys/fs/cgroup:ro\n      - /sys/kernel/debug:/sys/kernel/debug:rw\n    command: --cgroupfs-root=/host/sys/fs/cgroup\n```\n\n#### Cross-Container Mode\nRun `rtcagent` as a priviledged container attached to a target container via docker volume mounts\n##### Kamailio\n```\nrtcagent:\n    privileged: true\n    image: ghcr.io/sipcapture/rtcagent\n    container_name: rtcagent\n    restart: unless-stopped\n    volumes:\n      - $(docker inspect --format=\"{{.GraphDriver.Data.MergedDir}}\" kamailio)/usr/sbin/kamailio:/kamailio:ro\n    command: /rtcagent kamailio -m /kamailio\n    depends_on:\n      - kamailio\n```\n##### OpenSIPS\n```\nrtcagent:\n    privileged: true\n    image: ghcr.io/sipcapture/rtcagent\n    container_name: rtcagent\n    restart: unless-stopped\n    volumes:\n      - $(docker inspect --format=\"{{.GraphDriver.Data.MergedDir}}\" opensips)/usr/sbin/opensips:/opensips:ro\n    command: /rtcagent opensips -m /opensips\n    depends_on:\n      - opensips\n```\n\n\n### Credits\n\nRTCAgent is inspired by Cilum, Odigos, eCapture and the many eBPF guides, libraries and implementations.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsipcapture%2Frtcagent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsipcapture%2Frtcagent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsipcapture%2Frtcagent/lists"}