lwis docs

Security / Pinned web app

Pinned web app

The hosted web app at lookwhatisee.xyz/capture/ pins a signed release in your browser, so the server can't quietly swap in different code. This page explains what that protects and what it doesn't.

Why it matters

The web app at /capture/ is loaded from lookwhatisee.xyz. It holds your browser's pairing keys, so code served by a compromised server could use them to send to your agent sessions. Pinning makes the server's code prove that it is a signed lwis release before your browser runs it.

The Android app and the Firefox extension bundle their code, signed with the app or the extension. They don't load code from the server, and they don't use this mechanism.

How pinning works

Updates

When a newer signed release is ready, the Machines screen shows "Web app <version> verified: reload to use it". Nothing changes until you reload.

Offline, the pinned release keeps running.

When a check fails

If the server offers a release that doesn't verify (bad signature, a file that doesn't match its hash, a downgrade, or the same version with different files), it isn't installed and the pinned release keeps running. The Machines screen says so and offers two choices:

If you see "The server offered app code that no signed lwis release lists", close the tab and don't use the web app until lookwhatisee.xyz explains what happened. It means a new service worker script appeared that isn't part of any signed release.

Where to see the status

The Machines screen of the web app shows a line like web app 0.11.0 · signed release. not pinned means no signed release is pinned yet, with the reason (for example, offline on your first visit).

What it doesn't cover

Web-app pairings are also notify-only by default on your machine: each capture from the hosted web app waits for lwis accept unless you raise its trust with lwis devices trust <id> full. See Your devices.