EDGE Challenge · ATP 2026

شجرة

Shajarah

Keeping first responders connected as their phones switch between Wi-Fi, 5G and satellite.

Team

  • Andre Meriac
  • Jassim Alzaabi
  • Chanwon Cheong
0.96 sto carry traffic again after a 5G outage, against 13.1 s for our TCP+TLS baseline
5.7×smaller pages across the tunnel, the median over 2,147 Wikipedia pages
16.1%of real clicks go to Jev's top three links, over three times a random pick

02 · The problem

Responders lose connection when they need it most

Why responders need a connection

First responders increasingly rely on online tools in the field. Many teams use ATAK, which puts team positions and incident data on a shared map on their phones and has traditionally depended on cellular service. Search and rescue teams plan and navigate with mapping tools such as CalTopo, and voice calls over the internet let teams talk wherever there is data coverage.

In a desert search and rescue operation or during a sandstorm, however, coverage is patchy, and a responder's phone constantly switches between different cell towers and satellite. The tools are only as good as the connection underneath them.

Why switching networks breaks things

Each network switch gives the phone a new IP address. Ordinary app connections are tied to that address, so every switch forces apps to start again with a new TCP handshake. As a result, maps stall, pages fail to load and voice calls drop out.

What a single switch looks like to an app:

  1. The phone joins a new network and gets a new IP address.
  2. Every open TCP connection was tied to the old address, so it is now dead, though the app often only notices after a timeout.
  3. The app opens a new connection: a TCP handshake, then a TLS handshake, before any data can flow.
  4. Whatever was in flight, a page, a map tile, a message, is lost or has to be sent again.

Each gap may seem short, but switches happen again and again as a team moves, and every one interrupts every app on the phone at the same time.

The cost of reconnecting

1.2 s+

of dead time after every switch on a geostationary satellite link, before any data can flow again.

A new secure connection needs a TCP handshake and then a TLS handshake, and each takes at least one full round trip. On a geostationary satellite link a single round trip takes around 600 milliseconds, so the cost of reconnecting grows with the latency of the link.

LinkRound tripTwo handshakes
Wi-Fi8 ms16 ms
5G24 ms48 ms
Low-orbit satellite40 ms80 ms
Geostationary satellite600 ms1.2 s

Round trips of the links we emulate. Noticing that the old link is gone comes on top.

With QUIC connection migration, no new handshake is needed at all.

03 · Existing solutions

What already exists, and where it falls short

QUIC connection migration

QUIC is a modern transport protocol that identifies a connection by an ID rather than an IP address, so in principle it can move to a new network without reconnecting. It is already built into some web browsers, where it speeds up page loads by combining the transport and encryption handshakes into one.

+ Strength: Designed to survive network changes, with fast, encrypted handshakes.

− Limitation: Migration is rarely used in practice, and most apps and voice traffic still run over TCP, which cannot migrate at all.

Mosh, the mobile shell

Mosh is a remote terminal tool that keeps a session alive while the client changes IP address, even when switching between Wi-Fi, cellular data and wired Ethernet. It also predicts how each keystroke will change the screen, hiding latency from the user.

+ Strength: Proven roaming between networks, plus prediction that hides delay.

− Limitation: Works only for terminal sessions, so it cannot help a responder loading a map, opening a website or making a call.

Multipath TCP

Multipath TCP lets a single connection use several network paths at once, such as Wi-Fi and cellular. If one path fails, traffic carries on over the others. Apple uses it on iPhones for services such as Siri, so that requests survive a weak Wi-Fi signal.

+ Strength: Keeps a connection alive when one link drops, and can combine the capacity of several links.

− Limitation: Both the device and the server must support it, which most websites do not, and it does nothing to reduce the data sent over slow links.

Side by side

Survives an IP changeHelps web and app trafficNeeds every website to changeSends less data on slow links
QUIC migrationYes, when both ends support itOnly apps built on QUICYesNo
MoshYesNo, terminal sessions onlyNeeds Mosh on the remote machineOnly for terminal screens
Multipath TCPYes, if another path is upWhere both ends support itYesNo
ShajarahYesApps that use the phone's proxy settingNo, only our own serverYes: compression and prefetching

