You are here

About GNUnet

GNUnet is an alternative network stack for building secure, decentralized and privacy-preserving distributed applications. Our goal is to replace the old insecure Internet protocol stack. Starting from an application for secure publication of files, it has grown to include all kinds of basic protocol components and applications towards the creation of a GNU internet.

GNUnet is an official GNU package. GNUnet can be downloaded from GNU (ftp) and the GNU mirrors (ftp).

Read more Friday, February 19, 2010 - 22:34 Christian Grothoff

GSoC 2018 - GNUnet Web-based User Interface

What was done?
In the context of Google Summer of Code 2018, my mentor (Martin Schanzenbach) and I have worked on creating and extending the REST API of GNUnet. Currently, we mirrored the functionality of following commands:


Additionally, we developed a website with the Javascript framework Angular 6 and the design framework iotaCSS to use the new REST API. The REST API of GNUnet is now documented with Sphinx.

Why did we create a REST API?
... when you can use the command line tools?
We need to keep in mind, that everyone has the right to stay secure and private but not everyone feels comfortable using a terminal. The further developed REST access to GNUnet APIs in addition to the new web application allows new users to interact with GNUnet over a well known tool: their browsers. This addition to the C API and the command line tools may attract new users and developers.

How can we use it?
1. The REST API developed in GNUnet
The REST API is already merged into the gnunet.git repository (GNUnet Main Git).
To use the new features, clone the repository and follow the Installation on Then, start the rest service with "gnunet-arm -i rest".

2. The Web Application
The web application is available under the gnunet-webui.git repository (GNUnet WebUI Git).
You need to install the newest version of 'node' and 'yarn'. Dependent on your system, you may need to download newer versions and install them manually and not over your packet manager. After the installation succeeded, you need to clone the repository. Then, you need to run "yarn install" and "yarn start" for testing purposes. To deploy the website (keep in mind, that this website communicates with another localhost instance) use "yarn build" for building the web application and use the output in the 'dist' directory.

3. The Documentation
The documentation is available under the gnunet-rest-api.git repository (GNUnet REST API Docmentation Git).
Clone the repository and "make html". Then open the 'index.html' under 'build/html/'.

Please, give it a try and contact me, if you find any bugs or unintentional features. ;)

What can be improved?
Right now, the build process of the web application may be a little too complex for a casual user. We may be able to solve this by using docker.
Additionally, the web application does not prevent wrong inputs but responds with error messages. Adding GNUnet Records is currently only usable for people, who know how a GNS Record looks like. This can be adapted to each record type.
Last but not least, additional features, design changes, etc...

Thanks for reading.

Read more Tuesday, August 14, 2018 - 07:55 Phil Buschmann

irc bot status

As of 2018-08-09 in the early morning, we are having problems with our current IRC bot.
update 2018-08-13: I have started working on a replacement - the drupal bot is not coming back.
We have plans to migrate to a new bot as soon as possible, but hope to restore functionality to the existing one soon enough.

This post will be updated as soon as the bot is back online. The logs themselves are not affected.

We apologize for any inconvenience.

Read more Saturday, August 11, 2018 - 17:30 ng0

GNUnet 0.11.0pre66

We are pleased to announce the release of GNUnet 0.11.0pre66.

This is a pre-release to assist developers and downstream packagers to test the
package before the final release after four years of development.

In terms of usability, users should be aware that there are still a very
large number of known open issues in particular with respect to ease of
use, but also some critical privacy issues especially for mobile users.
Also, the nascent network is tiny (~200 peers) and thus unlikely to
provide good anonymity or extensive amounts of interesting information.
As a result, the 0.11.0 release and especially this pre-release are only
suitable for early adopters with some reasonable pain tolerance.

License change

GNUnet 0.11.0pre66 is the first release that will be made under the
GNU Affero General Public License v3+. After a significant amount of
internal discussion lead constructively by Lynx (thanks!), the
conclusion has been that the IPC and REST APIs should be extended with
support for an GNUNET_MESSAGE_TYPE_AGPL or /agpl request that enables
users of these client/service-style APIs to download the source code.

