Tool Name
@agent-tools/webrtc
Description
Pure-TypeScript WebRTC implementation for Node.js providing peer-to-peer data channels and media transport without native dependencies. Enables agents to establish direct encrypted connections for real-time data exchange, file transfer, and media streaming.
Why It's Useful for Agents
AI agents coordinating in distributed systems need low-latency, direct communication channels. WebRTC data channels provide encrypted peer-to-peer messaging without a central relay, enabling multi-agent collaboration, real-time tool output streaming, and file transfer between agent instances. Unlike WebSocket (server-mediated), WebRTC enables true peer-to-peer with NAT traversal.
Key reference: werift-webrtc (601 stars, MIT, 100% TypeScript, active — pushed Apr 26 2026) implements the full WebRTC stack in pure TypeScript (ICE/DTLS/SCTP/RTP/SRTP) with no native addons. Also evaluated node-datachannel (403 stars, MPL-2.0, C++ bindings to libdatachannel) and PeerJS (13.3k stars, MIT, browser-focused high-level abstraction).
Proposed API
import { createPeer, createSignaler } from "@agent-tools/webrtc";
// Create a peer with STUN/TURN config
const peer = createPeer({
iceServers: [{ urls: "stun:stun.l.google.com:19302" }],
});
// Offer/answer signaling (transport-agnostic)
const offer = await peer.createOffer();
// ... exchange offer/answer via any signaling channel ...
await peer.acceptAnswer(answer);
// Data channels — reliable, ordered messaging
const channel = await peer.createDataChannel("control", {
ordered: true,
maxRetransmits: 3,
});
channel.onMessage((data: Buffer | string) => { /* handle */ });
await channel.send(JSON.stringify({ action: "run-tool", tool: "grep" }));
// Media tracks — send/receive audio/video
const track = await peer.addTrack(mediaSource, { direction: "sendrecv" });
peer.onTrack((track, stream) => { /* consume remote media */ });
// Connection lifecycle
peer.onConnectionStateChange((state) => { /* connected | disconnected | failed */ });
await peer.close();
// Built-in signaling helper (WebSocket-based)
const signaler = createSignaler({ url: "wss://signal.example.com" });
await signaler.connect(peer, { room: "agent-collab-123" });
Scope
In scope:
- Peer connection creation with ICE/DTLS/SCTP (pure TypeScript, no native deps)
- Data channel creation (reliable/unreliable, ordered/unordered)
- Offer/answer SDP generation and consumption
- ICE candidate gathering and trickle ICE
- STUN/TURN server configuration
- Connection state management and events
- Optional WebSocket-based signaling helper
- NAT traversal
Out of scope:
- Media codec encoding/decoding (use dedicated media tools)
- Signaling server implementation (only client helper provided)
- Browser-side WebRTC (use native browser APIs)
- SFU/MCU media server functionality
Tool Name
@agent-tools/webrtcDescription
Pure-TypeScript WebRTC implementation for Node.js providing peer-to-peer data channels and media transport without native dependencies. Enables agents to establish direct encrypted connections for real-time data exchange, file transfer, and media streaming.
Why It's Useful for Agents
AI agents coordinating in distributed systems need low-latency, direct communication channels. WebRTC data channels provide encrypted peer-to-peer messaging without a central relay, enabling multi-agent collaboration, real-time tool output streaming, and file transfer between agent instances. Unlike WebSocket (server-mediated), WebRTC enables true peer-to-peer with NAT traversal.
Key reference: werift-webrtc (601 stars, MIT, 100% TypeScript, active — pushed Apr 26 2026) implements the full WebRTC stack in pure TypeScript (ICE/DTLS/SCTP/RTP/SRTP) with no native addons. Also evaluated node-datachannel (403 stars, MPL-2.0, C++ bindings to libdatachannel) and PeerJS (13.3k stars, MIT, browser-focused high-level abstraction).
Proposed API
Scope
In scope:
Out of scope: