Fork me on GitHub
This project is discontinued.
(All old downloads are available on Github.)

What is it?

Nightweb connects your Android device or PC to an anonymous, peer-to-peer social network. You can write posts and share photos, and your followers will retrieve them using BitTorrent running over the I2P anonymous network. It is still experimental and not well-tested, but the goal is to have uncensorable, untraceable communication and file-sharing on mobile devices and PCs.

Join the discussion on /r/Nightweb.

How does it work?

When you launch the app, it starts up I2P in the background and creates your user account, which is simply a key stored on your device. When you edit your profile or write a post, it saves them and begins sharing them in a torrent. Anyone following you will join the swarm to download your content. When you update anything, they are notified and grab whatever is new.

Read more about the Nightweb protocol or read the source code directly.

How does it avoid spam?

You only retrieve content from users you favorite, as well as users they favorite. This "friends-of-friends" model helps you find new content, but avoids the chaos of a completely free-for-all metadata system like Gnutella's. By sharing your metadata in a torrent, it also avoids BitTorrent's weakest link -- the need to have a central server to search and browse content.

How do I get followers?

For users to find you initially, you will need to give them a link to your page. To get your link, just go to your user page and hit the familiar Android share button (in the PC version, it's the flag icon). It looks like a normal HTTP link so it will be easier to share on the web, but when a user with Nightweb installed tries to tap it, they'll be able to open it in the app and retrieve your content anonymously. Here's what the links look like:

http://nightweb.net/#type=user&userhash=zc3bf63ca7p756p5lffnypyzbo53qtzb

Why Android?

Nightweb started as an Android-only app. While it now runs on PCs as well, the purpose of the Android version is to allow it to run on potentially any mobile device. This is because mainstream users are increasingly going that direction, so if we want to make anonymous networking a mainstream technology, we must go where the users are going. Android is the best mobile OS for this, because (1) it allows generic, long-running background services, (2) it is API-compatible with Java so I2P runs on it perfectly, and (3) it allows sideloading apps, so the app can always be distributed.

Why Clojure?

Clojure is more fun to code in than Java, which is an important quality for projects I am not paid to work on. The Android API and the I2P project are written in Java, but Clojure interops with them easily. Its biggest pragmatic benefit is that it simplifies concurrency. This isn't a big deal right now, since Clojure is primarily being used on the frontend, but it will pay big dividends later if I need to rewrite parts of the I2P backend.