Naturally, the discussion on licensing may not necessarily end here, but
at this point we are not aware of any dissent in the community and this
release seems to be the right time to make such a change. While the
final decision was not subjected to a broad feedback round, this was
done simply on the grounds that this placement of the AGPL API seems to
addresses all concerns that were raised. Finally, thanks to the
copyright assignment all developers are participating in, the community
will be able to revise this decision later if necessary.

It should also be noted that this change does not impose additional
restrictions on the licensing models of GNU Taler or pEp: both projects
have agreements with GNUnet e.V. that ensure that they can make
decisions that fit these applications (not to mention significant parts
of GNU Taler are already AGPLv3+ already).

About GNUnet

GNUnet is a framework for secure peer-to-peer networking. GNUnet's
primary design goals are to protect the privacy of its users and to
guard itself against attacks or abuse. At this point, GNUnet offers four
primary applications on top of the framework:

The file-sharing service allows anonymous censorship-resistant
file-sharing. Files, searches and search results are encrypted to make
it hard to control, track or censor users. GNUnet's anonymity protocol
(gap) is designed to make it difficult to link users to their
file-sharing activities. Users can also individually trade-off between
performance and anonymity. Despite providing anonymity, GNUnet's
excess-based economy rewards contributing users with better performance.

The VPN service allows offering of services within GNUnet (using the
.gnu TLD) and can be used to tunnel IPv4 and IPv6 traffic over the P2P
network. The VPN can also be used for IP protocol translation (6-to-4,
4-to-6) and it is possible to tunnel IP traffic over GNUnet (6-over-4,
4-over-6). Note that at this stage, it is possible for peers to
determine the IP address at which services are hosted, so the VPN does
not offer anonymity.

The GNU Name System (GNS) provides a fully-decentralized and censorship
resistant replacement for DNS. GNS can be used alongside DNS and can be
integrated with legacy applications (such as traditional browsers) with
moderate effort. GNS provides censorship-resistance, memorable names and
cryptographic integrity protection for the records. Note that at this
stage, it is possible for a strong adversary to determine which peer is
responsible for a particular zone, GNS does not offer strong anonymity.
However, GNS offers query privacy, that is other participants can
typically not decrypt queries or replies.

Conversation allows voice calls to be made over GNUnet. Users are
identified using GNS and voice data is encrypted. However, Conversation
does not provide anonymity at this stage --- other peers may observe a
connection between the two endpoints and it is possible to determine the
IP address associated with a phone.

Other applications, including in particular the SecuShare social
networking application, are still strictly experimental.

For developers, GNUnet offers:

  • Access to all subsystems via clean C APIs
  • Mostly written in C, but extensions possible in other languages
  • Multi-process architecture for fault-isolation between components
  • Use of event loop and processes instead of threads for ease of
  • Extensive logging and statistics facilities
  • Integrated testing library for automatic deployment of large-scale
    experiments with tens of thousands of peers

Noteworthy improvements in 0.11.0pre66

Improved documentation, converting Drupal handbook
to Texinfo (thanks ng0!)
GNU Name System now can take over arbitrary TLDs, and
support for conversion from DNS zones to GNS exists
Critical bugfixes in CORE, DHT and CADET subsystems

The above is just the short list, our bugtracker lists over 350
individual issues that were resolved

Known Issues

We have a few issues that are most likely not resolved in the final
release. Users should be aware of these issues, which we hope to address

  • There are known major design issues in TRANSPORT, ATS and CORE
    which will need to be addressed for usability, performance
    and security.
  • There are known moderate implementation limitations in CADET that
    impact performance.
  • There are known moderate design issues in FS that also impact
    usability and performance.
  • There are minor implementation limitations in SET that create
    unnecessary attack surface for availability.
  • The Web site and manuals still need significant rework.
    Subsystems related to SecuShare and RPS remain experimental.

In addition to this list, you may also want to consult our bug tracker
at which lists about 200 more specific issues.


