Software
skarnet.org

tipidee

What is it ?

tipidee is a web server. It supports HTTP 1.0 and 1.1. It aims to be compliant with RFC 9112: while it only implements a very limited subset of the optional functionality in HTTP 1.1, it implements all the mandatory parts. It is usable with both HTTP and HTTPS.

It runs under a super-server, e.g. inetd, s6-tcpserver, or s6-tlsserver (for HTTPS). Traditionally, inetd-mode web servers aren't considered performant, but tipidee aims to eke out every single drop of performance that is attainable with its programming model.



Why another Web server?

There are roughly two groups of web servers.

The first one is big, powerful servers such as nginx, Apache httpd, and so on. They focus on environments where simplicity isn't a concern and can be traded off for features, integration with larger ecosystems, or just serving speed. (lighttpd, for instance, was developed as a proof of concept for solving the c10k problem.)

The second one is small, quick-and-dirty servers, aimed at easily deploying basic HTTP service for serving static files for prototying or in resource constrained environments such as embedded devices. Among them, for instance, busybox httpd, bozohttpd, or various httpds from ACME Labs.

And, surprisingly, not much in between. There are a ton of supposedly "tiny" or "minimal" servers, written in languages whose naked runtime uses more resources than the whole skarnet.org ecosystem by two orders of magnitude; but there isn't one that focused on what I want from a web server, which is:

All in all, I felt that despite how crowded the web server space is, there wasn't a satisfactory offer for the needs of skarnet.org and similar sites that need an intermediary web server.

And why "tipidee"?

Because h-t-t-p-d is already pretty tedious to say out loud, and other web servers have a nasty habit of adding to it; but I'd rather make it shorter. Just like the code.

Installation

Requirements

Licensing

tipidee is free software. It is available under the ISC license.

Download

Compilation

Upgrade notes


Reference

Commands

Internal commands

Configuration format

Usage notes

Design notes

Related resources