Kovri is an alternative implementation in C++ of the I2P protocol which original daemon i2p is written in Java, is bloated and quite difficult to use. Kovri is a fork of the C++ implementation i2pd.
You'll find a quite good answer in Kovri's FAQ
Why should I use Kovri instead of i2pd?
- Security: our focus is on securing our software; not rushing to get things done for the sake of having a release
- Quality: you're supporting efforts to ensure a quality codebase that will stand the test of time. This includes all aspects of code maintainability
- Monero: you will be supporting a crypto-currency that prides itself on privacy-preservation and anonymity while increasing both your privacy and anonymity
What are the biggest differences between Kovri and i2pd?
- We provide a Forum Funding System for features/development.
- We focus on creating a "secure by default", easily maintainable, more-likely-to-be-reviewed I2P router. This will come with the cost of dropping lesser-used features found in the other routers, but core functionality and an API will be fully intact. By creating a smaller, efficient, "bare-bones" router, we will provide developers and researchers more time for security auditing and more time to question the I2P design and specifications.
- We focus on implementing an intuitive, developer-friendly API for any application to connect to and use the I2P network; this includes Monero.
We provide both end-users and developers a quality assurance and development model in order to provide better software for everyone.
- We will implement alternative reseeding options so users can use Pluggable Transports instead of HTTPS for reseed.
- We will implement extended functionality (hidden mode + disabled inbound) to provide anonymity for those who live in countries with extreme conditions or those firewalled by carrier-grade NAT or DS-Lite.
- We will always create a welcome environment for collaboration.
- We will always listen to your feedback and do our best to improve Kovri!
Why did you fork from i2pd?
We forked for at least several reasons:
- We wanted a robust, secure, and viable C++ implementation of the I2P network; and i2pd was not delivering
- We wanted a positive community that encouraged collaboration for the betterment of the software; not negative, narcissist glory
- We wanted a lead developer who could lead; not someone who could ignore requests for responsible disclosure or tuck-tail-and-run when faced with collaborator conflict
What were the turning points that lead to forking from i2pd (and why are there two i2pd repositories: one on Bitbucket and one on GitHub)?
So began the drama of i2pd.
In early/mid 2015, one of the developers with push privileges on GitHub pushed a commit(s) that i2pd's first author did not like. Instead of working together to resolve the issue, said author took i2pd to Bitbucket, deleted all existing git history, and made himself sole 'contributor' of the software. He then vowed to never return to Irc2P.
These actions offended many in the I2P community, including the developers, and nearly ended the C++ project.
In the fall of 2015, along came anonimal who, not wanting to see everyone's work to go to waste, revived the project through contributions of their own and by reigning-in development. An open invitation for all remaining active developers to meet and discuss i2pd's future was then given. i2pd's first author never showed but the act of meeting apparently rustled i2pd's feathers to the point where he retaliated and began to work on GitHub again - but this time within an openssl branch (which turned out to be the Bitbucket repository) instead of the community-driven master branch.
Seeing that this sort of erratic behavior would only hurt the I2P network and the project as a whole, the remaining developers continued to have several important meetings and set the foundation for what is now Kovri.