LingoLens Screen translator · VPN
Interactive preview Watch it work
Your text & files ↗

Demo on your phone · Sample screens only. The VPN button is simulated; your real connection is unchanged. The native iPhone app is still in development, not yet on the App Store.

Live simulation · nothing leaves this page

Pipeline

Four steps, under 60 milliseconds.

This is the proposed native-lens pipeline, not a description of the online translator. The separate browser translator sends text and OCR images to Cloudflare when you choose to use it.

01

Capture

Android: a MediaProjection frame every 700 ms (or the accessibility tree, which is cheaper). iOS: a screenshot or the Safari web extension.

VirtualDisplay · ~12 ms
02

Read the layout

ML Kit / Vision returns text, confidence and bounding boxes. LingoLens clusters lines into UI blocks and samples the surrounding pixels for background colour.

OCR · ~28 ms
03

Translate

On-device NMT for the 12 offline packs, cloud engines for the long tail. A term memory keeps names, prices and units untouched.

NMT · ~9 ms cached
04

Redraw in place

Overlay views are placed on the exact bounding boxes, using a font-metric fit so line height, weight and colour match the original. Tap any bubble to hear it.

Compose overlay · ~6 ms

Reality check

What each platform actually allows.

You asked for a lens that rewrites other apps' text and a VPN that works anywhere. Here is the honest engineering picture — it drives the architecture in native/.

CapabilityAndroid 10+iOS 17+
Overlay other appsDraw above a third-party app Yes TYPE_APPLICATION_OVERLAY, needs “Display over other apps”. Partial Only a Picture-in-Picture window is allowed above other apps. It's a floating panel, not a full-screen overlay.
Replace text in placeSame font, size, colour, layout Yes OCR boxes + styled overlay. Accessibility tree can also be read directly for text-only apps. In Safari yes A Safari web extension can rewrite DOM text and inherit the page CSS perfectly. Native apps: no.
Background serviceKeep the lens alive while you use other apps Yes Foreground service + persistent notification. Limited Extensions run only while invoked; a PiP session can persist while the overlay is open.
Own VPN tunnelDevice-wide encrypted egress Yes VpnService, no special approval. WireGuard is a drop-in. With entitlement NEPacketTunnelProvider needs Apple's “Personal VPN” entitlement, granted after review.
Works offlineNo network at all Yes Bundled OCR + translation models. Yes Apple on-device translation + Vision models.
Works “in any country”Regardless of local restrictions Depends on your servers and local law. A tunnel is only as reachable as its endpoints. No app can promise access everywhere; app stores also require VPN disclosure and prohibit marketing that promises circumvention. Plan for server diversity, obfuscation, and a compliance review.

Android — the full vision

Foreground lens service, ML Kit OCR, overlay redraw, term memory, and a real WireGuard tunnel. This is the build that matches the demo one-to-one.

Reference implementation in native/android

iOS — the best legal approximation

Safari extension does true in-place, style-preserving replacement on the web. Beyond Safari: PiP overlay with a translated image, keyboard extension, share sheet and screenshot translation.

Scaffold in native/ios · entitlement needed for VPN

VPN — real, but yours to host

The VPN interface is a simulation. Native client reference code is in the repo, but no server fleet is deployed. A production VPN needs real endpoints, testing and legal review.

Read docs/VPN.md before shipping