The GNUnet 0.11.0pre66 source code is available from all GNU FTP
mirrors. The GTK frontends (which includes the gnunet-setup tool) are a
separate download. Please note that some mirrors might still be

GNUnet on a FTP mirror near you
GNUnet GTK on an FTP mirror near you
GNUnet FUSE on an FTP mirror near you
GNUnet on the primary GNU FTP server
GNUnet GTK on the primary GNU FTP server
GNUnet FUSE on the primary GNU FTP server

Note that GNUnet is now started using "gnunet-arm -s". GNUnet should be
stopped using "gnunet-arm -e".


This release was the work of many people. The following people
contributed code and were thus easily identified:
Christian Grothoff, Matthias Wachs, Bart Polot, Sree Harsha Totakura,
Nathan S. Evans, Martin Schanzenbach, Julius Bünger, Nils Gillmann,
Philipp Tölke, Florian Dold, Руслан Ижбулатов, tg(x), David Barksdale,
Christian Fuchs, Nils Durner, Omar Tarabai, Maximilian Szengel, Supriti
Singh, lurchi, David Brodski, xrs, Fabian Oehlmann, Carlo von lynX,
Christophe Genevey Metat, Jeffrey Burdges, Safey A.Halim, Daniel Golle,
Phil, Bruno Cabral, Ji Lu, Heikki Lindholm, Markus Teich, t3sserakt,
Claudiu Olteanu, Marcello Stanisci, Moon, anryko, Arthur Dewarumez,
Julien Morvan, Adnan H, Lin Tong, Andreas Fuchs, Christian Rupp, jah,
Alejandra Morales, Matthias Kolja Miehl, Andrew Cann, Antonio Ojea,
Pascal Mainini, amirouche and hark.

Read more Wednesday, June 6, 2018 - 07:20 Christian Grothoff

gnURL 7.58.0

I'm no longer publishing release announcements on Read the full gnURL 7.58.0 release announcement on our developer mailinglist and on info-gnu once my email has passed the moderation.

Read more Saturday, January 27, 2018 - 15:48 ng0

gnURL 7.57.0 released

Today gnURL has been released in version 7.57.0, following the release of cURL 7.57.0.

The download is available in our directory on the GNU FTP and FTP mirrors (/gnu/gnunet/). 7.57.0 is the last version that will be available at, future releases will be on the FTP.
If you are a distro maintainer for gnURL make sure to read the whole post with details below.

The tarball of this version has been signed with the OpenPG Key A88C8ADD129828D7EAC02E52E22F9BBFEE348588

0663c0d7685fb82f0638f47521e6c06345884a73d88b9ddaa5db053ae2a67049d0fa839301a0ed0c632ae835825c74e0739201a22ec97315014d2c05894aa1f0 gnurl-7.57.0.tar.bz2
288d504b5324724c80f57d735bbb14fb1dba3e7644f41eef373dc9442f70feed9f2218211db9ec579edb4607be141775da68bba8296fc8cbbce0497b0348921f gnurl-7.57.0.tar.bz2.sig
027321cef1f02fc0a388053f8b96e8e2a5b812c8d6eb1f0c7f0e0dd7427fa30365f8a3f866ae58732429fdd9a4b293b4e5f28cbbb5765fbbf1cb16bc48620dc1 gnurl-7.57.0.tar.xz
5a82d4236e321104e499f4e30846d766e24e0765a1381363b7c4084919531e485e5fbd0efef68d6943f057e0b300d074ae935279c72e724a62fc8ee7730c3ffe gnurl-7.57.0.tar.xz.sig

NOTE to distro maintainers:

In the last version the number of socially enforced configure switches was reduced to a small fraction of what was previously required. Read the README contained within the tarball or in the git, it is worth looking into the changes to ensure you build a technically correct gnURL.

Please report any issues at our bugtracker or the bugs mailinglist (

Read more Wednesday, December 6, 2017 - 16:56 ng0

The GNUnet System

Read more Sunday, December 3, 2017 - 14:52 Christian Grothoff


Subscribe to Front page feed