Peer-to-peer communication via WebRTC, using JSS as the signaling server. Once peers are connected, all media and data flows directly between them.
jss start --webrtc
wss://your.pod/.webrtc (WebID auth required)Messages are JSON over WebSocket:
// Send an offer to another user
{ "type": "offer", "to": "https://bob.example/profile/card#me", "sdp": "..." }
// Receive an offer from another user
{ "type": "offer", "from": "https://alice.example/profile/card#me", "sdp": "..." }
// ICE candidate exchange
{ "type": "candidate", "to": "https://bob.example/profile/card#me", "candidate": {...} }
// Hang up
{ "type": "hangup", "to": "https://bob.example/profile/card#me" }
On connect, peers receive a list of online users and get notified when others join or leave.
Expose a local dev server to the internet through your JSS pod. A tunnel client connects via WebSocket, registers a name, and receives proxied HTTP requests.
jss start --tunnel
wss://your.pod/.tunnel (WebID auth required){ "type": "register", "name": "myapp" }https://your.pod/tunnel/myapp/// 1. Register a tunnel
→ { "type": "register", "name": "myapp" }
← { "type": "registered", "name": "myapp", "url": "/tunnel/myapp/" }
// 2. Receive proxied HTTP requests
← { "type": "request", "id": "uuid", "method": "GET", "path": "/api/hello", "headers": {...} }
// 3. Return the response
→ { "type": "response", "id": "uuid", "status": 200, "headers": {...}, "body": "..." }