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:


https://git.sr.ht/~kr1sp1n/awesome-gemini

https://github.com/kr1sp1n/awesome-gemini/


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



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


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



kr1sp1n.flounder.online/