This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|Developed by||Solderpunk et al.|
.gmi, .gmni, .gemini
|Internet media type|
|Developed by||Solderpunk et al.|
(29 November 2020 )
|Type of format||Markup language|
|Internet protocol suite|
Gemini is an application-layer internet communication protocol for accessing remote documents, similarly to the Hypertext Transfer Protocol and Gopher. It is intended as a third alternative to those protocols. It comes with a special document format, commonly called "gemtext", that allows linking to other documents. Started by someone known as Solderpunk, the protocol is now being finalized collaboratively and has currently not been submitted to the IETF for standardization.
The Gemini specification defines both the Gemini protocol and a native file format for that protocol (analogous to HTML for HTTP or plaintext for Gopher), known as "gemtext". The design is inspired by Gopher, with certain modern additions such as mandatory use of Transport Layer Security (TLS) for connections and a hypertext format as native content type.
The design is deliberately not easily extensible, in order to preserve one of the project's stated goals of simplicity.
Gemini is designed within the framework of the Internet protocol suite. Like HTTP(S), Gemini functions as a request–response protocol in the client–server computing model. A Gemini browser (analogous to a web browser), for example, may be the client and an application running on a computer hosting a Gemini site may be the server. The client sends a Gemini request message to the server, and the server sends back a response message. Gemini uses a separate connection to the same server for every resource request.
Gemini resources are identified and located on the network by Uniform Resource Locators (URLs), using the URI scheme gemini://. A Gemini request consists only of such a URL, terminated by
CRLF; the header of a Gemini response consists of a two-digit status code, a space, and a "meta" field, also terminated by
CRLF. If the server is successful in finding the requested file, the "meta" field is the MIME type of the returned file and after the header follows the file data.
20 text/gemini # Example Title Welcome to my Gemini capsule. * Example list item => gemini://link.to/another/resource Link text
Text in the gemtext format is line-oriented which simplifies rendering; it offers constructs for headlines (three levels), flat list items, pre-formatted text, and link lines – no inline emphasis. As with HTTP hypertext, URIs are encoded as hyperlinks in gemtext documents, so as to form interlinked hypertext documents in the Gemini "web", which users refer to as Geminispace.
"Geminispace" denotes the whole of the public resources that are published on the Internet by the Gemini community via the Gemini protocol. Thus, Gemini spans an alternative communication web, with hypertext documents that include hyperlinks to other resources that the user can easily access.
The Gemini project was started in June 2019 by Solderpunk. Additional work has been done by an informal community of users. According to Solderpunk's FAQ, Gemini is not intended to replace Gopher or HTTP, but to co-exist with them. Much of the development happens on the Gemini mailing list. The creation of the Usenet newsgroup comp.infosystems.gemini in October 2021 was the first newsgroup in the Big Eight hierarchy in eight years.
Due to the simplicity of the protocol and served media type, various Gemini browsers have been implemented. The following non-exhaustive list of clients highlights their diversity. Further lists are available online.
Command line clients are fairly popular due to Gemini's simple markup being easy to display in a text only format, whereas they can be quite limiting with web content.
|Amfora||Terminal (TUI)||GPL 3.0||Go|
|AmiGemini||GUI (Intuition)||C, Intuition|
|asuka||Terminal (TUI)||MIT||Rust, ncurses|
|Castor||GUI (GTK)||MIT||Rust, GTK|
|Castor9||GUI (Plan 9)||C|
|Deedum||App (Android and iOS)||GPL 3.0||Flutter, Dart|
|Elaho (gemini-ios)||App (iOS)||MPL 2.0||Swift|
|Elpher||GUI (Emacs)||GPL 3.0||Emacs|
|GemiNaut||GUI (Windows)||GPL 3.0||C# for Microsoft Windows|
|Kristall||GUI (Qt)||GPL 2.0||C++, Qt|
|Lagrange||GUI||2 Clause BSD||C, SDL|
|Moonlander||GUI (GTK)||MIT||Rust, GTK|
|Rocketeer||App (iOS, MacOS)||Swift|
|VIRGIL99||Terminal (TI-99)||Assembly language|
Alternatively to native Gemini clients, Gemini-to-HTTP gateways can be used with common web browsers not supporting the Gemini protocol. Known such proxy servers are the Mozz.us portal, Vulpes Proxy, and ondollo.
Gemini server software
Various server implementations exist; lists thereof are maintained online.
- Edge, Jake (2021-02-10). "Visiting another world". lwn.net. Retrieved 2021-02-19.
- "Project Gemini Speculative Specification". gemini.circumlunar.space. 2020-11-29. Archived from the original on 2021-05-12. Retrieved 2021-06-25.
4.2 Server certificate validation. Clients can validate TLS connections however they like (including not at all) but the strongly RECOMMENDED approach is to implement a lightweight "TOFU" certificate-pinning system which treats self-signed certificates as first- class citizens.
- "Project Gemini FAQ". Archived from the original on 22 June 2020. Retrieved 26 June 2020.
- "Statistics on the Gemini space". Proxied gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi
- "Gemini Info Page".
- "Gemini Usenet Newsgroup".
- Kenlon, Seth (October 6, 2020). "Simplify your web experience with this internet protocol alternative". Opensource.com. Retrieved November 10, 2020.
- HTTP mirror of Gemini's site on Gemini
- Gemini Protocol Specification
- on YouTube
- "Awesome Gemini" — A collection of awesome things regarding the gemini protocol ecosystem.
- Kristall, Amfora and Bollux - a look at three gemini browsers Video by Chris Were on ShareTUBE, a PeerTube Fediverse Server
- FOSDEM 2021 Talk on Gemini
- Paywalled article in German magazine c't
- Gopher, Gemini, and the rise of the small Internet: Beyond the Web. Paywalled article in Linux Magazine