icey is organised into 16 modules. Each module builds as a separate library and declares its dependencies via CMake. Enable only what you need; dependencies resolve automatically.
This page is the map. If you want the quickest path to a task, use the table below and then jump into the module guide that actually owns the work.
| Goal | Start here |
|---|---|
| Runtime contracts, loop affinity, ownership rules | concepts/runtime-contracts.md |
| Packet pipelines, queue boundaries, media graphs | concepts/packetstream.md |
| HTTP server or WebSocket service | recipes/http-server.md |
| Browser media send path | recipes/webrtc-webcam-to-browser.md |
| Browser media receive and recording | recipes/webrtc-browser-to-recorder.md |
| Decoded media intelligence branches | modules/vision.md and modules/speech.md |
| Full self-hosted media stack | run/index.md |
| Signalling, presence, and rooms | modules/symple.md |
| TURN relay and NAT traversal | recipes/turn-server.md |
| Low-level STUN message work | modules/stun.md |
| Capture, encode, decode, muxing | modules/av.md |
symple
/ | \
/ | \
/ json \
/ | \
/ http sched
/ / | \
/ / | \
/ net | \
\ / \ | /
\ / \ | /
crypto \ | /
\ \ | /
\ base
\ |
\ libuv (vendored)
\
openssl (system)
archo pluga av
| | |
base base base (+FFmpeg)
stun ---- turn
| / |
net / |
| / |
crypto net
|
base
webrtc
/ | \ \ \
base net crypto av json
| |
libuv base
(+libdatachannel, OpenSSL 3.x, FFmpeg)
pacm
/ | \ \
net json http archo
| | | |
... | ... base
base
speech vision
\ /
\ /
av json
\ /
base| Module | Description | Dependencies |
|---|---|---|
| base | Event loop (libuv), signals, PacketStream pipeline, logging, filesystem, timers | libuv (vendored) |
| crypto | Hashing, HMAC, symmetric ciphers, X.509 certificates, RSA | base, OpenSSL |
| net | TCP/SSL/UDP sockets, chainable adapters, async DNS | base, crypto |
| http | HTTP client/server, WebSocket, forms, cookies, streaming | base, net, crypto |
| json | JSON serialization (nlohmann/json), configuration | base |
| av | FFmpeg capture, encode, decode, device management | base, FFmpeg (optional) |
| speech | Audio intelligence primitives for decoded media streams | base, av, json |
| vision | Video intelligence primitives for sampled decoded frames | base, av, json |
| webrtc | WebRTC media transport via libdatachannel | base, net, crypto, av, json, libdatachannel, OpenSSL 3.x, FFmpeg 5+ |
| symple | Real-time messaging, presence, rooms, WebRTC signalling | base, crypto, net, http, json |
| stun | RFC 5389 STUN for NAT traversal | base, net, crypto |
| turn | RFC 5766 TURN relay server and client | base, net, stun, crypto |
| archo | ZIP archive extraction | base |
| pacm | Package manager for plugin distribution | base, net, json, http, archo, crypto |
| pluga | Plugin system for shared library loading | base |
| sched | Task scheduler for deferred and periodic jobs | base, json |
This page answers:
The module guides answer the rest: architecture, contracts, usage, examples, and links into samples or apps. The concepts and workflow pages exist so you do not have to reverse-engineer that path from the module list every time.