Skip to content
All writing
Anon

Anon

All-hands meetings have a Q&A problem. Someone asks leadership about layoffs or strategy, and everyone knows who asked. Some teams use Google Forms or internal tools, but they require authentication or share your email anyway.

I built Anon to keep question content out of an application backend. It uses WebRTC for peer-to-peer communication and has an optional local AI to suggest a more neutral version of your question.

Updated October 2026: Anon now lives at anon.reb.run, with an EnoughUI interface and an optional Qwen model running locally in a browser worker. The original question stays available, and a suggestion is only used after you review and accept it.

Why It Matters

Town halls only work if people ask real questions, and they don't. Not because employees don't have questions, but because asking the wrong one can hurt you. After layoffs, or in orgs where culture is tense, the math changes, and getting an answer isn't worth being known as the person who asked.

Anonymous tools exist, but they route through servers. Someone controls that server, and even if policy says "we don't look," the capability is there, and policies bend.

WebRTC

Questions travel between participants over WebRTC and are kept in browser memory. Anon has no question database. Keep the host's tab open; each participant can still copy or save what they see.

The initial connection uses a public PeerJS signaling service to help browsers find each other. Question content travels over WebRTC data channels; it is not sent to that signaling service or an AI API. The application has no question database or analytics collector.

This is content privacy, not a guarantee that nobody can identify a participant. Hosting and signaling services can see connection metadata, and a direct WebRTC connection can expose network addresses to peers. The question itself may also reveal who wrote it.

Style Anonymization

Writing style is a fingerprint. If you're the only person who uses semicolons in Slack, your "anonymous" question isn't anonymous, and people pattern-match.

Anon can suggest minimal edits toward a neutral voice. The October 2026 version uses Qwen3-0.6B through Transformers.js 3.8.1, with q4f16 weights and WebGPU. It is an explicit opt-in: first use downloads about 580 MB of model artifacts, which compatible browsers can cache for later visits. Browsers without a supported GPU can still send the original question.

The model runs in a Web Worker, and rewriting does not upload your question. Your original draft remains available; a suggestion is used only after you review and accept it. Editing or sharing the draft invalidates pending work. Invalid or suspicious outputs are rejected so they cannot quietly replace your text.

Small models can change meaning. Synthetic English and Spanish tests caught dropped names and altered relationships. These checks cannot prove that a rewrite preserves every nuance or hides your identity. Review the meaning and identifying details before accepting.

That same on-device philosophy runs through Gratin and the small models I benchmarked for it. Gratin's native model work is a useful starting point, but a multi-gigabyte native model is not automatically a good browser download. Anon uses a smaller model for a narrower task, with the person making the final decision.

Trade-offs

No persistence means everyone needs to be in the room at the same time, no identity means you can't follow up on your own question without outing yourself, and no backend means no moderation. Questions appear as submitted.

This suits lightweight real-time Q&A. For asynchronous or moderated discussions, or situations requiring stronger anonymity guarantees, it isn't the right tool.

Try It

Create a room, share the link, ask questions. No signup, no accounts.

anon.reb.run