Awesome Gemini

A collection of awesome things regarding the

gemini protocol

ecosystem.

Please contribute to this list to link to all the awesome gemini projects out there.

Repo mirrors:

What is Gemini

Excerpt from gemini.circumlunar.space:
Gemini is a client-server protocol featuring request-response transactions, broadly similar to gopher or HTTP.

Connections are closed at the end of a single transaction and cannot be reused. When Gemini is served over TCP/IP, servers should listen on port 1965 (the first manned Gemini mission, Gemini 3, flew in March'65). This is an unprivileged port, so it's very easy to run a server as a "nobody" user, even if e.g. the server is written in Go and so can't drop privileges in the traditional fashion.

Gemini Specification

protocol
gemini-text

Contents

Clients

Terminal

*

Amfora

(Go) - "fancy" terminal client.

*

Asuka

(Rust) - an NCurses-based Gemini client.

*

AV-98

(Python) - Gemini client derived from the popular VF-1 Gopher client.

*

bollux

(Bash) - bash Gemini client.

*

bombadillo

(Go) - combined Gopher, Gemini, Finger, and File client with vim-inspired key mappings.

*

cgmnlm

(C) - colorful gemini line-mode client, fork of gmni.

*

diohsc

(Haskell) - simple line-based command-response terminal user interface with ANSI colour.

*

Elpher

(Emacs) - combined Gopher and Gemini client for the popular text editor / operating system.

*

gem.awk

(Awk) - minimal but usable interactive Gemini client in < 250 LOC of Awk.

*

gembro

(Go) - gemini client using

Bubble Tea

.

*

gemini-demo-1

(Python) - minimal but usable interactive Gemini client in < 100 LOC of Python 3.

*

gemini-demo-2

(Lua) - minimal but usable interactive Gemini client in < 100 LOC of Lua.

*

gemini-demo-3

(Go) - minimal but usable interactive Gemini client in not quite < 100 LOC of Go.

*

gemini-fetch

(Node.js) - cURL-like CLI for loading content from Gemini URLs.

*

gmni

(C) - CLI utility (like curl) and line-mode browser.

*

Gremlin

(Rust) - TUI for browsing Gemini space

*

min

(Go) - supports advanced features like input and client certificate generation.

*

ncgopher

(Rust) - gopher and gemini client for the modern internet.

*

tinmop

(Common Lisp) - opinionated Mastodon and Gemini client

Graphical

# Cross-platform

*

Agregore

- (Electron.js) - peer to peer web browser with support for loading Gemini pages.

*

Alrisha

(QML) - QML-based Gemini client.

*

Castor

(Rust) - graphical Gemini client using GTK.

*

Fafi

(Racket) - graphical Gemini browser written in Racket.

*

Fossil

(Vala) - GTK3 Gemini browser written in Vala for desktop and mobile.

*

Lagrange

(C) - desktop GUI client with inline image viewing, multiple tabs, bookmarks and more.

*

Moonlander

(Rust) - the fanciest Gemini client in the entire solar system.

*

Kristall

(C++) - graphical Gopher and Gemini client using QT.

*

spacewar

(Electron.js) - Gemini browser running on Electron.

# Mobile

*

Ariane

(Kotlin/Java) - Gemini protocol client for Android based OS.

*

Deedum

(Dart) - an Android and iOS client made with Flutter.

*

Elaho

(Swift) - full featured Gemini protocol browser for iOS.

*

Gem

(Python) - Gemini client for Ubuntu Touch.

*

Xenia

(Java) - Gemini proxy for Android.

*

Phaedra

(Java) - Gemini client for Android supporting even very old ones; author recommends using Ariana if a current Android is at hand.

# Windows

*

GemiNaut

(C#) - user friendly graphical Gemini client for MS Windows.

Programming

*

gemclient

(Nim) - rich client library for the Gemini Protocol.

*

derhuerst/gemini

(Node.js) - server & client lib.

*

a-h/gemini

(Go) - Applications and libraries for building applications on Gemini.

*

cuipod

(C#) - Simple yet flexible framework for Gemini protocol server.

*

go-gemini

(Go) - library that provides an easy interface to create client and servers.

*

go-gemini

(Go) - more recent fork of the library above.

*

gig

(Go) - Gemini framework.

*

ignition

(Python) - Gemini client transport/request library for python3.

*

Agunua

(Python) - Gemini library to write clients. Includes IRI support, gemtext parsing and CLI tool.

*

kaksik

(Deno/TypeScript) - middleware library for building server applications.

*

ruby-net-text

(Ruby) - Gemini support in Net::* and URI::* stack.

*

warmuuh/jemini

(Java) - reactive gemini-client, part of jemini-project

Related Specifications

*

GemPub Specification

- Gempub, the Gemini e-book (and capsule archive) container specification.

Resources

*

Gemini Specification

- the Gemini protocol specification.

*

gemini.circumlunar.space/software

- list of Gemini software.

*

transjovian.org/gemini

- wiki space dedicated to Gemini communities and software.

Servers

*

Agate

(Rust) - simple Gemini server for static files.

*

Apogee

(Kotlin) - Gemini server written in Kotlin for the JVM.

*

a-h/gemini

(Go) - Server for Linux, Mac, Raspberry Pi. Supports SNI for multiple domains on the same server, has Docker image.

*

blizanci

(Erlang) - server designed primarily for robustness and security.

*

Denoscuri

(Typescript) - simple Gemini server written using Deno and Typescript.

*

Dʒɛmɪni

(Racket) - server with features like SNI and CGI.

*

Diamant

(Ruby) - simple Gemini server for static files.

*

Doppio

(Java) - single-JAR Gemini server with CGI, authentication, and Atom feed support.

*

Duckling proxy 🦆

(Go) - scheme-specific filtering proxy for Gemini clients to access the web.

*

Earl Server

(Kotlin) - Gemini fileserver for the JVM.

*

Ergol

(PHP) - light Gemini server able to host several capsules with different cerificates.

*

GeGoBi

(Python) - server to facilitate easy Gemini-Gopher bi-hosting.

*

Gemeaux

(Python) - server using only the Python standard library.

*

gemini-ipfs-gateway

(Go) - an IPFS Gateway that makes IPFS content available over the Gemini protocol.

*

gemini-server

(Haskell) - lightweight server for the Gemini protocol.

*

geminid

(C) - Gemini Server in C.

*

geminid

(Scheme) - Gemini Server in CHICKEN Scheme.

*

gemini-php

(PHP) - simple Gemini server in PHP.

*

JAGS-php

(PHP) - fork of gemini-php with support of dynamic pages.

*

geminim

(Nim) - an async lightweight Gemini server made in Nim.

*

gmid

(C) - simple and secure Gemini server.

*

gmnisrv

(C) - high-performance Gemini server for POSIX systems.

*

Gemserv

(Rust) - server with features like vhosts, CGI, SCGI, reverse-proxying and more.

*

Germinal

(Common Lisp) - serves any type of document with an appropriate mime type.

*

GLV-1.12556

(Lua) - the first Gemini protocol server with a lot of features.

*

Hydepark

(Rust) - discussion forum application for Gemini.

*

Jetforce

(Python) - built-in static file server with support for gemini directories and CGI scripts.

*

warmuuh/jemini

(Java) - dual gemini/http server on top of jetty with spring-boot integration

*

Lupa Pona

(Perl) - simple single directory Gemini server.

*

Marami

(Prolog) - server written in Prolog.

*

Molly Brown

(Go) - full-featured Gemini server implemented in Go.

*

MoonGem

(C) - gemini server with inline Lua scripting for dynamic content generation.

*

net-gemini

(Go) - gemini server inspired by Molly Brown.

*

northstar

(Rust) - gemini server implementation.

*

Orbit

(PHP) - Gemini server implemented in PHP.

*

Phoebe

(Perl) - Gemini/web wiki.

*

pollux

(Rust) - simple server that will only serve one `index.gemini` file.

*

rc-gemd

(Shell) - simple Gemini server written in rc (for plan9 operating systems).

*

Satellite

(Go) - small Gemini server for serving static files.

*

Shavit

(Go) - configurable Gemini server for UNIX operating systems.

*

Space-Age

(Clojure) - Gemini server written in Clojure.

*

Taurus

(Rust) - A Concurrent Gemini Server.

*

Titan

(Rust) - simple TOML-configured Gemini server and an Express-like Gemini server framework.

*

twins

(Go) - YAML-configured Gemini server supporting vhosts, FastCGI and reverse-proxying.

*

vger

(C) - Gemini server written in C used with inetd.

Services

https version

) - host small Gemini web pages over https and Gemini (

repo

).

repo

).

repo

).