04 · Our idea

A dual proxy between the phone and the cloud

Shajarah places two proxies between the user's apps and the internet: a client proxy on the user's device and a server proxy in the cloud. All traffic between them travels through one QUIC tunnel that stays open when the device changes network, while the server proxy does the heavy work on the device's behalf. Unlike the existing solutions, it both survives network switches and reduces the data that has to cross a slow link.

01

Survives IP switches

The client proxy takes the traffic of every app that uses the phone's proxy setting and carries it inside a single QUIC tunnel. When the phone switches networks, the tunnel moves with it instead of breaking.

02

Sends less data

The server proxy fetches web pages on the phone's behalf and compresses them before sending, so far less data crosses the slow link. This saves bandwidth on every connection, not just satellite ones, lowering data costs and leaving more capacity for time-critical traffic such as voice calls.

03

Loads before you click

The server uses Jev, a lightweight AI model accessed through an API, to predict which links the responder will open next. It sends those pages to the phone in advance, so they load instantly, even during a brief loss of signal.

Why two proxies?

Neither the apps nor the websites have to change. Apps talk to the client proxy as they would to any proxy, and websites see an ordinary visitor: the server proxy. Only the part in between, which we control on both ends, needs to cope with the network changing.

Keeping the unreliable link short

The handshakes with websites and any lost packets on the way to them are handled by the server, over its fast and stable connection. Only the phone's own link, the one that keeps changing, is left to the QUIC tunnel.

05 · Model

How Shajarah fits together

Phone and appsunchanged apps
The responder keeps using ordinary apps such as a browser, a mapping tool or a VoIP client, and none of them need to be modified. Every request they make is routed through the client proxy instead of going straight to the network. This way, responders keep the tools they already know, and those tools simply stop breaking when the network changes.
Client proxyon the device
The client proxy runs on the phone and is the only part of the system that knows which network is in use. It places each request inside the QUIC tunnel and keeps a cache of pages, serving prefetched pages straight from it. When the IP address changes, it continues the same tunnel from the new address, so apps never see a disconnect.
QUIC tunnelWi-Fi · 5G · satellite
The tunnel is a single QUIC connection between the phone and the cloud, travelling over Wi-Fi, 5G or satellite. Because QUIC identifies the connection by an ID rather than an address, switching links needs no new handshake. Lost packets only delay their own stream, so one slow page never holds up the others.
Cloud proxyon a remote server
The server sits on a stable, fast connection and does the heavy work for the phone. It fetches pages from the web and compresses them with deflate so they are about 5.7 times smaller. Because its own connection never changes, the handshakes with websites happen over its stable link, and the unstable part of the journey is kept short.
Jev predictionnext-link model
Whenever the server delivers a page, it extracts the page's links and passes them to Jev with the user's recent history. Jev ranks the links by how likely the user is to click them next, and the server pushes the top pages to the phone's cache. If the responder opens one during a signal gap, it loads instantly.

A request, step by step

  1. An app asks the client proxy for a page.
  2. If a fresh copy is in the phone's cache, it is served at once. If an older copy is there, the proxy asks the server whether it changed (ETag), and only the answer crosses the link when it hasn't.
  3. Otherwise the request goes through the tunnel; the server fetches the page, compresses it and sends it back.
  4. In the background, the server asks Jev which links come next and pushes the likely pages to the cache.

When the network changes

  1. The client proxy checks the tunnel five times a second.
  2. If the current link stops answering for a second, it moves the tunnel to another network that works.
  3. The same QUIC connection carries on from the new IP address: no new handshake, and requests in flight complete.
  4. If the link comes back after a long silence, QUIC's retry timer is reset at once, so traffic flows again within a second.

When the signal fades

  1. The phone watches the signal strength and fits a trend to the last five seconds.
  2. If the signal will become unusable within eight seconds and there is no other network, it warns the server.
  3. The server prefetches much more, two clicks deep for long outages, so there is something to read offline.
  4. It stops sending just before the expected drop, since data sent into a dead link only jams the connection when it comes back.
