Writing a server
Serve the handshake and the library; add save backups, cheats or pairing when you want, and declare them in its features. A server fits in a weekend.
GET /.well-known/lantern
GET /api/lantern/v1/apps?sort=added
Switch homebrew
Libraries
Open data and protocols
Lantern is an open, versioned contract between console homebrews and the library servers people run at home for their own games: browse the library, download with integrity checks, keep save backups and cheats.
The text may still change before 1.0. Comments are welcome, from client and server authors especially.
The protocols in use today (Tinfoil's index, Ownfoil, AeroFoil) got a good deal right. Lantern keeps it, so a server can speak both.
What clients have had to guess until now, written down.
The specification is short: few routes, fixed shapes, plain HTTP and JSON.
Serve the handshake and the library; add save backups, cheats or pairing when you want, and declare them in its features. A server fits in a weekend.
GET /.well-known/lantern
GET /api/lantern/v1/apps?sort=added
Find servers on the local network, read their features, page through the library and check each download's SHA-256. A client fits in a few hundred lines of C++.
User-Agent: ExampleClient/0.1
Range: bytes=0-1048575
A JSON Schema for every document, an example of each, and an OpenAPI description of the routes, to check your own against.
In the repository: a conformance suite to run against a server (conformance/), and a small reference server that passes it (server/). Only an implementation that passes the suite should call itself Lantern-compatible.
The first client will be PlayShelf, a homebrew package manager for the Nintendo Switch. PlayShelf
Lantern carries what your server holds, between it and your console. It finds nothing and distributes nothing: it is not a way to get games, and its servers are for the games you own.
Questions, comments and proposals go to the repository's issues.
This site sets no cookie, and keeps nothing in your browser but the language you choose in its header. It loads nothing from another site: its fonts, images and scripts are served with it.
It counts its visits with Umami Cloud, in the European Union (Frankfurt), without cookie. For each page seen: the page, the page you came from, your browser, system and kind of device, your screen's size, your language and your country. Your IP address is used to tell your country and to tell visits apart, and is not kept with them. The counts are kept six months, used only to know what is read, and never sold or shared. Umami's policy: umami.is/privacy.
Who publishes this site, who hosts it, and how to ask about your data: Privacy and legal notice
The draft is the time to change things. An issue about a route, a field or a missing case helps every server and client to come.