Go back

Starting Development on UwU File

Hey friends! I have been thinking about building a new file hosting service for a long time. A few months ago, I launched CipherDrop, a privacy-first file sharing platform. All files were encrypted and decrypted on the client side, with no server logs at all.

Unfortunately, it got blacklisted within two weeks by services like SpamHaus. Still, I believe secure and private file sharing is important. You never know who is watching. That is why I am starting UwU File.

Why the name "UwU file" though?

I already own the domain, and I thought it would be funny to give a cute name to something that is actually quite technical. That is the whole reason.

What is UwU File?

UwU File will not be just a website. It will be built on top of the IPFS network. This means files might stay accessible even after you try to delete them. But it also means anyone can access them from anywhere. UwU File will come in a few forms:

  • A simple web interface for uploading and downloading
  • A client app for managing files locally and across the network
  • A lightweight server anyone can run to host files

Every file will be encrypted using ChaCha20-Poly1305 with a key generated on the client side. The server never sees the key. To share a file, you just send someone the IPFS content ID and the encryption key. This way, the encrypted file is visible to anyone, but only someone with the key can actually open it.

Yes, one downside of IPFS is that files cannot be easily deleted. They might be cached or pinned elsewhere. But that is the tradeoff for making files accessible everywhere. Sharing is as simple as sending someone a CID and a key.

The UwU File Server

I know the name might sound silly, but I am serious about this project. The UwU File Server will let users upload and download files through a web interface. You can run it yourself to pin files on your own IPFS node. Or you can let other users upload temporary files to your instance, which then get shared across the network.

Downloads work the same way. The main UwU File website will let anyone fetch files from the IPFS network. If you upload something to your personal UwU server, someone else could download it from the official site. Or the other way around. You can even pin files yourself to help keep them alive. It is giving strong torrent vibes, but honestly, that is kind of the point.

Here is the big idea:

  • Using any UwU File Server, you can upload and download files from the network as long as you have the key
  • The official UwU File Server will allow users to upload files for up to two weeks and download any file shared in the network

What about the UwU File Client?

This is where it gets fun. The UwU File Client will include its own IPFS server. That means you can connect directly to the network without going through a web server. You can download any file on the network. You can also upload files that will be shared directly from your own device.

When you upload a file from the client, it will be available to anyone connected to IPFS. But your device needs to stay online until the person downloading finishes. It is kind of like peer-to-peer file sharing. No central server needed. Just you and the person you're sharing with.

Small sequence diagram showing a funny thing happening between two people having the client

I think that is pretty awesome.

How's Development Going?

I have already built a simple Go server that accepts files and pins them to the IPFS network. I also finished collecting 200 unique UwU faces to show on the website. This was clearly a top priority.

On a serious note, I will work on this slowly. I am starting a new job in about six weeks. Running a public UwU File instance will cost some money, so I will wait until my first paycheck.