WAP/WML browser · desktop edition
The early mobile web,
back on
the air.
Waves is a practical desktop browser for exploring, testing, and improving the WAP/WML stack—without vague emulation or throwaway demos.
- Real runtime
- Navigation, forms, timers, and scripts come from the engine—not a mock UI.
- One workspace
- Run local examples, follow live pages, and inspect state in one desktop app.
Capture01
WaveNav field noteForms, focus & session trace
Local example

01 / Why it exists
Old protocol.
Serious tooling.
Most WAP tooling is either inaccurate, unfinished, or painful to work with.
Waves is the practical middle ground: close enough to the original platform to be worth trusting, but modern enough to support debugging, iteration, and real development work.
- Load local examples and live decks in one tool.
- Inspect runtime state and transport behavior while you browse.
02 / The system
Layered on purpose.
Each part of the stack does one job, with the browser sitting at the top—not swallowing the layers below.
- 01
Gateway
Kannel + environment
Compatibility testing at the edge of the stack.
- 02
Transport
Lowband
WBXML, WSP/WTP behavior, and the fetch rules beneath the browser.
- 03
Engine
WaveNav
A Rust/WASM runtime for parsing WML, navigation, and card rendering.
- 04
Browser
Waves
The desktop host that turns the layers into a usable browser.
03 / In practice
A browser,
not just a harness.
- 01
Browse
Open local examples and follow linked WML pages in the same session.
- 02
Interact
Edit fields, move focus, and submit forms through the real runtime.
- 03
Inspect
Check state, snapshots, and timelines to understand every transition.
- 04
Recover
Keep loading and failure states visible instead of hitting a dead end.
04 / Shipping now
Core flows, turned into day-to-day tools.
Open a deck, interact, inspect, and continue in one stable loop—even when the network slows down or fails.
- 01Open deck
- 02Interact
- 03Inspect
- 04Continue
- 01
Session
Faster navigation loops
Back, history, and follow-link behavior stay stable while you iterate.
Follow a link and continue without restarting the browsing loop.
- 02
Diagnostics
Actionable runtime detail
Transport state, runtime snapshots, and timelines stay visible in the browser.
Understand why a transition happened without attaching extra tooling.
- 03
Sources
Local and live parity
Move between local examples and live WML pages with the same browser shell.
Keep one input model and inspection workflow across both sources.
- 04
Recovery
Explicit degraded states
Loading and network failures keep the current browser context visible.
Inspect what happened and continue instead of landing on a frozen shell.
Your next transmission
Try the browser.
Then open the stack.
Start in the simulator, then inspect the browser internals and source from the same workflow.