Hey fellow FOSS folks!
For past few weeks I’ve been working on a passion project called Openwrite — a minimalist, open-source blogging platform focused on privacy, simplicity, and full user control. It’s built with Flask and released under the AGPL license. Inspired by platforms like WriteFreely, but with a few twists.
What it offers right now:
Multiple blogs per user (or single-blog mode, ideal for self-hosting)
- SQLite & MySQL support
- Image uploads (local or BunnyCDN)
- Markdown editor with live preview
- Custom blog themes (like a 6 now but I upload new regularly)
- Custom CSS per blog
- Gemini support – yes, gemini://openwrite.io works!
- No tracking, hashed IPs only for basic stats
- Dashboard with view statistics (OS, browser, timelines – all for free)
- ActivityPub federation (Follow, Like)
- RSS feeds, optional search engine indexing, and “Discover” section
Oh — and it supports importing posts from XML(wordpress) or CSV.
What makes it different?
I’m trying to build something:
- FOSS-first (no paid plans, no analytics spyware, no nonsense)
- Purely optional in hosting: you can run your own instance or use mine
- Built for people like us — nerds, tinkerers, writers, privacy lovers
Current status
Still in 0.x versions (currently at 0.10.4), but stable and usable. I’d love early feedback, contributors, ideas, testers — anything really. First pull request will make me cry tears of joy.
GitHub: https://github.com/openwriteio/openwrite
Site: https://openwrite.io/
Gemini mirror: gemini://openwrite.io
Thanks for reading — feel free to ask questions, roast my CSS, or suggest features. Let’s keep the open web alive 💜
Markworthy! I love gemini. Im testing it out.
Thank you!
Seems like the webpage is down right now.
It was, I’m sorry, I was migrating it to another server and something went wrong :) I will try to keep uptime best.
I’m trying to test the software out on localhost, but I get this message. Are there bugs, or am I setting it up with wrong ip/port/anything?

I think you need to change your .env file to make the domain match vhost you’re requesting with your browser. In this case, try changing the domain to 127.0.0.1:8081 in .env
I tried this, but it didn’t work either.

Can you show me your .env file? Cut off secret key and API keys. Feel free to send it on my email: admin@openwrite.io
Love the Gemini support! Will definitely check this out.
Thanks! Appreciate it
For anyone like me that immediately assumed Gemini meant Google’s AI model by the same name, fear not, it’s a protocol, not an AI model.
Yes, and they used the name first, not google. Arseholes.
Not the first time that’s happened: https://github.com/golang/go/issues/9
Uff…



