Java 8 · Swing · one file

A file network
with no server to trust.

Meshare finds and downloads files shared across a network of plain HTTP folders — no accounts, no database, no central authority. Every peer is just a text file listing other peers. Every download is checked against its own SHA-256 hash before it's kept.

Get started See how it works
How it works

Peers are just text files.

servers.txt servers.txt you files.txt links.txt
Searching means fetching files.txt from every server in your servers.txt, matching lines against your query, then pulling info/<hash>.json for anything that hits. Plain HTTP GET, every time — no custom protocol, no login. Enable sharing and your own Meshare answers those same requests for everyone else.
Features

Search, verify, share.

Concurrent search

Query every server in your list at once. Results stream into the table as they're found, capped at 200 per search.

Hash-verified downloads

Every file's SHA-256 is checked against its filename before it's accepted. Mismatches are flagged, not silently kept.

Random sampling

Spot-check huge servers by sampling a random subset of their file list instead of scanning it in order.

Links & magnets

Optionally search links.txt too. URLs become downloadable link entries; magnet links open straight in your torrent client.

Local caching

Already-downloaded files and metadata are read from disk instead of re-fetched, so repeat searches stay fast and cheap.

Become a server

Flip on sharing and an embedded HTTP server exposes your own files/ and info/ folders, read-only, to the rest of the mesh.

Folder layout

Everything is a plain file.

servers.txt — peers you search (you maintain this)
files.txt — your own shared file list (built automatically)
links.txt — your own shared links (optional)
public_key.txt — your public key (optional)
files/ — downloaded + shared binaries, named <hash>.<ext>
info/ — metadata JSON, named <hash>.json
log/ — per-download logs
tmp_links/ — cached links.txt from remote servers
Run it

One file, no dependencies.

# compile
javac -encoding UTF-8 Meshare.java

# run
java Meshare
  1. Add one or more server URLs to servers.txt, one per line.
  2. Launch Meshare, type a search term — or leave it blank to list everything — and press Search.
  3. Select results and download them, or turn on sharing to let others search you back.
Trust and safety

Meshare checks that downloaded bytes match the SHA-256 in the filename — nothing more. It does not verify who published a file. That protects against corruption in transit, not against a malicious server publishing harmful content under a valid hash. Only add servers you trust, and treat descriptions, public keys, and other metadata as unverified, server-supplied text.