Skip to content
David Moreno Montero edited this page Apr 27, 2014 · 16 revisions

onion is a lightweight library to help you create webservers in C programming language. These webservers may be a web application, a means of expanding your own application to give it web functionality or even a fully featured webserver.

The user can create new handlers that serve reading data from a file or creating them. However, there are many default handlers included to address the most frequently required needs.

The name onion comes from the idea that the path transversal is being done using many layers of handlers: on one layer you set the auth control, on another you check the server hostname (so that you could have virtual hosts) and on yet another a regular expression sends you across to one or another path... Check on examples for how to do it.


Full API is described at . On this wiki there are some recipes on how to use different parts of the API.

If you plan to learn on how to use onion, first scan through this wiki not centering on the details but on general ideas, then go through the examples and when information on specific functions/structures is needed go to the API documentation.

In depth articles


Current usage

onion is currently being used on ARM projects and comes with several quite usefull example programs.


onion is licensed under GPLv2 and Apache2 licenses. This allows to use it on any project. If you need consultant help for any project, please check at, as a commercial support is available.

Examples are under AGPL license.


There is a mailing list at

Also feel free to contact us at, or use the Issue tracker at github.

You can’t perform that action at this time.