repo

).

repo

).

*

gemlog.blue

- Gemini hosting from a web frontend.

Tools

*

CAPCOM

(Python) - Atom feed aggregator for gemini.

*

certified

(Python) - Generate TOFU TLS certificates for gemini servers.

*

cl-yag

(Common-Lisp) - Static site generator producing gemini, gopher and html.

*

comitium

(C) - A feed aggregator for gemini supporting many formats and protocols.

*

gemini-pandoc-lua-filter

(Lua) - lua filter for pandoc to output Gemini text.

*

gemini-to-html

(Node.js) - JavaScript library for parsing Gemini pages, and for rendering them to HTML.

*

geminize

- Firefox addon that redirects gemini:// URLs and links to a customizable HTTP-to-Gemini proxy.

*

gemlog.sh

(Bash) - Utility for writing and managing gemini logs (gemlogs) and atom feeds (simple gemini static site generator/framework).

*

gem.git

(Python) - git frontend CGI script.

*

gemini_http

(Go) - simple tool for viewing gemini files that are placed on a http server.

*

gemmit

(Go) - social news aggregation and web content rating website for the gemini protocol.

*

gemtexter

(Bash) - Site generator and blog engine for Gemini. Generates Atom and Gemfeeds , and also does Gemtext to HTML and Markdown conversion.

