Cockroach is a protocol, not an app.
A public network for reporting and verifying real-world civic problems. Identity is a keypair on your phone. Truth is computed at the edges. Nobody owns this. Nobody can shut it down.
Or read the spec · whitepaper · how it works · FAQ
This site does not host the network. It releases the protocol and points you at the people who do.
Three taps. You're in.
No app store. No signup. No email. The protocol works in your browser.
Open the client
Your phone generates an ed25519 keypair the first time the page loads. That keypair is your identity. It never leaves your device. There is no account to create.
Open the client →Enable peer mode new in v0.2
In the Identity tab, flip the Enable peer mode switch. Your browser opens direct WebRTC connections to other peers and joins the mesh. No download. No install. Your phone is now a relay.
Peer mode exposes your IP to other peers — off by default, you opt in with a clear consent dialog.
Publish a report
In the Report tab, type what's broken. Pick tags — #road, #corruption, #scam, #protest, anything you want. Tap Sign and publish. Your event signs with your keypair and propagates through the mesh. Permanent. Verifiable. Yours.
Want to operate dedicated infrastructure too — a 24/7 public node with persistent storage? Download a relay binary ↓ or deploy one in three clicks. The three taps above are enough to participate in the network. Running a dedicated relay is for operators, not users.
Download a relay
Standalone executables. ~70 MB. Extract and run — no install.
After download: extract the archive, then run ./cockroach-relay-... from a terminal. Mac may show a Gatekeeper warning the first time — right-click → Open → Open, or see RUN.md for the one-liner. Windows: extract the .zip, double-click the .exe.
Prefer Docker, Render, Replit, Termux, or a bare VPS? Full options ↓. All release assets and SHA-256 checksums: releases page.
How this works
There is no cockroach.com. There is no company. There is no central server you log into. There is a specification, two reference implementations, and a set of operators — many of them, run by different people in different places — who chose to bring up nodes on the network.
You hold your identity
Your phone or browser generates an ed25519 keypair the first time you open a client. The secret key never leaves your device. No signup, no email, no profile server. You are your key.
Reports are signed events
A small JSON object — pubkey, timestamp, geohash, tags, description, signature. Around 300–500 bytes. Media is referenced by content-hash, never embedded.
Relays are dumb brokers
A relay verifies your signature, indexes the event, and serves it. It does not decide what is true. Anyone can run one — anyone can ignore one.
Truth is computed at the edges
No central verified=true. There is only a stream of signed verifications. Different clients aggregate them differently. That's the point.
Use a client
The client is a static web app. Multiple people host it at different URLs. Pick one you trust, or grab the source and host it yourself.
Every mirror runs identical code. Your keypair is created in your browser; switching mirrors does not change your identity (as long as you use the same browser profile or export the key).
Host your own client
The client is plain HTML, CSS, and JavaScript. No build step. Drop the client/ directory on any static host — GitHub Pages, Cloudflare Pages, Netlify, Vercel, an S3 bucket, an IPFS gateway, your own nginx box.
git clone https://github.com/hemant1996/thecockroachnetwork
cd thecockroachnetwork/client
# any static server:
bunx serve . # → http://localhost:3000
# or:
python3 -m http.server 8080
# or:
ipfs add -r . # → /ipfs/<cid>
Edit client/relays.json to ship a default seed list of relays you trust. Users can add, remove, or replace these in the Identity tab.
Run a relay
A relay is a single process. ~400 lines of TypeScript. SQLite for storage. Runs on a $5 VPS, a Raspberry Pi, a phone under Termux, or a hosted runtime you spin up in three clicks. There is no admin console — your job ends at keep the process running.
Coming in v0.2: every PWA install of the reference client will join a WebRTC peer-relay mesh automatically. Opening the client will make your device part of the network — no setup at all. The options below remain valid; v0.2 complements them, doesn't replace them.
Easiest path — download and double-click
Or deploy to a hosted runtime
On your phone — Termux (Android, on-device)
pkg install git curl
curl -fsSL https://bun.sh/install | bash
git clone https://github.com/hemant1996/thecockroachnetwork
cd thecockroachnetwork/relay
~/.bun/bin/bun install
~/.bun/bin/bun run server.ts
On a laptop — Docker
git clone https://github.com/hemant1996/thecockroachnetwork
cd thecockroachnetwork/relay
docker compose up -d
# → ws://localhost:7447
Behind Tor (for hostile environments)
# /etc/tor/torrc
HiddenServiceDir /var/lib/tor/cockroach-relay/
HiddenServicePort 80 127.0.0.1:7447
Full friction ladder including Fly.io, bare-VPS systemd, and TLS reverse-proxy notes: relay/RUN.md. Operator content-policy template: POLICY.example.md.
There is nothing to register with. The moment your relay accepts a connection and a client adds your URL, you are part of the network.
The five verbs
A report on its own is one person's claim. The network's value comes from others observing the same reality and signing what they see. A verification is a signed event referencing a report, carrying exactly one verdict:
That's the entire vocabulary. No global verified=true is stamped on a report. Different clients aggregate the stream of verifications differently — by locality, by trust list, by recency. The protocol surfaces the evidence; the consumer computes the conclusion.
Why locality, not vouching, not proof-of-personhood
If anyone can sign a verification, what stops one person from spinning up ten thousand keys?
Not a central registry of "real" users — that reintroduces the authority we just eliminated. Not proof-of-personhood — that hands the kill switch to whoever runs the verifier. Not vouching — that creates a social graph that becomes a kill list under a hostile regime.
The answer is locality. A key's verification of a report counts in proportion to that key's sustained signed presence in the area where the report was filed. Building influence costs being there over time, not money, not social capital, not external attestation. A sybil farm cannot cheaply pay that cost. A real crowd suddenly appearing in a place is recognized as a high-confidence signal by the burst-tolerance rule, not as suspected sybil activity.
The full reasoning, with the reference algorithm, is in SPEC §8 and WHITEPAPER §6.
This is a release, not a service
You will not find a "log in" button. There is no support email. There is no "upgrade your plan." There is a specification, two reference implementations, and a set of independent operators.
If you want to use the network, pick a client mirror you trust and use it. If you don't trust any of them, host your own. If a relay you depend on goes offline, your client tries the next one. If every relay you know is gone, run one yourself.
The artifacts of this release — the spec, the whitepaper, the client source, the relay source — are CC0 public domain. Mirrored to multiple Git hosts and pinned on IPFS so they can be retrieved even if any individual mirror goes down. See RELEASE.md for the locations.
FAQ
Is this an app?
No. It is a protocol. The thing on your phone is a client — one of several that can talk to the network. The thing accepting your reports is a relay — one of several run by different people. If any client or relay disappears, others continue.
Who runs this?
Whoever stood up a relay or hosts a client. Their names and contact details should be on each relay's /policy page and at the top of each client mirror. The protocol's authors do not operate the network.
Is there a token?
No. No issuance, no transfer, no chain. Reputation is a non-transferable score that clients compute from the event log; it has no monetary semantics and cannot be bought or sold.
How is this funded?
Mostly it isn't. The reference code is CC0. Each operator pays for their own server (usually $5/month or less). Anyone who wants to support the network does so by running a relay, hosting a client mirror, or contributing improvements — not by paying anyone.
Can I attach a photo?
Not directly in v0.1. For now: upload the photo to any host you trust (a free image host, your own server, IPFS), and paste the URL into the report description. v0.2 adds in-client upload to user-configurable IPFS pinning services.
What if I lose my phone?
You lose that identity and its reputation. In v0.1, the only backup is exporting your secret key (Identity tab) and storing it somewhere safe. v0.2 will add an encrypted seed-phrase backup flow. This is the same tradeoff Bitcoin makes: your keys, your responsibility.
Is this anonymous?
It is pseudonymous. A pubkey is not a real-world identity, but the relay you publish through sees your IP. For sensitive reporting use Tor or a VPN, and use a lower geohash precision (5 or below) to coarsen your location. The protocol can defend the content; you defend the channel.
Can the government shut this down?
They can take individual relays offline through whatever legal means exist in their jurisdiction. They cannot take the protocol offline — it is just JSON over WebSocket plus standard cryptography. As long as one relay anywhere in the world is online, the network continues. Most operators also publish their relay as a Tor hidden service, which is much harder to disrupt.
What's the difference from Twitter / Reddit / WhatsApp?
Three things. Signed — every report is cryptographically signed by its author and cannot be edited after publication. Durable — reports are stored on relays for at least 90 days by default, often longer; no algorithmic feed pushes them out of view. Owned by no one — there is no company that can be acquired, pressured, or shut down. Twitter is for engagement; this is for civic memory.
Can I use this for my city, my issue, my movement?
Yes. The protocol is CC0 public domain. Tag your reports with anything that fits — #mumbai, #chennai-water, #election-2027, #yourmovement. If you want a curated view for a community, run your own relay with a content policy that fits, or run a client mirror with a default tag filter. Nobody needs your permission to do any of this. Nobody can stop you either.
Why "Cockroach"?
Cockroaches survive everything. They cannot be stamped out by any single boot. They are, biologically, decentralized — no queen, no nest, no head of organization, just resilient distributed copies of the same blueprint. A protocol for surfacing civic problems that survives hostile actors, censorship, and the failure of any single participant is — in the metaphor — a cockroach.
Where do I report bugs in the protocol?
Open an issue on any mirror of the source repository, or publish a signed report on the network itself with the tag #cockroach-bug. The author of the spec follows that tag.
What this is not
- Not a token. No issuance, no transfer, no chain. Reputation is a non-transferable score recomputed by clients from the event log.
- Not a DAO. No treasury, no proposal, no on-chain vote.
- Not a company. Nobody is paid to maintain this. Nobody can be fired. Nobody can be subpoenaed for a user database, because there is no user database.
- Not a Nostr NIP. The wire shape is similar — JSON over WebSocket, signed events, dumb relays — because that shape works. Cockroach is its own protocol with its own event kinds, tag vocabulary, and threat model.
- Not a complaint queue. Whether a government acts on these reports is, literally, none of the protocol's business. The protocol's job is to make the observations exist, irrevocably, in public.