Blackfros: a P2P shop network that doesn't trust anyone with your IP
Most "anonymous marketplace" projects still lean on a central server somewhere — a domain, a company, a single point of failure and surveillance. Blackfros doesn't. It's a peer-to-peer network of shops where every seller is their own server, and there's no central authority to shut down, subpoena, or trust.
The core idea
Blackfros is a Python client/server pair:
-
server.pyruns a shop. It handles commands likeADD,REMOVE,BUY,CHAT, and stores its catalog as plain Markdown on disk. -
client.pyis a terminal UI (built with Textual) that connects to a shop and lets you browse, buy, or chat.
Instead of exposing that server on the open internet, it's published as a Tor hidden service. No public IP, no domain, no VPN — just a .onion address that Tor resolves without ever revealing where the machine actually is.
Every node is its own island
Here's the part that trips people up at first (it tripped me up too): there is no single "Blackfros network." Every .onion address is a completely separate, isolated shop with its own seller and its own buyers.
Each .onion node is an independent shop network with its own seller and buyers — nodes don't share data or see each other. A single person can hold different roles across networks: the owner of Node A (Store A) can also be a buyer on Node C, while a buyer on Node A can be the seller running Node C.
Concretely:
- If you run
server.py, you're the seller on your node. Everyone who connects to your.onionsees your shop and buys from you. - If someone shares their
.onionwith you, you connect to it as a buyer usingclient.py— you don't bring your own shop with you. You're just a customer there. - Nothing links these networks together. Your shop's data lives only on your machine, in the folder next to your own copy of
server.py.
That last point matters more than it sounds: two people running the same copy of the project on the same machine would actually collide, because the shop data folder is tied to the script's location, not to the port or the instance. But two different people, on two different machines, never touch each other's data — even if they're buying and selling from each other constantly.
Wearing two hats
Because every node is independent, the same person can be a seller on one node and a buyer on ten others, simultaneously, with no overlap. Run your own server.py to sell, and open as many client.py sessions as you want to shop around on other people's nodes. Nobody sees your inventory unless they connect to your address specifically.
Where it's headed
The project is still pre-release (currently working through v3.0.0-pre.x), with the terminal UI being migrated to Textual and a handful of security/UX items being closed out before a wider feedback round. Contributors run it straight from source — no packaging yet, just clone and go, including testing it over Tor from a Tails USB.
If the idea of a shop network with no central server, no IP leaks, and no single point of failure sounds interesting, the code is on GitLab — feedback and testers welcome.

Top comments (0)