Open-source project
PurpleI2P/i2pd avatar
PurpleI2P/i2pd

i2pd: A C++ I2P Router That Trades Java's Weight for Speed

I2P: End-to-End encrypted and anonymous Internet. I2P allows people from all around the world to communicate and share information without restrictions.

4,201 stars512 forksC++BSD-3-Clause

At a glance

What is it?
i2pd is a full-featured C++ implementation of the I2P anonymous network layer. It targets users who want I2P's privacy properties without the Java runtime overhead of the reference client.
Who is it for?
Adopt i2pd if you need I2P functionality on a resource-constrained device, a server, or an embedded platform, and you prefer a single C++ binary over the Java-based reference client. Skip it if you require the official I2P router's GUI, its full set of integrated applications, or if you rely on the Java ecosystem for extensions.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What i2pd Actually Is

The repository is the PurpleI2P project, and the default branch is named openssl, which hints at the crypto backend. The license is BSD-3-Clause, a permissive license that allows reuse with attribution. The project is not archived, and the latest release, 2.61.0, was pushed in July 2026, so it is actively maintained. The README also points to separate repositories for Android and Qt GUI versions, meaning i2pd itself is a headless daemon. If you want a graphical interface, you have to look elsewhere.

The Mechanism: Tunnels, Encryption, and the Network Layer

The README does not go deep into the protocol, but it states that all communications over I2P are anonymous and end-to-end encrypted. The core mechanism is the I2P network layer, which is a distributed anonymous networking framework. In practice, i2pd builds encrypted tunnels through a series of peers, so that the origin and destination do not learn each other's IP addresses. The project links to the I2P specifications at geti2p.net, which is where the detailed tunnel and garlic routing logic lives. What i2pd does is implement those specifications in C++, rather than in Java like the reference client. The end-to-end encryption is a fundamental property: even if an intermediary node is compromised, it cannot read the content of the traffic. This is not a VPN or a proxy; it is a separate network layer that applications must be configured to use, typically through SOCKS or by running I2P-aware services.

Getting It Running: Packages and Build Paths

The README points to the release page for precompiled binaries and packages. It also lists supported systems: GNU/Linux distributions like Debian and Ubuntu, CentOS, Fedora, Mageia, Alpine, ArchLinux, openSUSE, Gentoo, Windows, macOS, FreeBSD, Android, and iOS. There is also a Docker image and a Snap package. The easiest installation path is to grab a package from the release page or use your distribution's package manager, since the README links to Repology for version tracking. For building from source, the documentation at i2pd.readthedocs.io has separate instructions for Unix, Windows, iOS, and Android. The README also mentions an example config file at contrib/i2pd.conf, which is the canonical place to see configuration keys. The build process for C++ typically requires a compiler and the OpenSSL library, given the branch name, but the exact dependencies are in the documentation. If you are on a system not listed, you will need to read the build docs carefully.

A Real Limitation: It Is a Daemon, Not a Full Client

The most obvious limitation is that i2pd is a daemon. There is no GUI in this repository. The README explicitly points to separate projects for Android (i2pd-android) and Qt GUI (i2pd-qt), and a third-party GUI for macOS. That means a non-technical user cannot just install i2pd and click around. Configuration is done through a config file, likely the example at contrib/i2pd.conf, and interaction is via command line or network interfaces. This is the wrong tool if you want a turnkey anonymous browsing experience with a graphical dashboard. It is also not a full I2P router with all the integrated applications that the Java client might offer; the README only mentions the client functionality. For a user who wants to run an I2P eepsite or a file-sharing app, i2pd can do it, but they will need to bring their own application and configure it to use the daemon.

The Alternative: The Java-Based I2P Router

The main alternative to i2pd is the reference I2P implementation, which is written in Java. The README does not name it directly, but it links to the I2P specifications and the geti2p.net site, which is the home of the Java router. The difference in approach is fundamental: Java runs on a virtual machine, which adds memory overhead and startup time, while i2pd is a native C++ binary that compiles to machine code. The README's claim of small footprint and fast performance is a direct contrast to the Java client's heavier resource usage. The Java client typically offers a full-featured router console with a web UI, integrated torrenting, and a plugin system. i2pd trades those extras for a leaner core. If you need the official client's ecosystem, you should use Java. If you run on a Raspberry Pi or a VPS with limited RAM, i2pd is likely the better fit. The choice is not about which is more anonymous; it is about resource usage and feature scope.

Maintenance, License, and Upgrade Path

The project is under active development, with three releases in the last six months: 2.59.0 in February 2026, 2.60.0 in April 2026, and 2.61.0 in July 2026. That cadence suggests regular updates and security fixes. The license is BSD-3-Clause, which is permissive: you can use, modify, and redistribute the code with attribution, and there is no copyleft requirement. This makes it safe to embed in proprietary software, but you should read the LICENSE file yourself for exact terms. The upgrade path is straightforward: because it is a daemon, you replace the binary or package. The README also notes a no LLM/AI policy for contributions, which is unusual and worth knowing if you plan to submit code or issues. The project's documentation is hosted separately, and the wiki and issue tracker are on GitHub. Before adopting, check the documentation for any breaking changes between releases, since the README does not provide a changelog.

Editorial conclusion

Adopt i2pd if you need I2P functionality on a resource-constrained device, a server, or an embedded platform, and you prefer a single C++ binary over the Java-based reference client. Skip it if you require the official I2P router's GUI, its full set of integrated applications, or if you rely on the Java ecosystem for extensions. Before deploying, verify the current version's build instructions for your OS, check the example config at contrib/i2pd.conf for the settings you need, and confirm that the I2P network's current behavior matches your threat model, since the project's documentation and release notes are the only authoritative source for its capabilities.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes