2020-08-21 04:07:37 -04:00
# Awesome Gemini [![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re)
2020-08-21 03:54:14 -04:00
A collection of awesome things regarding the [gemini protocol][1] ecosystem.
Please contribute to this list to link to all the awesome gemini projects out there.
2021-02-01 03:21:13 -05:00
Repo mirrors:
* https://git.sr.ht/~kr1sp1n/awesome-gemini
* https://github.com/kr1sp1n/awesome-gemini/
2020-08-22 14:20:56 -04:00
## What is Gemini
[Excerpt from gemini.circumlunar.space ](https://gemini.circumlunar.space/docs/specification.html ):
> Gemini is a client-server protocol featuring request-response transactions, broadly similar to gopher or HTTP.
2020-11-20 02:40:25 -05:00
Connections are closed at the end of a single transaction and cannot be reused. When Gemini is served over TCP/IP, servers
2020-08-22 14:20:56 -04:00
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.
2021-03-01 03:40:33 -05:00
## Gemini Specification
- [protocol ](https://gitlab.com/gemini-specification/protocol )
- [gemini-text ](https://gitlab.com/gemini-specification/gemini-text )
2020-08-21 03:54:14 -04:00
## Contents
- [Clients ](#clients )
- [Terminal ](#terminal )
- [Graphical ](#graphical )
2020-08-28 02:37:01 -04:00
- [Cross-platform ](#cross-platform )
- [Mobile ](#mobile )
- [Windows ](#windows )
2020-08-21 03:54:14 -04:00
- [Programming ](#programming )
2020-08-22 14:20:56 -04:00
- [Resources ](#resources )
2020-08-21 03:54:14 -04:00
- [Servers ](#servers )
2020-11-27 03:43:06 -05:00
- [Services ](#services )
2020-08-21 03:54:14 -04:00
- [Tools ](#tools )
- [Web proxies ](#web-proxies )
## Clients
### Terminal
2021-03-23 05:12:22 -04:00
- [Amfora ](https://github.com/makeworld-the-better-one/amfora ) (Go) - "fancy" terminal client.
2020-11-06 16:26:25 -05:00
- [Asuka ](https://git.sr.ht/~julienxx/asuka ) (Rust) - an NCurses-based Gemini client.
2021-03-23 05:12:22 -04:00
- [AV-98 ](https://tildegit.org/solderpunk/AV-98 ) (Python) - Gemini client derived from the popular VF-1 Gopher client.
- [bollux ](https://sr.ht/~acdw/bollux/ ) (Bash) - bash Gemini client.
- [bombadillo ](https://rawtext.club/~sloum/bombadillo.html ) (Go) - combined Gopher, Gemini, Finger, and File client with vim-inspired key mappings.
- [cgmnlm ](https://src.clttr.info/rwa/cgmnlm ) (C) - colorful gemini line-mode client, fork of gmni.
- [diohsc ](https://mbays.sdf.org/diohsc/ ) (Haskell) - simple line-based command-response terminal user interface with ANSI colour.
- [Elpher ](https://thelambdalab.xyz/elpher/ ) (Emacs) - combined Gopher and Gemini client for the popular text editor / operating system.
- [gem.awk ](git://git.vgx.fr/gem.awk ) (Awk) - minimal but usable interactive Gemini client in < 250 LOC of Awk .
- [gemini-demo-1 ](https://tildegit.org/solderpunk/gemini-demo-1 ) (Python) - minimal but usable interactive Gemini client in < 100 LOC of Python 3 .
- [gemini-demo-2 ](https://tildegit.org/solderpunk/gemini-demo-2 ) (Lua) - minimal but usable interactive Gemini client in < 100 LOC of Lua .
- [gemini-demo-3 ](https://tildegit.org/solderpunk/gemini-demo-3 ) (Go) - minimal but usable interactive Gemini client in not quite < 100 LOC of Go .
- [gemini-fetch ](https://github.com/RangerMauve/gemini-fetch ) (Node.js) - cURL-like CLI for loading content from Gemini URLs.
- [gmni ](https://sr.ht/~sircmpwn/gmni/ ) (C) - CLI utility (like curl) and line-mode browser.
2020-09-19 05:18:33 -04:00
- [min ](https://github.com/a-h/min ) (Go) - supports advanced features like input and client certificate generation.
2021-03-23 05:12:22 -04:00
- [ncgopher ](https://github.com/jansc/ncgopher ) (Rust) - gopher and gemini client for the modern internet.
2020-08-21 03:54:14 -04:00
### Graphical
2020-08-27 16:08:37 -04:00
#### Cross-platform
2021-03-23 05:12:22 -04:00
- [Agregore ](https://github.com/RangerMauve/agregore-browser#fetch-api-for-gemini ) - (Electron.js) - peer to peer web browser with support for loading Gemini pages.
2020-08-25 16:22:04 -04:00
- [Alrisha ](https://git.sr.ht/~fabrixxm/alrisha ) (QML) - QML-based Gemini client.
2021-03-23 05:12:22 -04:00
- [Castor ](https://git.sr.ht/~julienxx/castor ) (Rust) - graphical Gemini client using GTK.
- [Fafi ](https://git.sr.ht/~soapdog/fafi-browser ) (Racket) - graphical Gemini browser written in Racket.
- [Lagrange ](https://git.skyjake.fi/skyjake/lagrange ) (C) - desktop GUI client with inline image viewing, multiple tabs, bookmarks and more.
2020-08-25 16:22:04 -04:00
- [Moonlander ](https://sr.ht/~admicos/moonlander/ ) (Rust) - the fanciest Gemini client in the entire solar system.
2021-03-23 05:12:22 -04:00
- [Kristall ](https://github.com/MasterQ32/kristall ) (C++) - graphical Gopher and Gemini client using QT.
- [spacewar ](https://github.com/ResonAtom/spacewar ) (Electron.js) - Gemini browser running on Electron.
2020-08-27 16:08:37 -04:00
#### Mobile
2021-03-23 05:12:22 -04:00
- [Ariane ](https://oppen.digital/software/ariane/ ) (Kotlin/Java) - Gemini protocol client for Android based OS.
2020-08-27 16:08:37 -04:00
- [Deedum ](https://github.com/snoe/deedum ) (Dart) - an Android and iOS client made with Flutter.
2021-03-23 05:12:22 -04:00
- [Elaho ](https://github.com/pitr/gemini-ios ) (Swift) - full featured Gemini protocol browser for iOS.
- [Gem ](https://open-store.io/app/gem.aaron ) (Python) - Gemini client for Ubuntu Touch.
- [Xenia ](https://gitlab.com/tslocum/xenia ) (Java) - Gemini proxy for Android.
2021-02-07 14:44:07 -05:00
- [Phaedra ](https://oppen.digital/software/phaedra/ ) (Java) - Gemini client for Android supporting even very old ones; author recommends using Ariana if a current Android is at hand.
2020-08-21 03:54:14 -04:00
2020-08-27 16:08:37 -04:00
#### Windows
2021-03-23 05:12:22 -04:00
- [GemiNaut ](https://www.marmaladefoo.com/pages/geminaut ) (C#) - user friendly graphical Gemini client for MS Windows.
2020-08-27 16:08:37 -04:00
2020-08-21 03:54:14 -04:00
## Programming
2021-03-23 05:12:22 -04:00
- [gemclient ](https://github.com/Koshroy/gemclient ) (Nim) - rich client library for the Gemini Protocol.
- [derhuerst/gemini ](https://github.com/derhuerst/gemini ) (Node.js) - server & client lib.
2020-11-02 03:08:57 -05:00
- [a-h/gemini ](https://github.com/a-h/gemini ) (Go) - Applications and libraries for building applications on Gemini.
2021-02-09 03:36:09 -05:00
- [cuipod ](https://github.com/aegis-dev/cuipod ) (C#) - Simple yet flexible framework for Gemini protocol server.
2021-03-23 05:12:22 -04:00
- [go-gemini ](https://git.sr.ht/~yotam/go-gemini ) (Go) - library that provides an easy interface to create client and servers.
- [go-gemini ](https://github.com/makeworld-the-better-one/go-gemini ) (Go) - more recent fork of the library above.
- [gig ](https://github.com/pitr/gig ) (Go) - Gemini framework.
- [ignition ](https://github.com/cbrews/ignition ) (Python) - Gemini client transport/request library for python3.
- [Agunua ](https://framagit.org/bortzmeyer/agunua ) (Python) - Gemini library to write clients. Includes IRI support, gemtext parsing and CLI tool.
2021-02-01 07:32:52 -05:00
- [kaksik ](https://github.com/sergetymo/kaksik ) (Deno/TypeScript) - middleware library for building server applications.
- [ruby-net-text ](https://git.umaneti.net/ruby-net-text/ ) (Ruby) - Gemini support in Net::* and URI::* stack.
2020-08-21 03:54:14 -04:00
2020-08-22 14:20:56 -04:00
## Resources
2020-08-25 16:22:04 -04:00
- [Gemini Specification ](https://gemini.circumlunar.space/docs/specification.html ) - the Gemini protocol specification.
2021-03-23 05:12:22 -04:00
- [gemini.circumlunar.space/software ](https://portal.mozz.us/gemini/gemini.circumlunar.space/software/ ) - list of Gemini software.
- [transjovian.org/gemini ](https://transjovian.org/gemini/ ) - wiki space dedicated to Gemini communities and software.
2020-08-22 14:20:56 -04:00
2020-08-21 03:54:14 -04:00
## Servers
2021-03-23 05:12:22 -04:00
- [Agate ](https://github.com/mbrubeck/agate ) (Rust) - simple Gemini server for static files.
2020-11-02 03:08:57 -05:00
- [a-h/gemini ](https://github.com/a-h/gemini ) (Go) - Server for Linux, Mac, Raspberry Pi. Supports SNI for multiple domains on the same server, has Docker image.
2021-03-23 05:12:22 -04:00
- [blizanci ](https://github.com/mk270/blizanci ) (Erlang) - server designed primarily for robustness and security.
- [Denoscuri ](https://github.com/caranatar/denoscuri ) (Typescript) - simple Gemini server written using Deno and Typescript.
- [Dʒɛmɪ ni ](https://sr.ht/~rwv/dezhemini/ ) (Racket) - server with features like SNI and CGI.
- [Diamant ](https://git.umaneti.net/diamant/ ) (Ruby) - simple Gemini server for static files.
- [Duckling proxy 🦆 ](https://portal.mozz.us/gemini/gemini.marmaladefoo.com/blog/31-Aug-2020_The_Duckling_Proxy.gmi ) (Go) - scheme-specific filtering proxy for Gemini clients to access the web.
- [Earl Server ](https://github.com/mrletourneau/EarlServer ) (Kotlin) - Gemini fileserver for the JVM.
- [Ergol ](http://adele.work/code/ergol/ergol.gmi ) (PHP) - light Gemini server able to host several capsules with different cerificates.
- [GeGoBi ](https://tildegit.org/solderpunk/gegobi ) (Python) - server to facilitate easy Gemini-Gopher bi-hosting.
- [Gemeaux ](https://github.com/brunobord/gemeaux ) (Python) - server using only the Python standard library.
2021-02-25 16:23:44 -05:00
- [gemini-ipfs-gateway ](https://git.sr.ht/~hsanjuan/gemini-ipfs-gateway ) (Go) - an IPFS Gateway that makes IPFS content available over the Gemini protocol.
2021-03-23 05:12:22 -04:00
- [gemini-server ](https://hackage.haskell.org/package/gemini-server ) (Haskell) - lightweight server for the Gemini protocol.
- [geminid ](https://github.com/jovoro/geminid/ ) (C) - Gemini Server in C.
- [geminid ](https://www.upyum.com/cgit.cgi/geminid ) (Scheme) - Gemini Server in CHICKEN Scheme.
- [gemini-php ](https://opensource.glasgow.social/gemini-php ) (PHP) - simple Gemini server in PHP.
2021-02-23 14:52:29 -05:00
- [JAGS-php ](https://github.com/codeandcreate/JAGS-PHP ) (PHP) - fork of gemini-php with support of dynamic pages.
2021-01-20 14:55:40 -05:00
- [geminim ](https://github.com/ardek66/geminim ) (Nim) - an async lightweight Gemini server made in Nim.
2021-03-23 05:12:22 -04:00
- [gmnisrv ](https://sr.ht/~sircmpwn/gmnisrv/ ) (C) - high-performance Gemini server for POSIX systems.
- [Gemserv ](https://portal.mozz.us/gemini/80h.dev/projects/gemserv/ ) (Rust) - server with features like vhosts, CGI, SCGI, reverse-proxying and more.
2020-08-25 16:22:04 -04:00
- [Germinal ](https://github.com/jfmcbrayer/germinal ) (Common Lisp) - serves any type of document with an appropriate mime type.
2020-12-07 13:40:06 -05:00
- [GLV-1.12556 ](https://github.com/spc476/GLV-1.12556 ) (Lua) - the first Gemini protocol server with a lot of features.
2021-03-23 05:12:22 -04:00
- [Hydepark ](https://github.com/spektom/hydepark ) (Rust) - discussion forum application for Gemini.
- [Jetforce ](https://github.com/michael-lazar/jetforce ) (Python) - built-in static file server with support for gemini directories and CGI scripts.
- [Lupa Pona ](https://github.com/kensanata/lupa-pona ) (Perl) - simple single directory Gemini server.
- [Marami ](https://github.com/MagnificentPako/Marami/ ) (Prolog) - server written in Prolog.
- [Molly Brown ](https://tildegit.org/solderpunk/molly-brown ) (Go) - full-featured Gemini server implemented in Go.
- [net-gemini ](https://github.com/jackdoe/net-gemini ) (Go) - gemini server inspired by Molly Brown.
- [northstar ](https://github.com/panicbit/northstar ) (Rust) - gemini server implementation.
- [Orbit ](https://tildegit.org/sumpygump/orbit ) (PHP) - Gemini server implemented in PHP.
- [Phoebe ](https://alexschroeder.ch/cgit/phoebe/about/ ) (Perl) - Gemini/web wiki.
- [pollux ](https://git.sr.ht/~julienxx/pollux ) (Rust) - simple server that will only serve one `index.gemini` file.
- [rc-gemd ](https://sr.ht/~moody/rc-gemd ) (Shell) - simple Gemini server written in rc (for plan9 operating systems).
- [Satellite ](https://sr.ht/~gsthnz/satellite/ ) (Go) - small Gemini server for serving static files.
- [Shavit ](https://git.sr.ht/~yotam/shavit ) (Go) - configurable Gemini server for UNIX operating systems.
- [Space-Age ](https://gitlab.com/lambdatronic/space-age ) (Clojure) - Gemini server written in Clojure.
2021-03-26 05:03:36 -04:00
- [Taurus ](https://git.sr.ht/~garritfra/taurus )(Rust) - A Concurrent Gemini Server.
2021-03-23 05:12:22 -04:00
- [Titan ](https://github.com/jahzielv/titan ) (Rust) - simple TOML-configured Gemini server and an Express-like Gemini server framework.
- [twins ](https://gitlab.com/tslocum/twins ) (Go) - YAML-configured Gemini server supporting vhosts, FastCGI and reverse-proxying.
- [vger ](https://tildegit.org/solene/vger ) (C) - Gemini server written in C used with inetd.
2020-08-21 03:54:14 -04:00
2020-11-27 03:43:06 -05:00
## Services
2021-02-01 09:30:30 -05:00
- __gemini://drewdevault.com/cgi-bin/man.sh__ - look up a POSIX man page.
2021-02-10 00:56:36 -05:00
- __gemini://flounder.online__ ([https version](https://flounder.online/)) - host small Gemini web pages over https and Gemini ([repo](https://github.com/alexwennerberg/flounder)).
2021-02-04 00:37:57 -05:00
- __gemini://geminispace.info__ - public search provider for Gemini ([repo](https://src.clttr.info/rwa/geminispace.info)).
2021-02-17 17:46:33 -05:00
- __gemini://geddit.glv.one__ - interactive link service (with comments).
2021-03-23 05:12:22 -04:00
- __gemini://glv.one__ - free platform as a service (PaaS) that runs any Gemini server (packaged as a Docker image) in the cloud.
2020-11-27 03:43:06 -05:00
- __gemini://gus.guru/__ - Gemini Universal Search ([repo](https://natpen.net/code/gus)).
2021-03-23 05:12:22 -04:00
- __gemini://tictactoe.lanterne.chilliet.eu__ - Tic Tac Toe game ([repo](https://framagit.org/MCMic/gemini-tictactoe)).
2020-11-27 03:43:06 -05:00
- __gemini://ur.gs/__ - translate from en->es and es->en ([repo](https://code.ur.gs/lupine/capsule/src/branch/main/src/cgi-bin/translate)).
2021-02-01 09:30:30 -05:00
- __gemini://rawtext.club/~sloum/geminews/__ - Daily news feeds proxied to gemini.
- __gemini://rawtext.club/~sloum/cgi/othello/__ - Play othello/reversi against a computer opponent over gemini.
- __gemini://rawtext.club/~sloum/cgi/weather__ - US weather reports by zip code.
2020-12-02 13:47:29 -05:00
- [gemlog.blue ](https://gemlog.blue ) - Gemini hosting from a web frontend.
2020-11-27 03:43:06 -05:00
2020-12-01 10:08:57 -05:00
2020-08-21 03:54:14 -04:00
## Tools
2021-02-11 06:39:05 -05:00
- [CAPCOM ](https://tildegit.org/solderpunk/CAPCOM ) (Python) - Atom feed aggregator for gemini.
2021-03-14 03:11:28 -04:00
- [cl-yag ](git://bitreich.org/cl-yag ) (Common-Lisp) - Static site generator producing gemini, gopher and html.
2021-03-23 05:12:22 -04:00
- [gemini-pandoc-lua-filter ](https://github.com/kr1sp1n/gemini-pandoc-lua-filter ) (Lua) - lua filter for pandoc to output Gemini text.
- [gemini-to-html ](https://github.com/RangerMauve/gemini-to-html ) (Node.js) - JavaScript library for parsing Gemini pages, and for rendering them to HTML.
- [geminize ](https://addons.mozilla.org/en-US/firefox/addon/geminize/ ) - Firefox addon that redirects gemini:// URLs and links to a customizable HTTP-to-Gemini proxy.
- [gemlog.sh ](https://git.nytpu.com/gemlog.sh/about/ ) (Bash) - Utility for writing and managing gemini logs (gemlogs) and atom feeds (simple gemini static site generator/framework).
2020-12-08 01:45:15 -05:00
- [gem.git ](https://git.sr.ht/~fkfd/git.gmi/ ) (Python) - git frontend CGI script.
2021-03-23 05:12:22 -04:00
- [gemini_http ](https://github.com/cyevgeniy/gemini_http ) (Go) - simple tool for viewing gemini files that are placed on a http server.
- [gemmit ](https://github.com/t-900-a/gemmit ) (Go) - social news aggregation and web content rating website for the gemini protocol.
2020-08-27 11:24:31 -04:00
- [gloggery ](https://github.com/kconner/gloggery ) (Go) - basic static site generator for blogs in Gemini.
2021-03-23 05:12:22 -04:00
- [gmitohtml ](https://gitlab.com/tslocum/gmitohtml ) (Go) - proxy that renders Gemini pages using HTML.
- [gmi2html ](https://github.com/shtanton/gmi2html ) (Zig) - tiny gemtext to HTML converter with a focus on performance.
- [gmi2html ](gemini://gemini.thegonz.net/gmi2html.sed ) (Sed) - sed script to convert text/gemini to html.
2021-02-01 09:59:38 -05:00
- [gmi-web ](https://codeberg.org/talon/gmi-web ) (JS) - generate _semantic_ HTML styled for readability and mobile-friendliness.
2020-11-30 07:15:55 -05:00
- [gmnhg ](https://git.tdem.in/tdemin/gmnhg ) (Go) - renders a Hugo site to a Gemini site.
2021-03-23 05:12:22 -04:00
- [gssg ](https://git.sr.ht/~gsthnz/gssg ) (Go) - simple gemini static site generator. Generates pages, index and atom feeds.
2021-02-21 14:22:19 -05:00
- [Html2GeminiPy ](https://github.com/Aarontheissueguy/Html2GeminiPy ) (Python) - Converts Html sites to Gemini sites using markdownify and md2gemini.
2021-03-23 05:12:22 -04:00
- [kiln ](https://git.sr.ht/~adnano/kiln ) (Go) - simple static site generator for Gemini sites.
- [Lupa ](https://framagit.org/bortzmeyer/lupa ) - crawler to explore the geminispace and make statistics (you can see them at __gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi ).
- [Manisha ](https://framagit.org/bortzmeyer/manisha ) - Nagios (and compatible, such as Icinga) plugin to monitor Gemini servers.
2020-11-30 07:15:55 -05:00
- [md2gmn ](https://git.tdem.in/tdemin/gmnhg ) (Go) - renders Markdown text to Gemini pages.
2021-02-05 19:08:51 -05:00
- [md2gemini ](https://github.com/makeworld-the-better-one/md2gemini ) (Python) - converter from Markdown to the Gemini text format.
2020-12-07 13:40:06 -05:00
- [spacewalk ](https://tildegit.org/sloum/spacewalk ) (Go) - Page-hash based feed aggregator for gemini.
2021-03-23 05:12:22 -04:00
- [MastoGem ](https://git.rdelaage.ovh/rdelaage/mastoGem ) (Go) - Mastodon proxy for Gemini.
2021-02-05 13:59:58 -05:00
2020-12-02 13:42:15 -05:00
### Syntax Highlighting
2020-12-07 13:40:06 -05:00
- [gemini-vim-syntax ](https://tildegit.org/sloum/gemini-vim-syntax ) - text/gemini syntax highlighting for vim.
- [gemini.el ](https://git.carcosa.net/jmcbray/gemini.el ) - text/gemini syntax highlighting for emacs.
- [gemini.kak ](https://github.com/kakoune-editor/kakoune-extra-filetypes/blob/master/rc/gemini.kak ) - text/gemini syntax highlighting for kakoune.
- [gemini.nanorc ](https://github.com/yzzyx-network/nanorc/blob/master/gemini.nanorc ) - text/gemini syntax highlighting for nano.
2021-02-18 00:21:23 -05:00
- [gemini.sublime-syntax ](https://github.com/adiabatic/gemini.sublime-syntax ) - text/gemini syntax highlighting for bat (and maybe Sublime Text).
2020-08-21 03:54:14 -04:00
## Web proxies
- [Mozz.us portal ](https://portal.mozz.us/gemini/gemini.circumlunar.space/ )
2020-09-07 01:55:19 -04:00
- [Soweli Lukin ](https://alexschroeder.ch/soweli-lukin )
2020-08-21 03:54:14 -04:00
- [Vulpes proxy ](https://proxy.vulpes.one/gemini/gemini.circumlunar.space/ )
---
[1]: https://gemini.circumlunar.space/