Gemini, but the other one
Since the end of 2023, there has been constant talk about Google Gemini and its potential importance in the IT landscape. So I thought I should take an interest in Gemini, but since I don’t like to do things like everyone else, I’m going to focus on a Gemini that I’ve had on my radar for a few years: The Gemini Protocol, and you’ll see… it has nothing to do with Google.
What is the Gemini Protocol?
From Wikipedia :
Gemini is an application-layer internet communication protocol for accessing remote documents, similar to HTTP and Gopher. It comes with a special document format, commonly referred to as “gemtext”, which allows linking to other documents.
Sample Gemini capsule (gemini://sdf.org/gerben/wl/
):
Origin of the Protocol
The Gemini Protocol (which has celebrated its 5th anniversary) originates from a broader movement responding to the increasing complexity of the web: the slow web, which aims to counteract the current internet’s information overload.
Indeed, the web as we know it today is vastly different from its origins (NCSA Mosaic , anyone?) and presents several issues:
- Overlapping protocols and extensions (JavaScript, CSS in multiple versions)
- Excessive size of some web pages (it’s not uncommon to encounter landing pages pulling several megabytes of data)
- Increase in the number of requests needed to display a page (between scripts, CSS, images, and analytics requests, a simple news article can trigger a hundred requests)
- The web has become inaccessible for older computers (not to mention browsing from a terminal)
- When reading articles, the visual clutter has sometimes become so overwhelming that accessing information is very difficult; ad blockers are necessary to enhance browsing comfort (Apple has even implemented a system on iOS to select page components not to display)
- It’s not uncommon for multiple ’trackings’ to occur during navigation via tools from Facebook, Google, Amazon…
- Website accessibility has become problematic, especially for screen readers that struggle to focus on the relevant part of the site.
What should be done? Go back to old protocols? Why not, let’s take a closer look at Gopher.
Gopher
Gopher is an information retrieval and file transfer protocol developed in the early 1990s. It allows users to navigate a remote hierarchical file system using a client. Informations displayed are composed of lines of text and links. Gopher was one of the first file transfer protocols to be widely used on the Internet, but it has been replaced by newer protocols such as HTTP.

Gopher has the advantage of being lightweight and structured, but it does have some issues:
- Lack of security: Gopher does not support data encryption, making it vulnerable to attacks and interception of sensitive data.
- No real documents, just an index: links and document formatting are not defined in the protocol, which limits navigation possibilities.
(Note, however, that Gopher is still used, particularly as a reaction to the current web’s information overload as we know it.)
The Gemini Protocol in a Few Lines
The goal of the Gemini Protocol is to return to the basic components of the internet while taking advantage of the standards that have emerged since. Here is the protocol’s roadmap:
- Text only
- A simple protocol to use, with clients and servers that are easy to code
- No extensibility (to avoid the introduction of elements like JavaScript into the specification)
- One interaction = one request, no pulling a bunch of CSS or other files
- Similar to the Gopher protocol but with content that is easier to produce and allows for hyperlinks (formatting based on markdown)
- End-to-end encryption through the use of TLS
Everything is described here:
=> https://geminiprotocol.net/
The result is a protocol that is simple to implement and use, with real accessibility and that won’t be “distorted” by the addition of plugins everywhere. In an era of energy efficiency, we could also mention that the stress on servers and clients is very low for accessing a given site.
Gemtext
Gemtext is Gemini’s simple and lightweight text format, designed to be easy to read and write. It uses minimalist formatting tags to create headings, lists, links, and quotes. It is based on a subset of the Markdown formalism, limited to the following elements.
Headings
3 levels of headings are available:
Lists
Only unordered lists are allowed, without nesting.
Quotes
Any line starting with ‘> ’ is considered a quote and will be rendered as a single line without a line break.
Preformatted Text
To create ASCII Art banners or include code examples:
Links
Links are not included directly within paragraphs but are placed on dedicated lines.

Text
The core of the protocol: plain text. Each paragraph consists of all characters up to the line break. It is up to the client to handle line wrapping during display.
And that’s it
There are some specific return codes, for instance to request input from the user, but on the content side, no more specifications are needed: you are ready to create your first Gemini capsule (the name for a Gemini site, inspired by the history of space exploration).
Clients
The Gemini protocol, a lightweight and secure alternative to the traditional web, offers a minimalist and content-focused user experience. To fully enjoy its benefits, choosing the right Gemini client is crucial. Here are some examples of Gemini clients you can use, categorized to suit your needs.
Lagrange
Lagrange is a versatile and powerful Gemini client distinguished by its focus on speed and efficiency. Its clean, minimalist interface prioritizes content delivery, offering a distraction-free browsing experience. While straightforward for casual users, its lightweight design ensures fast loading times, even on less powerful devices, making it an excellent choice for users prioritizing both performance and a streamlined Gemini experience.

Amfora
Amfora distinguishes itself as a minimalist and user-friendly Gemini client, particularly appealing to those who prefer a text-based interface. Its streamlined, text-focused design prioritizes content, offering a distraction-free browsing experience reminiscent of the early days of the internet. While it may not boast the graphical bells and whistles of some other clients, Amfora excels in simplicity and speed, making it an ideal choice for users seeking a straightforward and efficient way to explore the Gemini universe. Its lightweight nature and text-based interface also ensure quick loading times, even on less powerful hardware.

Servers
Several software options are available for serving Gemini content, catering to different technical skills and preferences. Here are some popular choices:
- Agate: A Gemini server implementation written in Rust. Agate has very few features, and can only serve static files. It uses async I/O, and should be quite efficient even when running on low-end hardware and serving many concurrent requests.
- Jetforce: An experimental server written in Python supporting advanced functionnalities such as CGIs.
You can find a more complete list of clients and servers on awesome-gemini .
HTTPS Gateway/Proxy
If your corporate network blocks access to anything other than HTTPS (and yes, we’re there now), there are proxies that still allow you to take advantage of the protocol, for example:
And the Worldline Blog?
And what about the Worldline Blog? As you might have seen on the images, I wrote a small PoC to export the blog’s current content as Gemini files.
- You can browse the result directly via a Gemini link: gemini://sdf.org/gerben/wl/
- Or via the Smolnet Portal (HTTPs): https://portal.mozz.us/gemini/sdf.org/gerben/wl/
- You will find the Rust source of the quick and dirty converter here: https://github.com/gcastel/wlblog-geminify