-- Leo's gemini proxy

-- Connecting to warmedal.se:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

Gemini Server-to-Server Interactions (Jessie)


I've been pondering a general-purpose API that one could build on to allow servers to interact via the gemini protocol. The following is something I wrote up a few days ago. It lays out the basic thoughts, and I'd like it to serve as a starting point for discussions. Tell me what you think, in email, on irc.tilde.chat or on your own gemlog (let me know where that is if it's not tracked by CAPCOM):


mailto:ew0k@tilde.team


Jessie, speculative spec


This specification lays out a method for servers to send and receive data from each other using the Gemini protocol, as well as discovering compatible message types to use.


Server-to-Server Communication


A server that implements any sort of Jessie types MUST have and endpoint called /inbox that accepts a query string.


When server A wants to send a message to server B the flow looks like this:


A forms a message to send, and places it publicly available at a path A/<path>.

A calls B/inbox?A/<path>.

B GETs A/<path>.

B handles the message as per the message type.


Any server that implements Jessie MUST have a file called /jessie-types.gmi which MUST contain the message types that the server can handle. These are written one per line, with nothing else on the line. The document MAY also contain blank lines and headings, to improve human readability.


An example jessie-types.gmi could look as follows:


# Basic Messaging

type: base.message v1
type: base.subscribe v1

# Social Interactions

type: social.mention v2
type: social.follow v1

This document allows server A from our example above to discover whether it and server B can communicate in the manner intended.


-- CC0 ew0k, 2020-11-02

-- Response ended

-- Page fetched on Sat May 4 05:51:48 2024