Secure sites. HTTPS traffic passes through the tunnel still encrypted: neither proxy can read it, and the server simply relays it to the website. Those connections survive a network change like everything else in the tunnel, but they are not compressed or prefetched.

06 · Prototype

How our prototype works

iPhoneSafari, proxy set in Wi-Fi settings
Computer 1client proxy (phone side)
QUIC tunnelover Ethernet or mobile data
Computer 2server proxy (cloud side)
Webwebsites

Why two computers? We have not yet committed to paying for server hosting, so computer 2 stands in for the cloud server. In the real system, the client proxy runs on the iPhone itself and connects directly to a remote server.

Running the demo

Computer 2 runs the server proxy and creates a certificate, which we copy to computer 1 so the two machines can trust each other. Computer 1 runs the client proxy and accepts connections from other devices on the Wi-Fi network. On the iPhone, we set a manual proxy in the Wi-Fi settings that points at computer 1, then browse normally in Safari. The full steps are in the README on GitHub.

Two kinds of traffic

Secure HTTPS sites pass through the tunnel still encrypted, so neither proxy can read their contents. Plain HTTP sites go through the full proxy, where the server compresses pages and the phone side caches them. Both kinds of traffic share the same QUIC tunnel between the two computers.

Showing a network switch

The iPhone's proxy setting only works on Wi-Fi, so the switch happens on computer 1: it keeps Wi-Fi for the iPhone and moves the tunnel between Ethernet and mobile data while Safari keeps loading. On computer 2, the server log records every site opened, and Wireshark shows one QUIC connection carrying all of the traffic. The switch itself is what our emulated tests measure; see the results.

What the live demo showed

94

secure connections to 44 different sites in half an hour of browsing on the iPhone, all carried by one QUIC tunnel

41

connections opened by a single Google search in under four seconds, every one inside the same tunnel

0.9 s

to load a 922 KB Wikipedia page over HTTPS through both proxies

The Instagram app worked through the tunnel unchanged: it picks up the iPhone's proxy setting by itself. Every connection that failed was to an ad, tracking or telemetry server, which the network we tested on appears to block.

Built with aioquic QUIC tunnel Python ssl TCP baseline zlib compression Jev via OpenRouter link prediction selectolax link extraction

07 · Testing process

How we tested Shajarah

To test the system fairly and repeatably, we built a simulated network on a single Linux PC. Network namespaces create four separate machines: a phone, a router, a cloud server and a website. tc netem, a free, open-source Linux tool, gives each link realistic delay, jitter, packet loss and bandwidth. We ran two scenarios: a 5G outage, where the signal fades and the link stays dead for about 45 seconds before returning, and a walk where Wi-Fi fades out and the phone moves over to 5G.

The outage scenario, second by second
5G
no signal · 46 s
5G back
0 s30 s38 s84 s120 s

The signal fades from 30 s, the link is dead from 38 s to 84 s, and 5G returns. Wi-Fi and satellite are unavailable throughout, so there is nowhere to switch to.

Instead of inventing browsing behaviour, we used Wikipedia's public click records, which count how often real readers followed each link from one article to another. Each run is one simulated reader following real clicks from August 2026. We ran 20 runs for each of four setups, from plain TCP up to the full system, and compare median results so that one unusually fast or slow run cannot skew the outcome.

Jev is used as-is through its API, so it needs no training data. We scored it on 1,002 Wikipedia pages against 109.1 million real clicks from July 2026 and compared it with three baselines: a random pick among the same 40 links Jev sees, the order of links on the page, and the most-clicked link from June. Keeping the three months separate means no predictor is scored on clicks it learned from.

What we measured

  • Page load time: The time from requesting a page to receiving all of it.
  • Recovery time: How long after the network comes back the first new packet gets through the tunnel.
  • Data transferred: The bytes sent over the phone's link, before and after compression.
  • Hit rate: The share of real clicks that went to a predictor's top one or top three links.
  • Wasted prefetch: Data spent on prefetched pages that were never opened.

Link settings (one-way)

LinkDelayJitterLossBandwidth
Wi-Fi4 ms2 ms0.1%100 Mbit/s
5G12 ms4 ms0.2%150 Mbit/s
LTE25 ms8 ms0.5%30 Mbit/s
Low-orbit satellite20 ms6 ms0.5%100 Mbit/s
Geostationary satellite300 ms10 ms0.3%20 Mbit/s