*

gloggery

(Go) - basic static site generator for blogs in Gemini.

*

gmitohtml

(Go) - proxy that renders Gemini pages using HTML.

*

gmi2html

(Zig) - tiny gemtext to HTML converter with a focus on performance.

*

gmi2html

(Sed) - sed script to convert text/gemini to html.

*

gmi-web

(JS) - generate *semantic* HTML styled for readability and mobile-friendliness.

*

gmnhg

(Go) - renders a Hugo site to a Gemini site.

*

gssg

(Go) - simple gemini static site generator. Generates pages, index and atom feeds.

*

Html2GeminiPy

(Python) - Converts Html sites to Gemini sites using markdownify and md2gemini.

*

kiln

(Go) - simple static site generator for Gemini sites.

*

Lupa

- crawler to explore the geminispace and make statistics (you can see them at __gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi ).

*

Manisha

- Nagios (and compatible, such as Icinga) plugin to monitor Gemini servers.

*

md2gmn

(Go) - renders Markdown text to Gemini pages.

*

md2gemini

(Python) - converter from Markdown to the Gemini text format.

*

spacewalk

(Go) - Page-hash based feed aggregator for gemini.

*

MastoGem

(Go) - Mastodon proxy for Gemini.

*

Hugo-2-Gopher-and-Gemini

(Python) - A Hugo theme to convert a Hugo site to Gemini or Gopher.

*

Gopher-and-Gemini-Walker

(Python) - Terminal client (without network connectivity) to navigate a folder structure containing a Gemini capsule or Gopher hole.

Syntax Highlighting

*

gemini-vim-syntax

- text/gemini syntax highlighting for vim.

*

gemini.el

- text/gemini syntax highlighting for emacs.

*

gemini.kak

- text/gemini syntax highlighting for kakoune.

*

gemini.nanorc

- text/gemini syntax highlighting for nano.

*

gemini.sublime-syntax

- text/gemini syntax highlighting for bat (and maybe Sublime Text).

*

gemini.yml

- text/gemini syntax highlighting for micro.

Web proxies

*

Mozz.us portal

*

Soweli Lukin

*

Vulpes proxy

*

koyu.space GemProxy

Bots

*

Fortune Teller Bot

- Generates a fortune gmi file, gemlog/index.gmi, and atom.xml every time the bot is executed

--------------------------------------------------------------------------------