About Diffdown
What is This?
Diffdown is a real-time collaborative Markdown editor/previewer built on AT Protocol (the tech that powers Bluesky and many other cool apps).
Diffdown is decentralized; it stores documents as records on the document creator's Personal Data Server (PDS), not on the Diffdown server or a cloud provider. Your data is yours, literally.
Features
- Decentralized storage on the document creator's AT Protocol PDS
- Auto-save
- Real-time collaborative editing (click Share in a document and send the link to your collaborators)
- View Markdown source with syntax highlighting
- Live document preview
- Comments (very hacky)
Technology
I wrote this app to learn more about AT Protocol and see if I (not a software engineer) could build a useable product with agentic engineering. I used the following:
- Backend: Go, SQLite (only for session management; Diffdown sotres no user data)
- Frontend: Plain 'ole HTML, CSS, and JavaScript; eventually I will move it to HTMX and Tailwind CSS
- Editor: ProseMirror with prosemirror-collab for real-time collaboration; Milkdown for Markdown parsing and rendering
- Authentication: ATProto OAuth (any PDS)
- Deployment and hosting: Fly.io
- LLM assistance: OpenCode with Claude Sonnet 4.6 and Minimax M2.7 models via OpenRouter
Status
As I said, I am not an engineer. My goal was to create something simple that worked, and I achieved that. But 95% of Diffdown was written by LLMs. I am not qualified to assess the security or robustness of the code and don't claim that it is production quality. I would like it to be, so contributions from real engineers are welcome!
Functionally, the app is alpha quality, at best. Expect bugs, flakiness, breaking changes, and limited features.
The good news is that any documents you create will be stored on your AT Proto PDS, so even if Diffdown goes away, you will still have your documents and comments.
Important: Because AT Proto does not support private records (yet), any documents you create will be visible to the world (not on diffdown.com, but with a PDS record viewer, see this example).
The app wasn't designed for mobile, so it is likely to be a very bad UX on small screens.
Also, it is running on a free fly.io instance, so it may be slow or unavailable at times.
Contact
Feedback is welcome! Create an issue, comment on the roadmap, or suggest an improvement in the Diffdown repository on Tangled.