Applied at both ends of each link, so a round trip is about twice the delay. The grey rows are ready in the testbed but not yet used in a test.

The four setups

SetupTunnelCompressionPrefetchingRunsPages opened
TCP+TLSTCP+TLS, reconnects after a dropYesNo2078
QUICQUIC, keeps the connectionYesNo2090
QUIC + fixed prefetchQUICYesJev, ignoring outage warnings2092
ShajarahQUICYesJev, more before an outage2095

Three months of click data, kept apart

MonthUsed for
June 2026The most-clicked-link baseline only
July 2026The answer key: scoring Jev and the baselines (109.1 million clicks on 1,002 pages)
August 2026The browsing sessions the simulated readers follow

08 · Test results

What the tests showed

0.96 s

QUIC recovery after a 5G outage, against 13.1 s for our TCP+TLS baseline (median of 20 runs)

5.7×

median page size reduction with deflate, across 2,147 Wikipedia pages

16.1%

Jev top-3 hit rate, over three times a random pick among the same links (5.1%)

Recovery time, median

After the 5G outage, 20 runs each

TCP+TLSQUIC
Show as a table
MedianMiddle half of runs
TCP+TLS13.1 s13.0–13.2 s
QUIC0.96 s0.92–1.03 s

Page load time, median

Away from any drop

TCP+TLSQUIC
Show as a table
TCP+TLSQUIC
Wi-Fi224 ms (10 pages)216 ms (10 pages)
5G265 ms (54 pages)229 ms (61 pages)

Recovery

When 5G returned after an outage of about 45 seconds, QUIC was carrying traffic again within a second, while our TCP+TLS baseline took 13 seconds to reconnect. This includes our own change to QUIC, which resets its retry timer as soon as the server is heard again; without it, QUIC also took tens of seconds. Away from any drop, page loads took about the same time on both.

Prediction

Jev's top-3 hit rate of 16.1% beats both data-free baselines, a random pick (5.1%) and the order of links on the page (9.4%), without needing any click data. A most-clicked ranking scores higher (38.1%), but it relies on the website's own click logs, which a proxy does not have.

Data savings

Across the 20 outage runs, plain QUIC sent 4.7 MB where the uncompressed pages would have taken 25.2 MB, 5.4 times less. Over the whole Wikipedia snapshot used in testing, 847 MB of pages compresses down to 133 MB, a 6.4-fold saving on every link, not just slow ones.

Waiting for pages during the outage

Total time each reader spent waiting for pages over the two-minute run, 20 readers per setup. Pages opened from the phone during the outage are the ones Shajarah had prefetched or saved.

SetupMean waitMedian waitOutage clicks opened from the phonePrefetched per run
TCP+TLS31.7 s28.5 s3 of 20–
QUIC21.6 s17.0 s3 of 22–
QUIC + fixed prefetch20.1 s12.6 s5 of 230.24 MB
Shajarah14.0 s3.4 s14 of 262.9 MB

Against plain QUIC, Shajarah was faster for 8 of the 20 readers and slower for none; the others clicked a page that had not been predicted and waited for the network like everyone else.

Prediction in detail

PredictorTop 1Top 3Needs
Jev6.2%16.1%Nothing but the page
Random pick among the same 40 links1.7%5.1%Nothing
Order of links on the page2.7%9.4%Nothing
Most-clicked link last month19.2%38.1%The website's click logs

Share of each page's real July clicks that went to the predictor's top links, averaged over 1,002 pages. Jev sees the page's first 40 content links, which hold 66% of the clicks; the most-clicked baseline ranks every link.

Data in detail

UncompressedSentSaving
Wikipedia snapshot, 2,147 pages847 MB133 MB6.4×
QUIC, 20 outage runs25.2 MB4.7 MB5.4×
Shajarah, 20 outage runs, with prefetching384 MB62.1 MB6.2×

Per page, the saving ranges from 2.7× to 19×; the middle half of pages shrink between 5.1× and 6.2×.

