libpxd

libpxd (pollux-daemon) is a Gemini server library written in C. It contains a server implementation, polluxd, that exercises most (all?) of libpxd's capabilities in various forms.

If you want to run a Gemini server, check out:

Documentation for polluxd, the server implementation for libpxd

Features

polluxd (server implementation) features:

Library features:

libpxd is released under the 3-clause BSD license.

Perhaps unsurprisingly, this capsule is powered by libpxd.

Building

This project uses standard Makefiles. You need to either copy libpxd.so to a standard library location (e.g. /usr/lib) or set the LD_LIBRARY_PATH variable before running polluxd.

tar -xf libpxd-xxxx.tar.gz
cd libpxd-xxxx
make
LD_LIBRARY_PATH=$PWD/libpxd ./polluxd/polluxd -f /path/to/config/file

Documentation

Information about polluxd, the reference implementation.
polluxd.conf comprehensive example
How CGI works in libpxd/polluxd

polluxd is simple - it takes only 3 options:

-f  specifies the configuration file to use
-D causes polluxd to not daemonize
-V causes polluxd to print its version information and exit

Source code

A tildegit repo has been set up

libpxd tildegit repository
libpxd-c8886b2-20251001.tar.gz - updates the network code to be more streamlined, some cgi improvements, bugfixes
libpxd-616c0f2-20250917.tar.gz - bugfixes - make sure CGI sockets are nonblocking, and source reoorganization.
libpxd-c1b698b-20250908.tar.gz - improved gemini URL parsing (this is a testing release)
older versions