Under construction, nothing released yet. Today the bridge serves an empty library; the sources, the web interface and the image come next, following the latest draft.
What it will read
It runs next to your library and changes nothing in it. Several sources at once, merged by SHA-256.
Plain folders
Games laid out in folders, read in place.
Tinfoil shops
Any shop that speaks Tinfoil's index.
Ownfoil
Its GraphQL API and its live changes.
AeroFoil
Saves, cheats, requests and content rating.
How it works
A library the clients already understand, with none of the work on their side.
Hashes
Lantern asks for the SHA-256 of every file. With the games mounted read-only, the bridge hashes them on disk and serves them itself; a slower remote mode hashes what it downloads, once.
Pairing and tokens
Everything the SDK's server toolkit does: pairing with a code or a QR code, device-bound tokens, invitations, a rating cap carried by the token.
A small web interface
The state of the sources and of the hashing queue, the devices to approve, live logs and the configuration.
Try it
Nothing is released yet, so the bridge runs from a checkout (Python 3.12 or later, uv).
-
Start the bridge
Clone it with its SDK submodule and serve it.
git clone --recurse-submodules https://github.com/JigSawFr/lantern-bridge cd lantern-bridge && uv sync uv run lantern-bridge serve --port 8080 -
Shake hands
Any Lantern client, or curl, can already read its handshake.
curl -s http://127.0.0.1:8080/.well-known/lantern
It serves an empty library for now.
Distrustful by design
Read-only
It changes nothing in your library: the games are mounted read-only.
Distrusts its upstream
It follows no URL outside the origin it was configured with, and caps what it reads.
Tested against the suite
Checked in CI with the specification's conformance suite, over fake upstreams.
Bring your library to Lantern
Follow the work, or build your own server with the SDK.