Featured · Live
SIGNAL — learn SIP by breaking it
A browser game that teaches SIP to the level where you can read a trace from a broken
production call and name the failing header. 37 levels across 8 acts — transactions and
timers, dialogs and routing, offer/answer, forking proxies, NATs, B2BUAs, digest auth —
on an engine I wrote from the octets up: scanner and parser, both transaction state
machines, every §17 timer, a virtual clock and a simulated lossy network.
Nothing is scripted. A level is a network topology plus a goal predicate evaluated against
the event log the engine actually produced, so any answer the RFCs permit passes and
none they forbid does — there is no answer key to match. Adversary Mode hands you a working
call and a budget to break it, and scores the attack void if it only succeeded because the
defender itself went non-conformant. CI plays every level with a reference solution, and
plays a wrong answer at the hard ones to prove the level can still be failed.
TypeScriptViteZero runtime deps
RFC 3261 · 3264 · 4566Vitest · 453 tests
Property-based · RFC 4475 corpus
⚡ Static host — no cold start. The whole engine runs in your browser; nothing you type is sent anywhere.