The cost of prefetching

Shajarah sent 2.9 MB of prefetched pages per run, and 99.2% of it was never opened: most predictions miss, so a prefetch pays off only when an outage makes one hit worth the data. That is why prefetching is heavy only when a dropout is predicted.

What went wrong along the way

  • Pushing into a dead link. Early runs kept prefetching into the outage. The unacknowledged data then held up QUIC's recovery, and some readers waited longer than with plain QUIC. The server now stops just before the predicted drop and never has more than 256 KB of prefetched data unacknowledged.
  • A retry timer that kept growing. After 45 seconds of silence, QUIC waited about 30 seconds before trying again. Both ends now reset that timer as soon as they hear from each other.
  • Pages that never matched. Prefetched pages were missed because the same address was written in two ways. Addresses are now normalised on both ends.

09 · Improvements

What we can improve

BuiltPlanned
Transport
  • QUIC tunnelOne connection that survives IP address changes.
  • HTTPS pass-throughSecure sites cross the tunnel still encrypted.
  • Satellite and cellular at onceSend over both links and use whichever is faster.
  • Predictive early switchingMove networks before the signal fails.
  • Proxy authenticationOnly approved devices can use the client proxy.
Prediction and caching
  • Jev link predictionRanks the links a user is likely to open next.
  • Page cacheServes repeated requests without refetching them.
  • Conditional requests (ETag)Checks if a page changed without redownloading it.
  • Local Jev via LayaKeeps browsing data on servers we control.
  • Battery-aware prefetchingPrefetches less when the battery is running low.
Content
  • Deflate compressionPages cross the tunnel about 5.7 times smaller.
  • Brotli compressionA stronger algorithm that shrinks pages further.
  • Text-first loadingSends the text of a page before its images.
  • Strip unneeded HTML and CSSRemoves code that carries no useful information.
  • Resize images and videoShrinks images and lowers video quality on slow links.
Operations
  • Emulation testbedRecreates Wi-Fi and 5G links, outages and handovers.
  • Self-hosted serverEmergency services control their own infrastructure.
  • Responder priority (eMLPP)Serves responders first, as GSM does for rescue calls.
  • Resilient Opus voice callsError correction turns packet loss into brief distortion.
  • Store-and-forward messagesMessages sent in a blackout arrive on reconnection.

10 · Real-world use

From prototype to the field

Phase 1 · Done

Lab prototype

The emulated testbed and iPhone demo presented here.

Phase 2

Field recordings

Use an antenna to record real signal drops in the field, then replay them in our simulated network.

Phase 3

Cloud server

Set up an AWS server to host the server proxy, so the tunnel runs over the real internet.

Phase 4

Easy-to-use app

Build a user-friendly laptop or Android app that sets up the client proxy for the user.

Who can use it

Shajarah was built around first responders, such as search and rescue teams and ambulance crews working in remote areas, but the same problem affects everyday users. Commuters on trains and buses, drivers passing between cell towers and travellers on patchy connections all lose pages and calls when their phone changes network, so Shajarah can keep ordinary browsing smooth too. For emergency teams, each device would be registered with a priority level, so the server knows whom to serve first when bandwidth is scarce.

Risks and safeguards

Because the server proxy handles users' traffic, it must be trusted, so it runs on infrastructure we control, starting with AWS, and Jev would eventually run locally. Secure sites already pass through encrypted, so the server cannot read them. The client proxy will also need authentication so that only approved devices can use it, and if the server is unreachable, the client will fall back to a direct connection, so users are never worse off than without Shajarah.

Guidelines for quality of service and experience

  1. Tie sessions to the user, not the network. A connection should carry on unchanged when the device moves to a new network.
  2. Keep the unreliable link short. Handshakes and resends should only travel between the device and a nearby, stable server.
  3. Fetch what matters while the signal is good. Download maps, instructions and contacts before coverage drops.
  4. Give live traffic priority. Voice calls and urgent messages should always go ahead of large downloads.
  5. Match content to the connection. On slow links, send smaller images and leave out parts of a page that add nothing.
  6. Judge quality by what users feel. Measure stall time, recovery time and call quality, not just download speed.