Open protocol · draft 0.1

From your server to your console, one open protocol.

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.

Draft 0.1

The text may still change before 1.0. Comments are welcome, from client and server authors especially.

What stays

What it keeps from today's protocols

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 is new

What it adds

What clients have had to guess until now, written down.

Implement it

For server and client authors

The specification is short: few routes, fixed shapes, plain HTTP and JSON.

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

Writing a client

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

Schemas and examples

A JSON Schema for every document, an example of each, and an OpenAPI description of the routes, to check your own against.

schemas/v1 · examples/v1 · openapi.yaml

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

For your own games

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.

Licences

Free to implement

Questions, comments and proposals go to the repository's issues.

This site

Privacy

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

Read it, then tell us

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.